use serde::{Deserialize, Serialize};
use serde_json::Value;
use crate::common::Extent;
use super::{ObservedPropertyCollection, Units};
#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
#[serde(rename_all = "camelCase")]
pub struct ParameterNames {
#[serde(default)]
pub r#type: Type,
pub id: Option<String>,
pub description: Option<Value>,
pub label: Option<String>,
#[serde(rename = "data-type")]
pub data_type: Option<DataType>,
pub unit: Option<Units>,
pub observed_property: ObservedPropertyCollection,
pub category_encoding: Option<Value>,
pub extent: Option<Extent>,
pub measurement_type: Option<MeasurementType>,
}
#[derive(Serialize, Deserialize, Default, Debug, PartialEq, Eq, Clone)]
pub enum Type {
#[default]
Parameter,
}
#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
#[serde(rename_all = "lowercase")]
pub enum DataType {
Integer,
Float,
String,
}
#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
pub struct MeasurementType {
pub method: String,
pub duration: Option<String>,
}