uptrakit_openapi_client/
scheduler.rs1use crate::Result;
2use crate::UptrakitClient;
3use crate::types_impl::scheduler::{
4 ScheduledTaskResponse, TriggerScheduledTaskResponse, UpdateScheduledTaskRequest,
5};
6use uuid::Uuid;
7
8impl UptrakitClient {
9 pub async fn list_scheduled_tasks(&self) -> Result<Vec<ScheduledTaskResponse>> {
11 self.get(crate::paths::scheduler::BASE).await
12 }
13
14 pub async fn get_scheduled_task(&self, id: &Uuid) -> Result<ScheduledTaskResponse> {
16 self.get(&crate::paths::scheduler::by_id(id)).await
17 }
18
19 pub async fn update_scheduled_task(
21 &self,
22 id: &Uuid,
23 req: &UpdateScheduledTaskRequest,
24 ) -> Result<ScheduledTaskResponse> {
25 self.put_json(&crate::paths::scheduler::by_id(id), req)
26 .await
27 }
28
29 pub async fn trigger_scheduled_task(&self, id: &Uuid) -> Result<TriggerScheduledTaskResponse> {
31 self.post_empty(&crate::paths::scheduler::trigger(id)).await
32 }
33}
34
35#[cfg(test)]
36mod tests {
37 use crate::types_impl::scheduler::UpdateScheduledTaskRequest;
38
39 #[test]
40 fn update_scheduled_task_request_serialization() {
41 let req = UpdateScheduledTaskRequest {
42 interval_seconds: Some(21600),
43 jitter_seconds: Some(300),
44 enabled: Some(true),
45 task_config: None,
46 };
47 let json = serde_json::to_value(&req).expect("serialize");
48 assert_eq!(json["interval_seconds"], 21600);
49 assert_eq!(json["jitter_seconds"], 300);
50 assert_eq!(json["enabled"], true);
51 }
52
53 #[test]
54 fn update_scheduled_task_request_with_config() {
55 let req = UpdateScheduledTaskRequest {
56 interval_seconds: None,
57 jitter_seconds: None,
58 enabled: None,
59 task_config: Some(serde_json::json!({"key": "value"})),
60 };
61 let json = serde_json::to_value(&req).expect("serialize");
62 assert_eq!(json["task_config"]["key"], "value");
63 }
64}