use indexmap::IndexMap;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[serde(rename_all = "lowercase")]
pub enum DTypeName {
Utf8,
Bool,
Int8,
Int16,
Int32,
Int64,
UInt8,
UInt16,
UInt32,
UInt64,
Float32,
Float64,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(deny_unknown_fields)]
pub struct ColumnSchema {
pub dtype: DTypeName,
#[serde(default = "ColumnSchema::default_nullable")]
pub nullable: bool,
}
impl ColumnSchema {
pub fn default_nullable() -> bool {
true
}
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct TableSchema {
pub key: String,
pub columns: IndexMap<String, ColumnSchema>,
}