use core::fmt;
use crate::core::ColumnId;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum SchemaError {
NoColumns,
DuplicateColumn(ColumnId),
UnknownKeyColumn(ColumnId),
DuplicateKeyColumn(ColumnId),
NullableKeyColumn(ColumnId),
InvalidDecimal {
column: ColumnId,
precision: u8,
scale: u8,
},
}
impl fmt::Display for SchemaError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::NoColumns => write!(f, "table has no columns"),
Self::DuplicateColumn(c) => write!(f, "column {} is repeated", c.name()),
Self::UnknownKeyColumn(c) => write!(f, "key column {} is not a column", c.name()),
Self::DuplicateKeyColumn(c) => write!(f, "key column {} is repeated", c.name()),
Self::NullableKeyColumn(c) => write!(f, "key column {} is nullable", c.name()),
Self::InvalidDecimal {
column,
precision,
scale,
} => write!(
f,
"column {} has an invalid decimal({precision},{scale})",
column.name()
),
}
}
}
impl core::error::Error for SchemaError {}