use serde::{Deserialize, Serialize};
use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum LogicalType {
Boolean,
Int64,
Float64,
Utf8,
DateTime,
}
impl fmt::Display for LogicalType {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let name = match self {
LogicalType::Boolean => "boolean",
LogicalType::Int64 => "int64",
LogicalType::Float64 => "float64",
LogicalType::Utf8 => "utf8",
LogicalType::DateTime => "datetime",
};
f.write_str(name)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum TypeState {
Unresolved,
Known(LogicalType),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum Cardinality {
Single,
OrderedMany,
UnorderedMany,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum Nullability {
Unspecified,
Nullable,
NotNull,
}