use serde::{Deserialize, Serialize};
use super::serde_helpers::deserialize_optional_i32;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Relation {
pub mineral_id: i32,
pub relation_type: i32,
pub relation_type_text: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MinStats {
pub ms_photos: i32,
pub ms_locentries: i32,
pub ms_photovotes: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GeoJsonFeature<P> {
#[serde(rename = "type")]
pub feature_type: String,
pub id: Option<i32>,
pub geometry: Option<GeoJsonGeometry>,
pub properties: P,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum GeoJsonGeometry {
Point { coordinates: Vec<f64> },
LineString { coordinates: Vec<Vec<f64>> },
Polygon { coordinates: Vec<Vec<Vec<f64>>> },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GeoJsonFeatureCollection<P> {
#[serde(rename = "type")]
pub collection_type: String,
pub features: Vec<GeoJsonFeature<P>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GeoRegionProperties {
pub lgr_revtxtd: Option<String>,
pub lgr_updttime: Option<String>,
#[serde(default, deserialize_with = "deserialize_optional_i32")]
pub lgr_non_hierarchical: Option<i32>,
}