use serde::{Deserialize, Serialize};
use crate::results::MinimalFallback;
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct NetCdfAttributeEntry {
pub name: String,
pub value: String,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct NetCdfVariableSummary {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub shape: Option<Vec<usize>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dimension_names: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub vartype: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub attributes: Option<Vec<NetCdfAttributeEntry>>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct NetCdfMetadata {
pub byte_count: usize,
#[serde(skip_serializing_if = "Option::is_none")]
pub netcdf4_model: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub global_attributes: Option<Vec<NetCdfAttributeEntry>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dimension_count: Option<usize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dimensions_sample: Option<Vec<(String, usize)>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub variable_count: Option<usize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub variables: Option<Vec<NetCdfVariableSummary>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata_truncated: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub parse_error: Option<String>,
}
impl MinimalFallback for NetCdfMetadata {
fn minimal_fallback(file_size_bytes: usize) -> Self {
Self {
byte_count: file_size_bytes,
..Self::default()
}
}
}