Skip to main content

fluidattacks_database_core_domain/table/
error.rs

1use core::fmt;
2
3use crate::core::ColumnId;
4
5#[derive(Debug, Clone, PartialEq, Eq)]
6pub enum SchemaError {
7    NoColumns,
8    DuplicateColumn(ColumnId),
9    UnknownKeyColumn(ColumnId),
10    DuplicateKeyColumn(ColumnId),
11    NullableKeyColumn(ColumnId),
12    InvalidDecimal {
13        column: ColumnId,
14        precision: u8,
15        scale: u8,
16    },
17}
18
19impl fmt::Display for SchemaError {
20    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
21        match self {
22            Self::NoColumns => write!(f, "table has no columns"),
23            Self::DuplicateColumn(c) => write!(f, "column {} is repeated", c.name()),
24            Self::UnknownKeyColumn(c) => write!(f, "key column {} is not a column", c.name()),
25            Self::DuplicateKeyColumn(c) => write!(f, "key column {} is repeated", c.name()),
26            Self::NullableKeyColumn(c) => write!(f, "key column {} is nullable", c.name()),
27            Self::InvalidDecimal {
28                column,
29                precision,
30                scale,
31            } => write!(
32                f,
33                "column {} has an invalid decimal({precision},{scale})",
34                column.name()
35            ),
36        }
37    }
38}
39
40impl core::error::Error for SchemaError {}