diff --git a/src/model/table_data_list_response.rs b/src/model/table_data_list_response.rs new file mode 100644 index 0000000..278296a --- /dev/null +++ b/src/model/table_data_list_response.rs @@ -0,0 +1,29 @@ +use serde::{Deserialize, Serialize}; + +use crate::model::table_row::TableRow; + +#[derive(Debug, Default, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct TableDataListResponse { + /// The resource type of the response. + #[serde(skip_serializing_if = "Option::is_none")] + pub kind: Option, + + /// Etag to the response. + #[serde(skip_serializing_if = "Option::is_none")] + pub etag: Option, + + /// Total rows of the entire table. In order to show default value "0", we have to present it as string. + #[serde(skip_serializing_if = "Option::is_none")] + pub total_rows: Option, + + /// When this field is non-empty, it indicates that additional results are available. + /// To request the next page of data, set the pageToken field of your next tabledata.list + /// call to the string returned in this field. + #[serde(skip_serializing_if = "Option::is_none")] + pub page_token: Option, + + /// Repeated rows as result. + #[serde(skip_serializing_if = "Option::is_none")] + pub rows: Option>, +} diff --git a/src/tabledata.rs b/src/tabledata.rs index 2529649..9353134 100644 --- a/src/tabledata.rs +++ b/src/tabledata.rs @@ -6,6 +6,7 @@ use crate::error::BQError; use crate::model::data_format_options::DataFormatOptions; use crate::model::table_data_insert_all_request::TableDataInsertAllRequest; use crate::model::table_data_insert_all_response::TableDataInsertAllResponse; +use crate::model::table_data_list_response::TableDataListResponse; use crate::{process_response, urlencode, BIG_QUERY_V2_URL}; use reqwest::Client; @@ -79,7 +80,7 @@ impl TableDataApi { dataset_id: &str, table_id: &str, parameters: ListQueryParameters, - ) -> Result { + ) -> Result { let req_url = format!( "{base_url}/projects/{project_id}/datasets/{dataset_id}/tables/{table_id}/data", base_url = self.base_url,