open_lark/service/cloud_docs/bitable/v1/app_table_view/
delete.rs

1use reqwest::Method;
2use serde::Deserialize;
3
4use crate::{
5    core::{
6        api_req::ApiRequest,
7        api_resp::{ApiResponseTrait, BaseResponse, ResponseFormat},
8        config::Config,
9        constants::AccessTokenType,
10        http::Transport,
11        req_option::RequestOption,
12        SDKResult,
13    },
14    impl_executable_builder_config,
15};
16
17use super::AppTableViewService;
18
19impl AppTableViewService {
20    /// 删除视图
21    pub async fn delete(
22        &self,
23        request: DeleteViewRequest,
24        option: Option<RequestOption>,
25    ) -> SDKResult<BaseResponse<DeleteViewResponse>> {
26        delete_view(request, &self.config, option).await
27    }
28}
29
30/// 删除视图
31pub async fn delete_view(
32    request: DeleteViewRequest,
33    config: &Config,
34    option: Option<RequestOption>,
35) -> SDKResult<BaseResponse<DeleteViewResponse>> {
36    let mut api_req = request.api_request;
37    api_req.http_method = Method::DELETE;
38    api_req.api_path = format!(
39        "/open-apis/bitable/v1/apps/{}/tables/{}/views/{}",
40        request.app_token, request.table_id, request.view_id
41    );
42    api_req.supported_access_token_types = vec![AccessTokenType::Tenant, AccessTokenType::User];
43
44    let api_resp = Transport::request(api_req, config, option).await?;
45    Ok(api_resp)
46}
47
48/// 删除视图请求
49#[derive(Debug, Default)]
50pub struct DeleteViewRequest {
51    api_request: ApiRequest,
52    /// 多维表格的 app_token
53    app_token: String,
54    /// 数据表的 table_id
55    table_id: String,
56    /// 视图的 view_id
57    view_id: String,
58}
59
60impl DeleteViewRequest {
61    pub fn builder() -> DeleteViewRequestBuilder {
62        DeleteViewRequestBuilder::default()
63    }
64
65    /// 创建删除视图请求
66    pub fn new(app_token: impl ToString, table_id: impl ToString, view_id: impl ToString) -> Self {
67        Self {
68            api_request: ApiRequest::default(),
69            app_token: app_token.to_string(),
70            table_id: table_id.to_string(),
71            view_id: view_id.to_string(),
72        }
73    }
74}
75
76#[derive(Default)]
77pub struct DeleteViewRequestBuilder {
78    request: DeleteViewRequest,
79}
80
81impl DeleteViewRequestBuilder {
82    /// 多维表格的 app_token
83    pub fn app_token(mut self, app_token: impl ToString) -> Self {
84        self.request.app_token = app_token.to_string();
85        self
86    }
87
88    /// 数据表的 table_id
89    pub fn table_id(mut self, table_id: impl ToString) -> Self {
90        self.request.table_id = table_id.to_string();
91        self
92    }
93
94    /// 视图的 view_id
95    pub fn view_id(mut self, view_id: impl ToString) -> Self {
96        self.request.view_id = view_id.to_string();
97        self
98    }
99
100    pub fn build(self) -> DeleteViewRequest {
101        self.request
102    }
103}
104
105impl_executable_builder_config!(
106    DeleteViewRequestBuilder,
107    DeleteViewRequest,
108    BaseResponse<DeleteViewResponse>,
109    delete_view
110);
111
112#[derive(Deserialize, Debug)]
113pub struct DeleteViewResponse {
114    /// 删除结果
115    pub deleted: bool,
116}
117
118impl ApiResponseTrait for DeleteViewResponse {
119    fn data_format() -> ResponseFormat {
120        ResponseFormat::Data
121    }
122}
123
124#[cfg(test)]
125mod tests {
126    use super::*;
127
128    #[test]
129    fn test_delete_view_request() {
130        let request = DeleteViewRequest::builder()
131            .app_token("bascnmBA*****yGehy8")
132            .table_id("tblsRc9GRRXKqhvW")
133            .view_id("vewTpR1urY")
134            .build();
135
136        assert_eq!(request.app_token, "bascnmBA*****yGehy8");
137        assert_eq!(request.table_id, "tblsRc9GRRXKqhvW");
138        assert_eq!(request.view_id, "vewTpR1urY");
139    }
140
141    #[test]
142    fn test_delete_view_request_new() {
143        let request =
144            DeleteViewRequest::new("bascnmBA*****yGehy8", "tblsRc9GRRXKqhvW", "vewTpR1urY");
145
146        assert_eq!(request.app_token, "bascnmBA*****yGehy8");
147        assert_eq!(request.table_id, "tblsRc9GRRXKqhvW");
148        assert_eq!(request.view_id, "vewTpR1urY");
149    }
150}