Skip to main content

openlark_workflow/v2/task/
mod.rs

1pub mod add_dependencies;
2pub mod add_members;
3pub mod add_reminders;
4pub mod add_tasklist;
5pub mod complete;
6pub mod create;
7pub mod delete;
8pub mod get;
9pub mod list;
10pub mod models;
11pub mod patch;
12pub mod remove_dependencies;
13pub mod remove_members;
14pub mod remove_reminders;
15pub mod remove_tasklist;
16pub mod subtask;
17pub mod tasklists;
18pub mod uncomplete;
19pub mod update;
20
21use openlark_core::config::Config;
22use std::sync::Arc;
23
24/// Task:任务资源(v2)
25#[derive(Clone)]
26pub struct Task {
27    config: Arc<Config>,
28}
29
30impl Task {
31    pub fn new(config: Arc<Config>) -> Self {
32        Self { config }
33    }
34
35    pub fn create(&self) -> create::CreateTaskRequest {
36        create::CreateTaskRequest::new(self.config.clone())
37    }
38
39    pub fn update(&self, task_guid: impl Into<String>) -> update::UpdateTaskRequest {
40        update::UpdateTaskRequest::new(self.config.clone(), task_guid.into())
41    }
42
43    pub fn delete(&self, task_guid: impl Into<String>) -> delete::DeleteTaskRequest {
44        delete::DeleteTaskRequest::new(self.config.clone(), task_guid.into())
45    }
46
47    pub fn get(&self, task_guid: impl Into<String>) -> get::GetTaskRequest {
48        get::GetTaskRequest::new(self.config.clone(), task_guid.into())
49    }
50
51    pub fn list(&self) -> list::ListTasksRequest {
52        list::ListTasksRequest::new(self.config.clone())
53    }
54
55    pub fn complete(&self, task_guid: impl Into<String>) -> complete::CompleteTaskRequest {
56        complete::CompleteTaskRequest::new(self.config.clone(), task_guid.into())
57    }
58
59    pub fn uncomplete(&self, task_guid: impl Into<String>) -> uncomplete::UncompleteTaskRequest {
60        uncomplete::UncompleteTaskRequest::new(self.config.clone(), task_guid.into())
61    }
62
63    /// 获取子任务资源
64    pub fn subtask(&self, task_guid: impl Into<String>) -> subtask::Subtask {
65        subtask::Subtask::new(self.config.clone(), task_guid.into())
66    }
67
68    /// 任务加入清单
69    pub fn add_tasklist(&self, task_guid: impl Into<String>) -> add_tasklist::AddTasklistRequest {
70        add_tasklist::AddTasklistRequest::new(self.config.clone(), task_guid.into())
71    }
72
73    /// 任务移出清单
74    pub fn remove_tasklist(
75        &self,
76        task_guid: impl Into<String>,
77    ) -> remove_tasklist::RemoveTasklistRequest {
78        remove_tasklist::RemoveTasklistRequest::new(self.config.clone(), task_guid.into())
79    }
80
81    /// 列取任务所在清单
82    pub fn tasklists(&self, task_guid: impl Into<String>) -> tasklists::GetTaskTasklistsRequest {
83        tasklists::GetTaskTasklistsRequest::new(self.config.clone(), task_guid.into())
84    }
85
86    /// 添加任务成员
87    pub fn add_members(&self, task_guid: impl Into<String>) -> add_members::AddMembersRequest {
88        add_members::AddMembersRequest::new(self.config.clone(), task_guid.into())
89    }
90
91    /// 移除任务成员
92    pub fn remove_members(
93        &self,
94        task_guid: impl Into<String>,
95    ) -> remove_members::RemoveMembersRequest {
96        remove_members::RemoveMembersRequest::new(self.config.clone(), task_guid.into())
97    }
98
99    /// 添加任务提醒
100    pub fn add_reminders(
101        &self,
102        task_guid: impl Into<String>,
103    ) -> add_reminders::AddRemindersRequest {
104        add_reminders::AddRemindersRequest::new(self.config.clone(), task_guid.into())
105    }
106
107    /// 移除任务提醒
108    pub fn remove_reminders(
109        &self,
110        task_guid: impl Into<String>,
111    ) -> remove_reminders::RemoveRemindersRequest {
112        remove_reminders::RemoveRemindersRequest::new(self.config.clone(), task_guid.into())
113    }
114
115    /// 添加任务依赖
116    pub fn add_dependencies(
117        &self,
118        task_guid: impl Into<String>,
119    ) -> add_dependencies::AddDependenciesRequest {
120        add_dependencies::AddDependenciesRequest::new(self.config.clone(), task_guid.into())
121    }
122
123    /// 移除任务依赖
124    pub fn remove_dependencies(
125        &self,
126        task_guid: impl Into<String>,
127    ) -> remove_dependencies::RemoveDependenciesRequest {
128        remove_dependencies::RemoveDependenciesRequest::new(self.config.clone(), task_guid.into())
129    }
130}
131
132// 重新导出请求类型
133pub use add_dependencies::AddDependenciesRequest;
134pub use add_members::AddMembersRequest;
135pub use add_reminders::AddRemindersRequest;
136pub use add_tasklist::AddTasklistRequest;
137pub use complete::CompleteTaskRequest;
138pub use create::CreateTaskRequest;
139pub use delete::DeleteTaskRequest;
140pub use get::GetTaskRequest;
141pub use list::ListTasksRequest;
142pub use patch::UpdateTaskRequest;
143pub use remove_dependencies::RemoveDependenciesRequest;
144pub use remove_members::RemoveMembersRequest;
145pub use remove_reminders::RemoveRemindersRequest;
146pub use remove_tasklist::RemoveTasklistRequest;
147pub use tasklists::GetTaskTasklistsRequest;
148pub use uncomplete::UncompleteTaskRequest;
149
150// 重新导出响应类型
151pub use add_dependencies::{AddDependenciesResponse, TaskDependency};
152pub use add_members::{AddMembersResponse, TaskMember};
153pub use add_reminders::{AddRemindersResponse, TaskReminder};
154pub use add_tasklist::{AddTasklistBody, AddTasklistResponse};
155pub use models::{
156    CompleteTaskResponse, CreateTaskBody, CreateTaskResponse, DeleteTaskResponse, GetTaskResponse,
157    ListTasksResponse, TaskItem, UncompleteTaskResponse, UpdateTaskBody, UpdateTaskResponse,
158};
159pub use remove_dependencies::{RemoveDependenciesBody, RemoveDependenciesResponse};
160pub use remove_members::{RemoveMembersBody, RemoveMembersResponse};
161pub use remove_reminders::{RemoveRemindersBody, RemoveRemindersResponse};
162pub use remove_tasklist::{RemoveTasklistBody, RemoveTasklistResponse};
163pub use tasklists::{GetTaskTasklistsResponse, TaskTasklistItem};
164
165#[cfg(test)]
166#[allow(unused_variables)]
167#[allow(unused_imports)]
168mod tests {
169    use super::*;
170    use std::sync::Arc;
171
172    fn create_test_config() -> Arc<Config> {
173        Arc::new(
174            Config::builder()
175                .app_id("test_app")
176                .app_secret("test_secret")
177                .build(),
178        )
179    }
180
181    #[test]
182    fn test_task_v2_new() {
183        let config = create_test_config();
184        let _ = Task::new(config);
185    }
186
187    #[test]
188    fn test_task_v2_create() {
189        let config = create_test_config();
190        let task = Task::new(config);
191        let _ = task.create();
192    }
193
194    #[test]
195    fn test_task_v2_update() {
196        let config = create_test_config();
197        let task = Task::new(config);
198        let _ = task.update("task_guid_123");
199    }
200
201    #[test]
202    fn test_task_v2_delete() {
203        let config = create_test_config();
204        let task = Task::new(config);
205        let _ = task.delete("task_guid_123");
206    }
207
208    #[test]
209    fn test_task_v2_get() {
210        let config = create_test_config();
211        let task = Task::new(config);
212        let _ = task.get("task_guid_123");
213    }
214
215    #[test]
216    fn test_task_v2_list() {
217        let config = create_test_config();
218        let task = Task::new(config);
219        let _ = task.list();
220    }
221
222    #[test]
223    fn test_task_v2_complete() {
224        let config = create_test_config();
225        let task = Task::new(config);
226        let _ = task.complete("task_guid_123");
227    }
228
229    #[test]
230    fn test_task_v2_uncomplete() {
231        let config = create_test_config();
232        let task = Task::new(config);
233        let _ = task.uncomplete("task_guid_123");
234    }
235
236    #[test]
237    fn test_task_v2_subtask() {
238        let config = create_test_config();
239        let task = Task::new(config);
240        let _ = task.subtask("task_guid_123");
241    }
242
243    #[test]
244    fn test_task_v2_add_tasklist() {
245        let config = create_test_config();
246        let task = Task::new(config);
247        let _ = task.add_tasklist("task_guid_123");
248    }
249
250    #[test]
251    fn test_task_v2_remove_tasklist() {
252        let config = create_test_config();
253        let task = Task::new(config);
254        let _ = task.remove_tasklist("task_guid_123");
255    }
256
257    #[test]
258    fn test_task_v2_tasklists() {
259        let config = create_test_config();
260        let task = Task::new(config);
261        let _ = task.tasklists("task_guid_123");
262    }
263
264    #[test]
265    fn test_task_v2_add_members() {
266        let config = create_test_config();
267        let task = Task::new(config);
268        let _ = task.add_members("task_guid_123");
269    }
270
271    #[test]
272    fn test_task_v2_remove_members() {
273        let config = create_test_config();
274        let task = Task::new(config);
275        let _ = task.remove_members("task_guid_123");
276    }
277
278    #[test]
279    fn test_task_v2_add_reminders() {
280        let config = create_test_config();
281        let task = Task::new(config);
282        let _ = task.add_reminders("task_guid_123");
283    }
284
285    #[test]
286    fn test_task_v2_remove_reminders() {
287        let config = create_test_config();
288        let task = Task::new(config);
289        let _ = task.remove_reminders("task_guid_123");
290    }
291
292    #[test]
293    fn test_task_v2_add_dependencies() {
294        let config = create_test_config();
295        let task = Task::new(config);
296        let _ = task.add_dependencies("task_guid_123");
297    }
298
299    #[test]
300    fn test_task_v2_remove_dependencies() {
301        let config = create_test_config();
302        let task = Task::new(config);
303        let _ = task.remove_dependencies("task_guid_123");
304    }
305}