open_lark/service/cloud_docs/sheets/v2/data_operation/
prepend_data.rs1use serde::Serialize;
2use serde_json::Value;
3
4use crate::{
5 core::{
6 api_req::ApiRequest, api_resp::BaseResponse, constants::AccessTokenType, req_option,
7 SDKResult,
8 },
9 service::sheets::v2::{
10 data_operation::{UpdateSheetDataResponse, ValueRangeRequest},
11 SpreadsheetSheetService,
12 },
13};
14
15#[derive(Serialize, Debug, Default)]
17pub struct PrependDataRequest {
18 #[serde(skip)]
19 api_request: ApiRequest,
20 #[serde(skip)]
21 spreadsheet_token: String,
22 #[serde(rename = "valueRange")]
24 value_range: ValueRangeRequest,
25}
26
27impl PrependDataRequest {
28 pub fn builder() -> PrependDataRequestBuilder {
29 PrependDataRequestBuilder::default()
30 }
31}
32
33#[derive(Default)]
34pub struct PrependDataRequestBuilder {
35 request: PrependDataRequest,
36}
37
38impl PrependDataRequestBuilder {
39 pub fn spreadsheet_token(mut self, spreadsheet_token: impl ToString) -> Self {
40 self.request.spreadsheet_token = spreadsheet_token.to_string();
41 self
42 }
43
44 pub fn range(mut self, range: impl ToString) -> Self {
47 self.request.value_range.range = range.to_string();
48 self
49 }
50
51 pub fn values(mut self, values: Value) -> Self {
53 self.request.value_range.values = values;
54 self
55 }
56
57 pub fn build(mut self) -> PrependDataRequest {
58 self.request.api_request.body = serde_json::to_vec(&self.request).unwrap();
59 self.request
60 }
61}
62
63pub type PrependDataResponse = UpdateSheetDataResponse;
65
66impl SpreadsheetSheetService {
67 pub async fn prepend_data(
69 &self,
70 request: PrependDataRequest,
71 option: Option<req_option::RequestOption>,
72 ) -> SDKResult<BaseResponse<PrependDataResponse>> {
73 let mut api_req = request.api_request;
74 api_req.api_path = format!(
75 "/open-apis/sheets/v2/spreadsheets/{spreadsheet_token}/values_prepend",
76 spreadsheet_token = request.spreadsheet_token
77 );
78 api_req.http_method = reqwest::Method::POST;
79 api_req.supported_access_token_types = vec![AccessTokenType::Tenant, AccessTokenType::App];
80
81 let api_resp = crate::core::http::Transport::request(api_req, &self.config, option).await?;
82
83 Ok(api_resp)
84 }
85}