use crate::prelude::{BoxedSql, ColumnType, Entity, EntityColumn, VirtualColumn};
pub trait Column<T: ColumnType, U: Entity>: UntypedColumn<U> {}
impl<T: ColumnType, U: Entity> Column<T, U> for VirtualColumn<T, U> {}
impl<T: ColumnType, U: Entity> Column<T, U> for VirtualColumn<Option<T>, U> {}
impl<T: ColumnType, U: Entity> Column<T, U> for EntityColumn<T, U> {}
impl<T: ColumnType, U: Entity> Column<T, U> for EntityColumn<Option<T>, U> {}
pub trait UntypedColumn<U: Entity>: Sync {
fn get_sql(&self) -> BoxedSql;
}
impl<T: ColumnType, U: Entity> UntypedColumn<U> for EntityColumn<T, U> {
fn get_sql(&self) -> BoxedSql {
self.get_sql()
}
}
impl<T: ColumnType, U: Entity> UntypedColumn<U> for VirtualColumn<T, U> {
fn get_sql(&self) -> BoxedSql {
self.get_sql()
}
}