babelforce_manager_sdk/resources/
triggers.rs1use crate::error::{map_manager_err, ManagerError};
2use crate::gen::manager::apis::configuration::Configuration;
3use crate::gen::manager::apis::{manager_api, trigger_api as api};
4use crate::gen::manager::models;
5use crate::http::collect_all;
6use crate::retry::{with_retry, RetryPolicy};
7use crate::token::SharedCfg;
8
9pub struct TriggersResource {
11 pub(crate) cfg: SharedCfg<Configuration>,
12 pub(crate) retry: RetryPolicy,
13}
14
15impl TriggersResource {
16 pub async fn list_all(&self) -> Result<Vec<models::Trigger>, ManagerError> {
18 let cfg = self.cfg.get().await?;
19 let cfg = cfg.as_ref();
20 collect_all(&self.retry, map_manager_err, |page| async move {
21 let r = api::list_triggers(cfg, Some(page), None).await?;
22 Ok((
23 r.items,
24 r.pagination.pages.unwrap_or(1),
25 r.pagination.current.unwrap_or(1),
26 ))
27 })
28 .await
29 }
30
31 pub async fn create(
33 &self,
34 body: models::RestCreateTrigger,
35 ) -> Result<models::TriggerItemResponse, ManagerError> {
36 let cfg = self.cfg.get().await?;
37 let cfg = cfg.as_ref();
38 with_retry(&self.retry, false, || {
39 api::create_trigger(cfg, body.clone())
40 })
41 .await
42 .map_err(map_manager_err)
43 }
44
45 pub async fn get(&self, id: &str) -> Result<models::TriggerItemResponse, ManagerError> {
47 let cfg = self.cfg.get().await?;
48 let cfg = cfg.as_ref();
49 with_retry(&self.retry, true, || api::get_trigger(cfg, id))
50 .await
51 .map_err(map_manager_err)
52 }
53
54 pub async fn update(
56 &self,
57 id: &str,
58 body: models::RestUpdateTrigger,
59 ) -> Result<models::TriggerItemResponse, ManagerError> {
60 let cfg = self.cfg.get().await?;
61 let cfg = cfg.as_ref();
62 with_retry(&self.retry, false, || {
63 api::update_trigger(cfg, id, body.clone())
64 })
65 .await
66 .map_err(map_manager_err)
67 }
68
69 pub async fn delete(&self, id: &str) -> Result<(), ManagerError> {
71 let cfg = self.cfg.get().await?;
72 let cfg = cfg.as_ref();
73 with_retry(&self.retry, false, || api::delete_trigger(cfg, id))
74 .await
75 .map_err(map_manager_err)?;
76 Ok(())
77 }
78
79 pub async fn clone(&self, id: &str) -> Result<models::TriggerItemResponse, ManagerError> {
81 let cfg = self.cfg.get().await?;
82 let cfg = cfg.as_ref();
83 with_retry(&self.retry, false, || api::clone_trigger(cfg, id))
84 .await
85 .map_err(map_manager_err)
86 }
87
88 pub async fn test(
90 &self,
91 body: models::TestTriggersRequest,
92 test_mode: bool,
93 ) -> Result<models::TestTriggersResponse, ManagerError> {
94 let cfg = self.cfg.get().await?;
95 let cfg = cfg.as_ref();
96 with_retry(&self.retry, false, || {
97 manager_api::test_triggers(cfg, test_mode, Some(body.clone()))
98 })
99 .await
100 .map_err(map_manager_err)
101 }
102
103 pub async fn bulk_action(
105 &self,
106 action: &str,
107 ids: Vec<String>,
108 ) -> Result<models::BulkActionResponse, ManagerError> {
109 let cfg = self.cfg.get().await?;
110 let cfg = cfg.as_ref();
111 let ids = ids
112 .iter()
113 .map(|id| {
114 uuid::Uuid::parse_str(id)
115 .map_err(|e| ManagerError::InvalidArgument(format!("id {id}: {e}")))
116 })
117 .collect::<Result<Vec<_>, _>>()?;
118 let body = models::BulkIdsRequest { ids };
119 with_retry(&self.retry, false, || {
120 api::bulk_trigger_action(cfg, action, body.clone())
121 })
122 .await
123 .map_err(map_manager_err)
124 }
125
126 pub async fn expressions(&self) -> Result<models::ObjectListResponse, ManagerError> {
128 let cfg = self.cfg.get().await?;
129 let cfg = cfg.as_ref();
130 with_retry(&self.retry, true, || api::list_trigger_expressions(cfg))
131 .await
132 .map_err(map_manager_err)
133 }
134
135 pub async fn operators(&self) -> Result<models::ObjectListResponse, ManagerError> {
137 let cfg = self.cfg.get().await?;
138 let cfg = cfg.as_ref();
139 with_retry(&self.retry, true, || api::list_trigger_operators(cfg))
140 .await
141 .map_err(map_manager_err)
142 }
143
144 pub async fn conditions(
146 &self,
147 id: &str,
148 ) -> Result<models::TriggerConditionListResponse, ManagerError> {
149 let cfg = self.cfg.get().await?;
150 let cfg = cfg.as_ref();
151 with_retry(&self.retry, true, || api::list_trigger_conditions(cfg, id))
152 .await
153 .map_err(map_manager_err)
154 }
155
156 pub async fn set_conditions(
158 &self,
159 id: &str,
160 body: models::TriggerConditionsRequest,
161 ) -> Result<models::TriggerItemResponse, ManagerError> {
162 let cfg = self.cfg.get().await?;
163 let cfg = cfg.as_ref();
164 with_retry(&self.retry, false, || {
165 api::set_trigger_conditions(cfg, id, body.clone())
166 })
167 .await
168 .map_err(map_manager_err)
169 }
170
171 pub async fn uses(&self, id: &str) -> Result<models::TriggerUsesResponse, ManagerError> {
173 let cfg = self.cfg.get().await?;
174 let cfg = cfg.as_ref();
175 with_retry(&self.retry, true, || api::get_trigger_uses(cfg, id))
176 .await
177 .map_err(map_manager_err)
178 }
179}