open_lark/service/cloud_docs/bitable/v1/app_table_view/
delete.rs1use 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 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
30pub 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#[derive(Debug, Default)]
50pub struct DeleteViewRequest {
51 api_request: ApiRequest,
52 app_token: String,
54 table_id: String,
56 view_id: String,
58}
59
60impl DeleteViewRequest {
61 pub fn builder() -> DeleteViewRequestBuilder {
62 DeleteViewRequestBuilder::default()
63 }
64
65 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 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 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 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 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}