open_lark/service/cloud_docs/sheets/v3/data_validation/
delete.rs1use reqwest::Method;
2use serde::{Deserialize, Serialize};
3
4use crate::{
5 core::{
6 api_req::ApiRequest,
7 api_resp::{ApiResponseTrait, BaseResponse, ResponseFormat},
8 constants::AccessTokenType,
9 http::Transport,
10 req_option::RequestOption,
11 SDKResult,
12 },
13 service::sheets::v3::SpreadsheetSheetService,
14};
15
16impl SpreadsheetSheetService {
17 pub async fn delete_data_validation(
19 &self,
20 request: DeleteDataValidationRequest,
21 option: Option<RequestOption>,
22 ) -> SDKResult<BaseResponse<DeleteDataValidationResponseData>> {
23 let mut api_req = request.api_request;
24 api_req.http_method = Method::DELETE;
25 api_req.api_path = format!(
26 "/open-apis/sheets/v3/spreadsheets/{}/sheets/{}/dataValidation/{}",
27 request.spreadsheet_token, request.sheet_id, request.data_validation_id
28 );
29 api_req.supported_access_token_types = vec![AccessTokenType::Tenant, AccessTokenType::User];
30
31 let api_resp = Transport::request(api_req, &self.config, option).await?;
32
33 Ok(api_resp)
34 }
35}
36
37#[derive(Default, Debug, Serialize, Deserialize)]
39pub struct DeleteDataValidationRequest {
40 #[serde(skip)]
41 api_request: ApiRequest,
42 spreadsheet_token: String,
44 sheet_id: String,
46 data_validation_id: String,
48}
49
50impl DeleteDataValidationRequest {
51 pub fn builder() -> DeleteDataValidationRequestBuilder {
52 DeleteDataValidationRequestBuilder::default()
53 }
54}
55
56#[derive(Default)]
57pub struct DeleteDataValidationRequestBuilder {
58 request: DeleteDataValidationRequest,
59}
60
61impl DeleteDataValidationRequestBuilder {
62 pub fn spreadsheet_token(mut self, spreadsheet_token: impl ToString) -> Self {
63 self.request.spreadsheet_token = spreadsheet_token.to_string();
64 self
65 }
66
67 pub fn sheet_id(mut self, sheet_id: impl ToString) -> Self {
68 self.request.sheet_id = sheet_id.to_string();
69 self
70 }
71
72 pub fn data_validation_id(mut self, data_validation_id: impl ToString) -> Self {
73 self.request.data_validation_id = data_validation_id.to_string();
74 self
75 }
76
77 pub fn build(mut self) -> DeleteDataValidationRequest {
78 self.request.api_request.body = serde_json::to_vec(&self.request).unwrap();
79 self.request
80 }
81}
82
83#[derive(Deserialize, Debug)]
85pub struct DeleteDataValidationResponseData {
86 #[serde(default)]
88 pub success: bool,
89 #[serde(skip_serializing_if = "Option::is_none")]
91 pub data_validation_id: Option<String>,
92}
93
94impl ApiResponseTrait for DeleteDataValidationResponseData {
95 fn data_format() -> ResponseFormat {
96 ResponseFormat::Data
97 }
98}
99
100#[cfg(test)]
101mod test {
102 use super::*;
103 use serde_json::json;
104
105 #[test]
106 fn test_delete_data_validation_response() {
107 let json = json!({
108 "success": true,
109 "data_validation_id": "dv_001"
110 });
111
112 let response: DeleteDataValidationResponseData = serde_json::from_value(json).unwrap();
113 assert!(response.success);
114 assert_eq!(response.data_validation_id, Some("dv_001".to_string()));
115 }
116}