Skip to main content

babelforce_manager_sdk/resources/
schedules.rs

1use crate::error::{map_task_schedule_err as map_err, ManagerError};
2use crate::gen::task_schedule::apis::configuration::Configuration;
3use crate::gen::task_schedule::apis::schedule_manager_api as api;
4use crate::gen::task_schedule::models;
5use crate::retry::{with_retry, RetryPolicy};
6use crate::token::SharedCfg;
7
8/// Task schedules (cron-style task submission) — `/api/v3/schedules`.
9pub struct TaskSchedulesResource {
10    pub(crate) cfg: SharedCfg<Configuration>,
11    pub(crate) retry: RetryPolicy,
12}
13
14impl TaskSchedulesResource {
15    /// List the task schedules (one page).
16    pub async fn list(&self) -> Result<models::TaskScheduleList, ManagerError> {
17        let cfg = self.cfg.get().await?;
18        let cfg = cfg.as_ref();
19        with_retry(&self.retry, true, || {
20            api::get_task_schedules(cfg, None, None)
21        })
22        .await
23        .map_err(map_err)
24    }
25
26    /// Create (submit) a task schedule.
27    pub async fn create(&self, body: models::SubmitTaskSchedule) -> Result<(), ManagerError> {
28        let cfg = self.cfg.get().await?;
29        let cfg = cfg.as_ref();
30        with_retry(&self.retry, false, || {
31            api::submit_task_schedule(cfg, body.clone())
32        })
33        .await
34        .map_err(map_err)
35    }
36
37    /// Get a task schedule by name.
38    pub async fn get(&self, name: &str) -> Result<models::TaskSchedule, ManagerError> {
39        let cfg = self.cfg.get().await?;
40        let cfg = cfg.as_ref();
41        with_retry(&self.retry, true, || api::get_task_schedule(cfg, name))
42            .await
43            .map_err(map_err)
44    }
45
46    /// Delete a task schedule by name.
47    pub async fn delete(&self, name: &str) -> Result<(), ManagerError> {
48        let cfg = self.cfg.get().await?;
49        let cfg = cfg.as_ref();
50        with_retry(&self.retry, false, || api::delete_schedule_task(cfg, name))
51            .await
52            .map_err(map_err)
53    }
54}