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((r.items, r.pagination.pages, r.pagination.current))
23 })
24 .await
25 }
26
27 pub async fn create(
29 &self,
30 body: models::RestCreateTrigger,
31 ) -> Result<models::TriggerItemResponse, ManagerError> {
32 let cfg = self.cfg.get().await?;
33 let cfg = cfg.as_ref();
34 with_retry(&self.retry, false, || {
35 api::create_trigger(cfg, body.clone())
36 })
37 .await
38 .map_err(map_manager_err)
39 }
40
41 pub async fn get(&self, id: &str) -> Result<models::TriggerItemResponse, ManagerError> {
43 let cfg = self.cfg.get().await?;
44 let cfg = cfg.as_ref();
45 with_retry(&self.retry, true, || api::get_trigger(cfg, id))
46 .await
47 .map_err(map_manager_err)
48 }
49
50 pub async fn update(
52 &self,
53 id: &str,
54 body: models::RestUpdateTrigger,
55 ) -> Result<models::TriggerItemResponse, ManagerError> {
56 let cfg = self.cfg.get().await?;
57 let cfg = cfg.as_ref();
58 with_retry(&self.retry, false, || {
59 api::update_trigger(cfg, id, body.clone())
60 })
61 .await
62 .map_err(map_manager_err)
63 }
64
65 pub async fn delete(&self, id: &str) -> Result<(), ManagerError> {
67 let cfg = self.cfg.get().await?;
68 let cfg = cfg.as_ref();
69 with_retry(&self.retry, false, || api::delete_trigger(cfg, id))
70 .await
71 .map_err(map_manager_err)?;
72 Ok(())
73 }
74
75 pub async fn clone(&self, id: &str) -> Result<models::TriggerItemResponse, ManagerError> {
77 let cfg = self.cfg.get().await?;
78 let cfg = cfg.as_ref();
79 with_retry(&self.retry, false, || api::clone_trigger(cfg, id))
80 .await
81 .map_err(map_manager_err)
82 }
83
84 pub async fn test(
86 &self,
87 body: models::TestTriggersRequest,
88 test_mode: bool,
89 ) -> Result<models::TestTriggersResponse, ManagerError> {
90 let cfg = self.cfg.get().await?;
91 let cfg = cfg.as_ref();
92 with_retry(&self.retry, false, || {
93 manager_api::test_triggers(cfg, test_mode, Some(body.clone()))
94 })
95 .await
96 .map_err(map_manager_err)
97 }
98
99 pub async fn bulk_action(
101 &self,
102 action: &str,
103 ids: Vec<String>,
104 ) -> Result<models::BulkActionResponse, ManagerError> {
105 let cfg = self.cfg.get().await?;
106 let cfg = cfg.as_ref();
107 let ids = ids
108 .iter()
109 .map(|id| {
110 uuid::Uuid::parse_str(id)
111 .map_err(|e| ManagerError::InvalidArgument(format!("id {id}: {e}")))
112 })
113 .collect::<Result<Vec<_>, _>>()?;
114 let body = models::BulkIdsRequest { ids };
115 with_retry(&self.retry, false, || {
116 api::bulk_trigger_action(cfg, action, body.clone())
117 })
118 .await
119 .map_err(map_manager_err)
120 }
121
122 pub async fn expressions(&self) -> Result<models::ObjectListResponse, ManagerError> {
124 let cfg = self.cfg.get().await?;
125 let cfg = cfg.as_ref();
126 with_retry(&self.retry, true, || api::list_trigger_expressions(cfg))
127 .await
128 .map_err(map_manager_err)
129 }
130
131 pub async fn operators(&self) -> Result<models::ObjectListResponse, ManagerError> {
133 let cfg = self.cfg.get().await?;
134 let cfg = cfg.as_ref();
135 with_retry(&self.retry, true, || api::list_trigger_operators(cfg))
136 .await
137 .map_err(map_manager_err)
138 }
139
140 pub async fn conditions(
142 &self,
143 id: &str,
144 ) -> Result<models::TriggerConditionListResponse, ManagerError> {
145 let cfg = self.cfg.get().await?;
146 let cfg = cfg.as_ref();
147 with_retry(&self.retry, true, || api::list_trigger_conditions(cfg, id))
148 .await
149 .map_err(map_manager_err)
150 }
151
152 pub async fn set_conditions(
154 &self,
155 id: &str,
156 body: models::TriggerConditionsRequest,
157 ) -> Result<models::TriggerItemResponse, ManagerError> {
158 let cfg = self.cfg.get().await?;
159 let cfg = cfg.as_ref();
160 with_retry(&self.retry, false, || {
161 api::set_trigger_conditions(cfg, id, body.clone())
162 })
163 .await
164 .map_err(map_manager_err)
165 }
166
167 pub async fn uses(&self, id: &str) -> Result<models::TriggerUsesResponse, ManagerError> {
169 let cfg = self.cfg.get().await?;
170 let cfg = cfg.as_ref();
171 with_retry(&self.retry, true, || api::get_trigger_uses(cfg, id))
172 .await
173 .map_err(map_manager_err)
174 }
175}