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 endpoints::cloud_docs::*,
11 http::Transport,
12 req_option::RequestOption,
13 SDKResult,
14 },
15 impl_executable_builder_config,
16};
17
18use super::AppTableViewService;
19
20impl AppTableViewService {
21 pub async fn delete(
23 &self,
24 request: DeleteViewRequest,
25 option: Option<RequestOption>,
26 ) -> SDKResult<BaseResponse<DeleteViewResponse>> {
27 delete_view(request, &self.config, option).await
28 }
29}
30
31pub async fn delete_view(
33 request: DeleteViewRequest,
34 config: &Config,
35 option: Option<RequestOption>,
36) -> SDKResult<BaseResponse<DeleteViewResponse>> {
37 let mut api_req = request.api_request;
38 api_req.http_method = Method::DELETE;
39 api_req.api_path = BITABLE_V1_VIEW_DELETE
40 .replace("{app_token}", &request.app_token)
41 .replace("{table_id}", &request.table_id)
42 .replace("{view_id}", &request.view_id);
43 api_req.supported_access_token_types = vec![AccessTokenType::Tenant, AccessTokenType::User];
44
45 let api_resp = Transport::request(api_req, config, option).await?;
46 Ok(api_resp)
47}
48
49#[derive(Debug, Default)]
51pub struct DeleteViewRequest {
52 api_request: ApiRequest,
53 app_token: String,
55 table_id: String,
57 view_id: String,
59}
60
61impl DeleteViewRequest {
62 pub fn builder() -> DeleteViewRequestBuilder {
63 DeleteViewRequestBuilder::default()
64 }
65
66 pub fn new(app_token: impl ToString, table_id: impl ToString, view_id: impl ToString) -> Self {
68 Self {
69 api_request: ApiRequest::default(),
70 app_token: app_token.to_string(),
71 table_id: table_id.to_string(),
72 view_id: view_id.to_string(),
73 }
74 }
75}
76
77#[derive(Default)]
78pub struct DeleteViewRequestBuilder {
79 request: DeleteViewRequest,
80}
81
82impl DeleteViewRequestBuilder {
83 pub fn app_token(mut self, app_token: impl ToString) -> Self {
85 self.request.app_token = app_token.to_string();
86 self
87 }
88
89 pub fn table_id(mut self, table_id: impl ToString) -> Self {
91 self.request.table_id = table_id.to_string();
92 self
93 }
94
95 pub fn view_id(mut self, view_id: impl ToString) -> Self {
97 self.request.view_id = view_id.to_string();
98 self
99 }
100
101 pub fn build(self) -> DeleteViewRequest {
102 self.request
103 }
104}
105
106impl_executable_builder_config!(
107 DeleteViewRequestBuilder,
108 DeleteViewRequest,
109 BaseResponse<DeleteViewResponse>,
110 delete_view
111);
112
113#[derive(Deserialize, Debug)]
114pub struct DeleteViewResponse {
115 pub deleted: bool,
117}
118
119impl ApiResponseTrait for DeleteViewResponse {
120 fn data_format() -> ResponseFormat {
121 ResponseFormat::Data
122 }
123}
124
125#[cfg(test)]
126#[allow(unused_variables, unused_unsafe)]
127mod tests {
128 use super::*;
129
130 #[test]
131 fn test_delete_view_request() {
132 let request = DeleteViewRequest::builder()
133 .app_token("bascnmBA*****yGehy8")
134 .table_id("tblsRc9GRRXKqhvW")
135 .view_id("vewTpR1urY")
136 .build();
137
138 assert_eq!(request.app_token, "bascnmBA*****yGehy8");
139 assert_eq!(request.table_id, "tblsRc9GRRXKqhvW");
140 assert_eq!(request.view_id, "vewTpR1urY");
141 }
142
143 #[test]
144 fn test_delete_view_request_new() {
145 let request =
146 DeleteViewRequest::new("bascnmBA*****yGehy8", "tblsRc9GRRXKqhvW", "vewTpR1urY");
147
148 assert_eq!(request.app_token, "bascnmBA*****yGehy8");
149 assert_eq!(request.table_id, "tblsRc9GRRXKqhvW");
150 assert_eq!(request.view_id, "vewTpR1urY");
151 }
152}