babelforce_manager_sdk/resources/
calendars.rs1use crate::error::{map_manager_err, ManagerError};
2use crate::gen::manager::apis::configuration::Configuration;
3use crate::gen::manager::apis::{calendar_api as api, manager_api};
4use crate::gen::manager::models;
5use crate::http::collect_all;
6use crate::retry::{with_retry, RetryPolicy};
7use crate::token::SharedCfg;
8
9pub struct CalendarsResource {
11 pub(crate) cfg: SharedCfg<Configuration>,
12 pub(crate) retry: RetryPolicy,
13}
14
15impl CalendarsResource {
16 pub async fn list_all(&self) -> Result<Vec<models::Calendar>, 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_calendars(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::RestCreateCalendar,
31 ) -> Result<models::CalendarItemResponse, ManagerError> {
32 let cfg = self.cfg.get().await?;
33 let cfg = cfg.as_ref();
34 with_retry(&self.retry, false, || {
35 api::create_calendar(cfg, body.clone())
36 })
37 .await
38 .map_err(map_manager_err)
39 }
40
41 pub async fn get(&self, id: &str) -> Result<models::CalendarItemResponse, ManagerError> {
43 let cfg = self.cfg.get().await?;
44 let cfg = cfg.as_ref();
45 with_retry(&self.retry, true, || api::get_calendar(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::RestUpdateCalendar,
55 ) -> Result<models::CalendarItemResponse, ManagerError> {
56 let cfg = self.cfg.get().await?;
57 let cfg = cfg.as_ref();
58 with_retry(&self.retry, false, || {
59 api::update_calendar(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_calendar(cfg, id))
70 .await
71 .map_err(map_manager_err)?;
72 Ok(())
73 }
74
75 pub async fn get_dates(
77 &self,
78 id: &str,
79 ) -> Result<models::CalendarDateListResponse, ManagerError> {
80 let cfg = self.cfg.get().await?;
81 let cfg = cfg.as_ref();
82 with_retry(&self.retry, true, || {
83 manager_api::get_calender_dates(cfg, id)
84 })
85 .await
86 .map_err(map_manager_err)
87 }
88
89 pub async fn add_date(
91 &self,
92 id: &str,
93 body: models::CalendarDateBody,
94 ) -> Result<models::CalendarDateItemResponse, ManagerError> {
95 let cfg = self.cfg.get().await?;
96 let cfg = cfg.as_ref();
97 with_retry(&self.retry, false, || {
98 manager_api::add_calendar_date(cfg, id, body.clone())
99 })
100 .await
101 .map_err(map_manager_err)
102 }
103
104 pub async fn get_date(
106 &self,
107 id: &str,
108 date_id: &str,
109 ) -> Result<models::CalendarDateItemResponse, ManagerError> {
110 let cfg = self.cfg.get().await?;
111 let cfg = cfg.as_ref();
112 with_retry(&self.retry, true, || {
113 api::get_calendar_date(cfg, id, date_id)
114 })
115 .await
116 .map_err(map_manager_err)
117 }
118
119 pub async fn update_date(
121 &self,
122 id: &str,
123 date_id: &str,
124 body: models::CalendarDateBody,
125 ) -> Result<models::CalendarDateItemResponse, ManagerError> {
126 let cfg = self.cfg.get().await?;
127 let cfg = cfg.as_ref();
128 with_retry(&self.retry, false, || {
129 api::update_calendar_date(cfg, id, date_id, body.clone())
130 })
131 .await
132 .map_err(map_manager_err)
133 }
134
135 pub async fn remove_date(
137 &self,
138 id: &str,
139 date_id: &str,
140 ) -> Result<models::DefaultV2MessageResponse, ManagerError> {
141 let cfg = self.cfg.get().await?;
142 let cfg = cfg.as_ref();
143 with_retry(&self.retry, false, || {
144 api::remove_calendar_date(cfg, id, date_id)
145 })
146 .await
147 .map_err(map_manager_err)
148 }
149
150 pub async fn test_date(
152 &self,
153 date: Option<&str>,
154 ) -> Result<models::GenericItemResponse, ManagerError> {
155 let cfg = self.cfg.get().await?;
156 let cfg = cfg.as_ref();
157 with_retry(&self.retry, true, || api::test_calendar_date(cfg, date))
158 .await
159 .map_err(map_manager_err)
160 }
161
162 pub async fn bulk_delete(
164 &self,
165 ids: Vec<String>,
166 ) -> Result<models::DefaultV2MessageResponse, ManagerError> {
167 let cfg = self.cfg.get().await?;
168 let cfg = cfg.as_ref();
169 let ids = ids
170 .iter()
171 .map(|id| {
172 uuid::Uuid::parse_str(id)
173 .map_err(|e| ManagerError::InvalidArgument(format!("ids: {e}")))
174 })
175 .collect::<Result<Vec<_>, _>>()?;
176 let body = models::BulkIdsRequest { ids };
177 with_retry(&self.retry, false, || {
178 api::bulk_delete_calendars(cfg, body.clone())
179 })
180 .await
181 .map_err(map_manager_err)
182 }
183
184 pub async fn bulk_update(
186 &self,
187 body: models::CalendarBulkUpdateRequest,
188 ) -> Result<models::CalendarListResponse, ManagerError> {
189 let cfg = self.cfg.get().await?;
190 let cfg = cfg.as_ref();
191 with_retry(&self.retry, false, || {
192 api::bulk_update_calendars(cfg, body.clone())
193 })
194 .await
195 .map_err(map_manager_err)
196 }
197}