use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CreateSpreadsheetParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub folder_token: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateSpreadsheetResponse {
pub spreadsheet: CreatedSpreadsheet,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreatedSpreadsheet {
pub title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub folder_token: Option<String>,
pub url: String,
pub spreadsheet_token: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct UpdateSpreadsheetParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct UpdateSpreadsheetResponse {}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GetSpreadsheetResponse {
pub spreadsheet: SpreadsheetInfo,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SpreadsheetInfo {
pub title: String,
pub owner_id: String,
pub token: String,
pub url: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct QuerySheetResponse {
pub sheets: Vec<Sheet>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GetSheetResponse {
pub sheet: Sheet,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Sheet {
pub sheet_id: String,
pub title: String,
pub index: i32,
pub hidden: bool,
pub grid_properties: GridProperties,
pub resource_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub merges: Option<Vec<MergeRange>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GridProperties {
pub frozen_row_count: i32,
pub frozen_column_count: i32,
pub row_count: i32,
pub column_count: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MergeRange {
pub start_row_index: i32,
pub end_row_index: i32,
pub start_column_index: i32,
pub end_column_index: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MoveDimensionParams {
pub source: DimensionSource,
pub destination_index: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DimensionSource {
pub major_dimension: String,
pub start_index: i32,
pub end_index: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct MoveDimensionResponse {}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FindCondition {
pub range: String,
pub match_case: bool,
pub match_entire_cell: bool,
pub search_by_regex: bool,
pub include_formulas: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FindParams {
pub find_condition: FindCondition,
pub find: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FindResponse {
pub find_result: FindResult,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FindReplaceParams {
pub find_condition: FindCondition,
pub find: String,
pub replacement: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FindReplaceResponse {
pub replace_result: FindResult,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FindResult {
pub matched_cells: Vec<String>,
pub matched_formula_cells: Vec<String>,
pub rows_count: i32,
}