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