use vibesql_types::SqlValue;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ColumnTypeClass {
Int64,
Float64,
String,
Bool,
Date,
Time,
Timestamp,
Interval,
Vector,
Blob,
Null,
}
impl ColumnTypeClass {
pub fn from_sql_value(value: &SqlValue) -> Self {
match value {
SqlValue::Integer(_) | SqlValue::Bigint(_) | SqlValue::Smallint(_) => {
ColumnTypeClass::Int64
}
SqlValue::Float(_)
| SqlValue::Double(_)
| SqlValue::Real(_)
| SqlValue::Numeric(_)
| SqlValue::Unsigned(_) => ColumnTypeClass::Float64,
SqlValue::Varchar(_) | SqlValue::Character(_) => ColumnTypeClass::String,
SqlValue::Boolean(_) => ColumnTypeClass::Bool,
SqlValue::Date(_) => ColumnTypeClass::Date,
SqlValue::Time(_) => ColumnTypeClass::Time,
SqlValue::Timestamp(_) => ColumnTypeClass::Timestamp,
SqlValue::Interval(_) => ColumnTypeClass::Interval,
SqlValue::Vector(_) => ColumnTypeClass::Vector,
SqlValue::Blob(_) => ColumnTypeClass::Blob,
SqlValue::Null => ColumnTypeClass::Null,
}
}
}