Skip to main content

romm_cli/client/
tasks.rs

1use serde_json::Value;
2
3use super::RommClient;
4
5impl RommClient {
6    /// Triggers a server-side task by name (e.g., `"scan_library"`).
7    pub async fn run_task(&self, task_name: &str, kwargs: Option<Value>) -> anyhow::Result<Value> {
8        let path = format!("/api/tasks/run/{}", task_name);
9        self.request_json("POST", &path, &[], kwargs).await
10    }
11
12    /// Polls the status of a running task by its ID.
13    pub async fn get_task_status(&self, task_id: &str) -> anyhow::Result<Value> {
14        let path = format!("/api/tasks/{}", task_id);
15        self.request_json("GET", &path, &[], None).await
16    }
17
18    /// Enqueues all runnable tasks on the server.
19    pub async fn run_all_tasks(&self) -> anyhow::Result<Value> {
20        self.request_json("POST", "/api/tasks/run", &[], None).await
21    }
22
23    /// Lists all recent and active tasks.
24    pub async fn list_tasks(&self) -> anyhow::Result<Value> {
25        self.request_json("GET", "/api/tasks", &[], None).await
26    }
27
28    /// Returns the current status of the task queue.
29    pub async fn get_tasks_queue_status(&self) -> anyhow::Result<Value> {
30        self.request_json("GET", "/api/tasks/status", &[], None)
31            .await
32    }
33}