use vespertide_core::{ColumnDef, ColumnType, TableConstraint, TableDef};
pub(crate) fn col(name: &str, ty: ColumnType) -> ColumnDef {
ColumnDef::new(name, ty, true)
}
pub(crate) fn col_n(name: &str, ty: ColumnType, nullable: bool) -> ColumnDef {
ColumnDef::new(name, ty, nullable)
}
pub(crate) fn table_def(
name: &str,
columns: Vec<ColumnDef>,
constraints: Vec<TableConstraint>,
) -> TableDef {
TableDef {
name: name.into(),
description: None,
columns,
constraints,
}
}
pub(crate) fn joined_sql(
backend: crate::sql::DatabaseBackend,
queries: &[crate::sql::BuiltQuery],
) -> String {
queries
.iter()
.map(|q| q.build(backend))
.collect::<Vec<String>>()
.join("\n")
}
pub(crate) fn joined_sql_semicolon(
backend: crate::sql::DatabaseBackend,
queries: &[crate::sql::BuiltQuery],
) -> String {
queries
.iter()
.map(|q| q.build(backend))
.collect::<Vec<String>>()
.join(";\n")
}
pub(crate) fn backend_tag(backend: crate::sql::DatabaseBackend) -> &'static str {
match backend {
crate::sql::DatabaseBackend::Postgres => "postgres",
crate::sql::DatabaseBackend::MySql => "mysql",
crate::sql::DatabaseBackend::Sqlite => "sqlite",
}
}