Skip to main content

openlark_workflow/v2/task/
mod.rs

1//! 任务 v2 资源模块
2//!
3//! 提供任务 v2 版本的资源操作集合,覆盖任务生命周期、成员与依赖管理、提醒管理与任务清单关联。
4//!
5//! ## 主要功能
6//! - 任务基础操作:创建、查询、更新、删除、完成与取消完成
7//! - 关系管理:成员、依赖、子任务与任务清单关联
8//! - 扩展能力:提醒与响应模型统一导出
9
10/// 添加依赖接口。
11pub mod add_dependencies;
12/// 添加成员接口。
13pub mod add_members;
14/// 添加提醒接口。
15pub mod add_reminders;
16/// 加入任务清单接口。
17pub mod add_tasklist;
18/// 完成任务接口。
19pub mod complete;
20/// 创建接口。
21pub mod create;
22/// 删除接口。
23pub mod delete;
24/// 获取接口。
25pub mod get;
26/// 列表接口。
27pub mod list;
28/// 数据模型。
29pub mod models;
30/// 更新接口。
31pub mod patch;
32/// 移除依赖接口。
33pub mod remove_dependencies;
34/// 移除成员接口。
35pub mod remove_members;
36/// 移除提醒接口。
37pub mod remove_reminders;
38/// 移出任务清单接口。
39pub mod remove_tasklist;
40#[path = "../../task/task/v2/task/search.rs"]
41pub mod search;
42/// 设置父任务接口。
43#[path = "../../task/task/v2/task/set_ancestor_task.rs"]
44pub mod set_ancestor_task;
45/// 子任务模块。
46pub mod subtask;
47/// tasklists 模块。
48pub mod tasklists;
49/// 取消完成接口。
50pub mod uncomplete;
51/// 更新接口。
52pub mod update;
53
54use openlark_core::config::Config;
55use std::sync::Arc;
56
57/// Task:任务资源(v2)
58#[derive(Clone)]
59pub struct Task {
60    config: Arc<Config>,
61}
62
63impl Task {
64    /// 创建新的实例。
65    pub fn new(config: Arc<Config>) -> Self {
66        Self { config }
67    }
68
69    /// 创建新建请求。
70    pub fn create(&self) -> create::CreateTaskRequest {
71        create::CreateTaskRequest::new(self.config.clone())
72    }
73
74    /// 创建更新请求。
75    pub fn update(&self, task_guid: impl Into<String>) -> update::UpdateTaskRequest {
76        update::UpdateTaskRequest::new(self.config.clone(), task_guid.into())
77    }
78
79    /// 创建删除请求。
80    pub fn delete(&self, task_guid: impl Into<String>) -> delete::DeleteTaskRequest {
81        delete::DeleteTaskRequest::new(self.config.clone(), task_guid.into())
82    }
83
84    /// 创建获取详情请求。
85    pub fn get(&self, task_guid: impl Into<String>) -> get::GetTaskRequest {
86        get::GetTaskRequest::new(self.config.clone(), task_guid.into())
87    }
88
89    /// 创建列表请求。
90    pub fn list(&self) -> list::ListTasksRequest {
91        list::ListTasksRequest::new(self.config.clone())
92    }
93
94    /// 创建完成任务请求。
95    pub fn complete(&self, task_guid: impl Into<String>) -> complete::CompleteTaskRequest {
96        complete::CompleteTaskRequest::new(self.config.clone(), task_guid.into())
97    }
98
99    /// 创建取消完成请求。
100    pub fn uncomplete(&self, task_guid: impl Into<String>) -> uncomplete::UncompleteTaskRequest {
101        uncomplete::UncompleteTaskRequest::new(self.config.clone(), task_guid.into())
102    }
103
104    /// 获取子任务资源
105    pub fn subtask(&self, task_guid: impl Into<String>) -> subtask::Subtask {
106        subtask::Subtask::new(self.config.clone(), task_guid.into())
107    }
108
109    /// 任务加入清单
110    pub fn add_tasklist(&self, task_guid: impl Into<String>) -> add_tasklist::AddTasklistRequest {
111        add_tasklist::AddTasklistRequest::new(self.config.clone(), task_guid.into())
112    }
113
114    /// 任务移出清单
115    pub fn remove_tasklist(
116        &self,
117        task_guid: impl Into<String>,
118    ) -> remove_tasklist::RemoveTasklistRequest {
119        remove_tasklist::RemoveTasklistRequest::new(self.config.clone(), task_guid.into())
120    }
121
122    /// 列取任务所在清单
123    pub fn tasklists(&self, task_guid: impl Into<String>) -> tasklists::GetTaskTasklistsRequest {
124        tasklists::GetTaskTasklistsRequest::new(self.config.clone(), task_guid.into())
125    }
126
127    /// 添加任务成员
128    pub fn add_members(&self, task_guid: impl Into<String>) -> add_members::AddMembersRequest {
129        add_members::AddMembersRequest::new(self.config.clone(), task_guid.into())
130    }
131
132    /// 移除任务成员
133    pub fn remove_members(
134        &self,
135        task_guid: impl Into<String>,
136    ) -> remove_members::RemoveMembersRequest {
137        remove_members::RemoveMembersRequest::new(self.config.clone(), task_guid.into())
138    }
139
140    /// 添加任务提醒
141    pub fn add_reminders(
142        &self,
143        task_guid: impl Into<String>,
144    ) -> add_reminders::AddRemindersRequest {
145        add_reminders::AddRemindersRequest::new(self.config.clone(), task_guid.into())
146    }
147
148    /// 移除任务提醒
149    pub fn remove_reminders(
150        &self,
151        task_guid: impl Into<String>,
152    ) -> remove_reminders::RemoveRemindersRequest {
153        remove_reminders::RemoveRemindersRequest::new(self.config.clone(), task_guid.into())
154    }
155
156    /// 添加任务依赖
157    pub fn add_dependencies(
158        &self,
159        task_guid: impl Into<String>,
160    ) -> add_dependencies::AddDependenciesRequest {
161        add_dependencies::AddDependenciesRequest::new(self.config.clone(), task_guid.into())
162    }
163
164    /// 移除任务依赖
165    pub fn remove_dependencies(
166        &self,
167        task_guid: impl Into<String>,
168    ) -> remove_dependencies::RemoveDependenciesRequest {
169        remove_dependencies::RemoveDependenciesRequest::new(self.config.clone(), task_guid.into())
170    }
171
172    /// 设置父任务。
173    pub fn set_ancestor_task(
174        &self,
175        task_guid: impl Into<String>,
176    ) -> set_ancestor_task::SetAncestorTaskRequest {
177        set_ancestor_task::SetAncestorTaskRequest::new(self.config.clone(), task_guid.into())
178    }
179    /// 创建搜索任务请求。
180    pub fn search(&self) -> search::SearchTaskRequest {
181        search::SearchTaskRequest::new(self.config.clone())
182    }
183}
184
185// 重新导出请求类型
186pub use add_dependencies::AddDependenciesRequest;
187pub use add_members::AddMembersRequest;
188pub use add_reminders::AddRemindersRequest;
189pub use add_tasklist::AddTasklistRequest;
190pub use complete::CompleteTaskRequest;
191pub use create::CreateTaskRequest;
192pub use delete::DeleteTaskRequest;
193pub use get::GetTaskRequest;
194pub use list::ListTasksRequest;
195pub use patch::UpdateTaskRequest;
196pub use remove_dependencies::RemoveDependenciesRequest;
197pub use remove_members::RemoveMembersRequest;
198pub use remove_reminders::RemoveRemindersRequest;
199pub use remove_tasklist::RemoveTasklistRequest;
200pub use set_ancestor_task::SetAncestorTaskRequest;
201pub use tasklists::GetTaskTasklistsRequest;
202pub use uncomplete::UncompleteTaskRequest;
203
204// 重新导出响应类型
205pub use add_dependencies::{AddDependenciesResponse, TaskDependency};
206pub use add_members::{AddMembersResponse, TaskMember};
207pub use add_reminders::{AddRemindersResponse, TaskReminder};
208pub use add_tasklist::{AddTasklistBody, AddTasklistResponse};
209pub use models::{
210    CompleteTaskResponse, CreateTaskBody, CreateTaskResponse, DeleteTaskResponse, GetTaskResponse,
211    ListTasksResponse, TaskItem, UncompleteTaskResponse, UpdateTaskBody, UpdateTaskResponse,
212};
213pub use remove_dependencies::{RemoveDependenciesBody, RemoveDependenciesResponse};
214pub use remove_members::{RemoveMembersBody, RemoveMembersResponse};
215pub use remove_reminders::{RemoveRemindersBody, RemoveRemindersResponse};
216pub use remove_tasklist::{RemoveTasklistBody, RemoveTasklistResponse};
217pub use set_ancestor_task::{SetAncestorTaskBody, SetAncestorTaskResponse};
218pub use tasklists::{GetTaskTasklistsResponse, TaskTasklistItem};
219
220pub use search::SearchTaskRequest;
221#[cfg(test)]
222#[allow(unused_variables)]
223#[allow(unused_imports)]
224mod tests {
225    use super::*;
226    use std::sync::Arc;
227
228    fn create_test_config() -> Arc<Config> {
229        Arc::new(
230            Config::builder()
231                .app_id("test_app")
232                .app_secret("test_secret")
233                .build(),
234        )
235    }
236
237    #[test]
238    fn test_task_v2_new() {
239        let config = create_test_config();
240        let _ = Task::new(config);
241    }
242
243    #[test]
244    fn test_task_v2_create() {
245        let config = create_test_config();
246        let task = Task::new(config);
247        let _ = task.create();
248    }
249
250    #[test]
251    fn test_task_v2_update() {
252        let config = create_test_config();
253        let task = Task::new(config);
254        let _ = task.update("task_guid_123");
255    }
256
257    #[test]
258    fn test_task_v2_delete() {
259        let config = create_test_config();
260        let task = Task::new(config);
261        let _ = task.delete("task_guid_123");
262    }
263
264    #[test]
265    fn test_task_v2_get() {
266        let config = create_test_config();
267        let task = Task::new(config);
268        let _ = task.get("task_guid_123");
269    }
270
271    #[test]
272    fn test_task_v2_list() {
273        let config = create_test_config();
274        let task = Task::new(config);
275        let _ = task.list();
276    }
277
278    #[test]
279    fn test_task_v2_complete() {
280        let config = create_test_config();
281        let task = Task::new(config);
282        let _ = task.complete("task_guid_123");
283    }
284
285    #[test]
286    fn test_task_v2_uncomplete() {
287        let config = create_test_config();
288        let task = Task::new(config);
289        let _ = task.uncomplete("task_guid_123");
290    }
291
292    #[test]
293    fn test_task_v2_subtask() {
294        let config = create_test_config();
295        let task = Task::new(config);
296        let _ = task.subtask("task_guid_123");
297    }
298
299    #[test]
300    fn test_task_v2_add_tasklist() {
301        let config = create_test_config();
302        let task = Task::new(config);
303        let _ = task.add_tasklist("task_guid_123");
304    }
305
306    #[test]
307    fn test_task_v2_remove_tasklist() {
308        let config = create_test_config();
309        let task = Task::new(config);
310        let _ = task.remove_tasklist("task_guid_123");
311    }
312
313    #[test]
314    fn test_task_v2_tasklists() {
315        let config = create_test_config();
316        let task = Task::new(config);
317        let _ = task.tasklists("task_guid_123");
318    }
319
320    #[test]
321    fn test_task_v2_add_members() {
322        let config = create_test_config();
323        let task = Task::new(config);
324        let _ = task.add_members("task_guid_123");
325    }
326
327    #[test]
328    fn test_task_v2_remove_members() {
329        let config = create_test_config();
330        let task = Task::new(config);
331        let _ = task.remove_members("task_guid_123");
332    }
333
334    #[test]
335    fn test_task_v2_add_reminders() {
336        let config = create_test_config();
337        let task = Task::new(config);
338        let _ = task.add_reminders("task_guid_123");
339    }
340
341    #[test]
342    fn test_task_v2_remove_reminders() {
343        let config = create_test_config();
344        let task = Task::new(config);
345        let _ = task.remove_reminders("task_guid_123");
346    }
347
348    #[test]
349    fn test_task_v2_add_dependencies() {
350        let config = create_test_config();
351        let task = Task::new(config);
352        let _ = task.add_dependencies("task_guid_123");
353    }
354
355    #[test]
356    fn test_task_v2_remove_dependencies() {
357        let config = create_test_config();
358        let task = Task::new(config);
359        let _ = task.remove_dependencies("task_guid_123");
360    }
361}