use sea_orm::sea_query::{ColumnDef, Expr, IntoIden, Table, TableCreateStatement};
use sea_orm_migration::{prelude::Iden, sea_query};
#[derive(Iden)]
enum GeneralIds {
CreatedAt,
UpdatedAt,
}
pub fn table_auto<T>(name: T) -> TableCreateStatement
where
T: IntoIden + 'static,
{
timestamps(Table::create().table(name).if_not_exists().clone())
}
pub fn pk_auto<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name)
.integer()
.not_null()
.auto_increment()
.primary_key()
.clone()
}
pub fn uuid<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).unique_key().uuid().not_null().clone()
}
#[must_use]
pub fn timestamps(t: TableCreateStatement) -> TableCreateStatement {
let mut t = t;
t.col(
ColumnDef::new(GeneralIds::CreatedAt)
.date_time()
.not_null()
.clone()
.default(Expr::current_timestamp()),
)
.col(timestamp(GeneralIds::UpdatedAt).default(Expr::current_timestamp()));
t.clone()
}
pub fn timestamp_null<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).date_time().clone()
}
pub fn timestamp<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).date_time().not_null().clone()
}
pub fn integer<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).integer().not_null().clone()
}
pub fn integer_null<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).integer().clone()
}
pub fn integer_uniq<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).integer().unique_key().clone()
}
pub fn string_uniq<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
string(name).unique_key().clone()
}
pub fn string_null<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).string().clone()
}
pub fn text<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).text().clone()
}
pub fn string<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
string_null(name).not_null().clone()
}
pub fn bool_null<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).boolean().clone()
}
pub fn bool<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
bool_null(name).not_null().clone()
}