Skip to main content

openlark_workflow/v2/custom_field/option/
mod.rs

1//! 自定义字段选项模块
2
3pub mod create;
4/// 更新接口。
5pub mod patch;
6
7use openlark_core::config::Config;
8use std::sync::Arc;
9
10/// CustomFieldOption:自定义字段选项资源
11#[derive(Clone)]
12pub struct CustomFieldOptionResource {
13    config: Arc<Config>,
14    custom_field_guid: String,
15}
16
17impl CustomFieldOptionResource {
18    /// 创建新的实例。
19    pub fn new(config: Arc<Config>, custom_field_guid: impl Into<String>) -> Self {
20        Self {
21            config,
22            custom_field_guid: custom_field_guid.into(),
23        }
24    }
25
26    /// 创建自定义字段选项
27    pub fn create(&self) -> create::CreateCustomFieldOptionRequest {
28        create::CreateCustomFieldOptionRequest::new(
29            self.config.clone(),
30            self.custom_field_guid.clone(),
31        )
32    }
33
34    /// 更新自定义字段选项
35    pub fn patch(&self, option_guid: impl Into<String>) -> patch::UpdateCustomFieldOptionRequest {
36        patch::UpdateCustomFieldOptionRequest::new(
37            self.config.clone(),
38            self.custom_field_guid.clone(),
39            option_guid.into(),
40        )
41    }
42}
43
44// 重新导出请求类型
45pub use create::CreateCustomFieldOptionRequest;
46pub use patch::UpdateCustomFieldOptionRequest;
47
48// 重新导出响应类型
49pub use create::{CreateCustomFieldOptionBody, CreateCustomFieldOptionResponse, CustomFieldOption};
50pub use patch::{UpdateCustomFieldOptionBody, UpdateCustomFieldOptionResponse};
51
52#[cfg(test)]
53#[allow(unused_imports)]
54mod tests {
55    use super::*;
56    use std::sync::Arc;
57
58    fn create_test_config() -> Arc<Config> {
59        Arc::new(
60            Config::builder()
61                .app_id("test_app")
62                .app_secret("test_secret")
63                .build(),
64        )
65    }
66
67    #[test]
68    fn test_custom_field_option_resource_new() {
69        let config = create_test_config();
70        let resource = CustomFieldOptionResource::new(config, "field_guid_123");
71        assert_eq!(resource.custom_field_guid, "field_guid_123");
72    }
73
74    #[test]
75    fn test_custom_field_option_create() {
76        let config = create_test_config();
77        let resource = CustomFieldOptionResource::new(config, "field_guid_123");
78        let _request = resource.create();
79    }
80
81    #[test]
82    fn test_custom_field_option_patch() {
83        let config = create_test_config();
84        let resource = CustomFieldOptionResource::new(config, "field_guid_123");
85        let _request = resource.patch("option_456");
86    }
87}