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()
}
#[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 uuid<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).unique_key().uuid().not_null().clone()
}
pub fn string_null<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).string().clone()
}
pub fn timestamptz_null<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).timestamp_with_time_zone().clone()
}
pub fn timestamptz<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name)
.timestamp_with_time_zone()
.not_null()
.clone()
}
pub fn string<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
string_null(name).not_null().clone()
}
pub fn string_uniq<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
string(name).unique_key().clone()
}
pub fn text_null<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).text().clone()
}
pub fn text<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).text().clone()
}
pub fn tiny_integer_null<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).tiny_integer().clone()
}
pub fn tiny_integer<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).tiny_integer().not_null().clone()
}
pub fn tiny_integer_uniq<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).tiny_integer().unique_key().clone()
}
pub fn small_integer_null<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).small_integer().clone()
}
pub fn small_integer<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).small_integer().not_null().clone()
}
pub fn small_integer_uniq<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).small_integer().unique_key().clone()
}
pub fn integer_null<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).integer().clone()
}
pub fn integer<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).integer().not_null().clone()
}
pub fn integer_uniq<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).integer().unique_key().clone()
}
pub fn big_integer_null<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).big_integer().clone()
}
pub fn big_integer<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).big_integer().not_null().clone()
}
pub fn big_integer_uniq<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).big_integer().unique_key().clone()
}
pub fn float_null<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).float().clone()
}
pub fn float<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).float().not_null().clone()
}
pub fn double_null<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).double().clone()
}
pub fn double<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).double().not_null().clone()
}
pub fn decimal_null<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).decimal().clone()
}
pub fn decimal<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).decimal().not_null().clone()
}
pub fn decimal_len_null<T>(name: T, precision: u32, scale: u32) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).decimal_len(precision, scale).clone()
}
pub fn decimal_len<T>(name: T, precision: u32, scale: u32) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name)
.decimal_len(precision, scale)
.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,
{
ColumnDef::new(name).boolean().not_null().clone()
}
pub fn date_null<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).date().clone()
}
pub fn date<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).date().not_null().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 json<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).json().not_null().clone()
}
pub fn json_null<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).json().clone()
}
pub fn jsonb<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).json_binary().not_null().clone()
}
pub fn jsonb_null<T>(name: T) -> ColumnDef
where
T: IntoIden,
{
ColumnDef::new(name).json_binary().clone()
}