openlark_workflow/v2/custom_field/
mod.rs1pub mod add;
3pub mod create;
5pub mod delete;
7pub mod get;
9pub mod list;
11pub mod models;
13pub mod option;
15pub mod remove;
17pub mod update;
19
20use openlark_core::config::Config;
21use std::sync::Arc;
22
23#[derive(Clone)]
25pub struct CustomField {
26 config: Arc<Config>,
27 tasklist_guid: String,
28}
29
30impl CustomField {
31 pub fn new(config: Arc<Config>) -> Self {
33 Self {
34 config,
35 tasklist_guid: String::new(),
36 }
37 }
38
39 pub fn with_tasklist(mut self, tasklist_guid: impl Into<String>) -> Self {
41 self.tasklist_guid = tasklist_guid.into();
42 self
43 }
44
45 pub fn create(&self) -> create::CreateCustomFieldRequest {
47 create::CreateCustomFieldRequest::new(self.config.clone(), self.tasklist_guid.clone())
48 }
49
50 pub fn get(&self, field_guid: impl Into<String>) -> get::GetCustomFieldRequest {
52 get::GetCustomFieldRequest::new(
53 self.config.clone(),
54 self.tasklist_guid.clone(),
55 field_guid.into(),
56 )
57 }
58
59 pub fn update(&self, field_guid: impl Into<String>) -> update::UpdateCustomFieldRequest {
61 update::UpdateCustomFieldRequest::new(
62 self.config.clone(),
63 self.tasklist_guid.clone(),
64 field_guid.into(),
65 )
66 }
67
68 pub fn delete(&self, field_guid: impl Into<String>) -> delete::DeleteCustomFieldRequest {
70 delete::DeleteCustomFieldRequest::new(
71 self.config.clone(),
72 self.tasklist_guid.clone(),
73 field_guid.into(),
74 )
75 }
76
77 pub fn list(&self) -> list::ListCustomFieldsRequest {
79 list::ListCustomFieldsRequest::new(self.config.clone(), self.tasklist_guid.clone())
80 }
81
82 pub fn option(
84 &self,
85 custom_field_guid: impl Into<String>,
86 ) -> option::CustomFieldOptionResource {
87 option::CustomFieldOptionResource::new(self.config.clone(), custom_field_guid.into())
88 }
89}
90
91pub use add::AddCustomFieldRequest;
93pub use create::CreateCustomFieldRequest;
94pub use delete::DeleteCustomFieldRequest;
95pub use get::GetCustomFieldRequest;
96pub use list::ListCustomFieldsRequest;
97pub use remove::RemoveCustomFieldRequest;
98pub use update::UpdateCustomFieldRequest;
99
100pub use models::{
102 CreateCustomFieldBody, CreateCustomFieldResponse, CustomFieldConfig, CustomFieldItem,
103 CustomFieldType, DeleteCustomFieldResponse, GetCustomFieldResponse, ListCustomFieldsResponse,
104 UpdateCustomFieldBody, UpdateCustomFieldResponse,
105};
106
107#[cfg(test)]
108#[allow(unused_imports)]
109mod tests {
110 use super::*;
111 use std::sync::Arc;
112
113 fn create_test_config() -> Arc<Config> {
114 Arc::new(
115 Config::builder()
116 .app_id("test_app")
117 .app_secret("test_secret")
118 .build(),
119 )
120 }
121
122 #[test]
123 fn test_custom_field_new() {
124 let config = create_test_config();
125 let field = CustomField::new(config);
126 assert!(field.tasklist_guid.is_empty());
127 }
128
129 #[test]
130 fn test_custom_field_with_tasklist() {
131 let config = create_test_config();
132 let field = CustomField::new(config).with_tasklist("tasklist_123");
133 assert_eq!(field.tasklist_guid, "tasklist_123");
134 }
135
136 #[test]
137 fn test_custom_field_create() {
138 let config = create_test_config();
139 let field = CustomField::new(config).with_tasklist("tasklist_123");
140 let _request = field.create();
141 }
142
143 #[test]
144 fn test_custom_field_get() {
145 let config = create_test_config();
146 let field = CustomField::new(config).with_tasklist("tasklist_123");
147 let _request = field.get("field_456");
148 }
149
150 #[test]
151 fn test_custom_field_update() {
152 let config = create_test_config();
153 let field = CustomField::new(config).with_tasklist("tasklist_123");
154 let _request = field.update("field_456");
155 }
156
157 #[test]
158 fn test_custom_field_delete() {
159 let config = create_test_config();
160 let field = CustomField::new(config).with_tasklist("tasklist_123");
161 let _request = field.delete("field_456");
162 }
163
164 #[test]
165 fn test_custom_field_list() {
166 let config = create_test_config();
167 let field = CustomField::new(config).with_tasklist("tasklist_123");
168 let _request = field.list();
169 }
170
171 #[test]
172 fn test_custom_field_option() {
173 let config = create_test_config();
174 let field = CustomField::new(config);
175 let _resource = field.option("field_456");
176 }
177}