use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::features::{FeatureId, ParameterId};
#[derive(
Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize, JsonSchema,
)]
#[serde(transparent)]
pub struct SpreadsheetId(pub String);
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
pub struct Spreadsheet {
pub id: SpreadsheetId,
pub feature: FeatureId,
pub cells: Vec<ParameterId>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub column_widths: Vec<SpreadsheetDimension>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub row_heights: Vec<SpreadsheetDimension>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub merged_ranges: Vec<SpreadsheetRange>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub native_ref: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
pub struct SpreadsheetDimension {
pub name: String,
pub pixels: u32,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
pub struct SpreadsheetRange {
pub start: String,
pub end: String,
}