open_lark/service/cloud_docs/bitable/v1/app_table_view/
get.rs1use reqwest::Method;
2use serde::Deserialize;
3
4use crate::{
5 core::{
6 api_req::ApiRequest,
7 api_resp::{ApiResponseTrait, BaseResponse, ResponseFormat},
8 constants::AccessTokenType,
9 endpoints::cloud_docs::*,
10 http::Transport,
11 req_option::RequestOption,
12 SDKResult,
13 },
14 impl_executable_builder_owned,
15};
16
17use super::AppTableViewService;
18
19impl AppTableViewService {
20 pub async fn get(
22 &self,
23 request: GetViewRequest,
24 option: Option<RequestOption>,
25 ) -> SDKResult<BaseResponse<GetViewResponse>> {
26 let mut api_req = request.api_request;
27 api_req.http_method = Method::GET;
28 api_req.api_path = BITABLE_V1_VIEW_GET
29 .replace("{app_token}", &request.app_token)
30 .replace("{table_id}", &request.table_id)
31 .replace("{view_id}", &request.view_id);
32 api_req.supported_access_token_types = vec![AccessTokenType::Tenant, AccessTokenType::User];
33
34 let api_resp = Transport::request(api_req, &self.config, option).await?;
35 Ok(api_resp)
36 }
37}
38
39#[derive(Debug, Default)]
41pub struct GetViewRequest {
42 api_request: ApiRequest,
43 app_token: String,
45 table_id: String,
47 view_id: String,
49}
50
51impl GetViewRequest {
52 pub fn builder() -> GetViewRequestBuilder {
53 GetViewRequestBuilder::default()
54 }
55
56 pub fn new(app_token: impl ToString, table_id: impl ToString, view_id: impl ToString) -> Self {
58 Self {
59 api_request: ApiRequest::default(),
60 app_token: app_token.to_string(),
61 table_id: table_id.to_string(),
62 view_id: view_id.to_string(),
63 }
64 }
65}
66
67#[derive(Default)]
68pub struct GetViewRequestBuilder {
69 request: GetViewRequest,
70}
71
72impl GetViewRequestBuilder {
73 pub fn app_token(mut self, app_token: impl ToString) -> Self {
75 self.request.app_token = app_token.to_string();
76 self
77 }
78
79 pub fn table_id(mut self, table_id: impl ToString) -> Self {
81 self.request.table_id = table_id.to_string();
82 self
83 }
84
85 pub fn view_id(mut self, view_id: impl ToString) -> Self {
87 self.request.view_id = view_id.to_string();
88 self
89 }
90
91 pub fn build(self) -> GetViewRequest {
92 self.request
93 }
94}
95
96impl_executable_builder_owned!(
97 GetViewRequestBuilder,
98 AppTableViewService,
99 GetViewRequest,
100 BaseResponse<GetViewResponse>,
101 get
102);
103
104#[derive(Deserialize, Debug)]
105pub struct GetViewResponse {
106 pub view: ViewDetailInfo,
108}
109
110#[derive(Deserialize, Debug)]
111pub struct ViewDetailInfo {
112 pub view_id: String,
114 pub view_name: String,
116 pub view_type: String,
118 #[serde(default)]
120 pub property: Option<serde_json::Value>,
121}
122
123impl ApiResponseTrait for GetViewResponse {
124 fn data_format() -> ResponseFormat {
125 ResponseFormat::Data
126 }
127}
128
129#[cfg(test)]
130#[allow(unused_variables, unused_unsafe)]
131mod tests {
132 use super::*;
133
134 #[test]
135 fn test_get_view_request() {
136 let request = GetViewRequest::builder()
137 .app_token("bascnmBA*****yGehy8")
138 .table_id("tblsRc9GRRXKqhvW")
139 .view_id("vewTpR1urY")
140 .build();
141
142 assert_eq!(request.app_token, "bascnmBA*****yGehy8");
143 assert_eq!(request.table_id, "tblsRc9GRRXKqhvW");
144 assert_eq!(request.view_id, "vewTpR1urY");
145 }
146
147 #[test]
148 fn test_get_view_request_new() {
149 let request = GetViewRequest::new("bascnmBA*****yGehy8", "tblsRc9GRRXKqhvW", "vewTpR1urY");
150
151 assert_eq!(request.app_token, "bascnmBA*****yGehy8");
152 assert_eq!(request.table_id, "tblsRc9GRRXKqhvW");
153 assert_eq!(request.view_id, "vewTpR1urY");
154 }
155}