create_table_from_entity with DB backend
This commit is contained in:
parent
1ee2dab3b7
commit
8858d64dd0
@ -1,19 +1,19 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
unpack_table_ref, ColumnTrait, EntityTrait, Identity, Iterable, PrimaryKeyToColumn,
|
unpack_table_ref, ColumnTrait, DbBackend, EntityTrait, Identity, Iterable, PrimaryKeyToColumn,
|
||||||
PrimaryKeyTrait, RelationTrait, Schema,
|
PrimaryKeyTrait, RelationTrait, Schema,
|
||||||
};
|
};
|
||||||
use sea_query::{ColumnDef, ForeignKeyCreateStatement, Iden, Index, TableCreateStatement};
|
use sea_query::{ColumnDef, ForeignKeyCreateStatement, Iden, Index, TableCreateStatement};
|
||||||
|
|
||||||
impl Schema {
|
impl Schema {
|
||||||
pub fn create_table_from_entity<E>(entity: E) -> TableCreateStatement
|
pub fn create_table_from_entity<E>(entity: E, db_backend: DbBackend) -> TableCreateStatement
|
||||||
where
|
where
|
||||||
E: EntityTrait,
|
E: EntityTrait,
|
||||||
{
|
{
|
||||||
create_table_from_entity(entity)
|
create_table_from_entity(entity, db_backend)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn create_table_from_entity<E>(entity: E) -> TableCreateStatement
|
pub(crate) fn create_table_from_entity<E>(entity: E, db_backend: DbBackend) -> TableCreateStatement
|
||||||
where
|
where
|
||||||
E: EntityTrait,
|
E: EntityTrait,
|
||||||
{
|
{
|
||||||
@ -21,7 +21,9 @@ where
|
|||||||
|
|
||||||
for column in E::Column::iter() {
|
for column in E::Column::iter() {
|
||||||
let orm_column_def = column.def();
|
let orm_column_def = column.def();
|
||||||
let types = orm_column_def.col_type.into();
|
let types = match db_backend {
|
||||||
|
_ => orm_column_def.col_type.into(),
|
||||||
|
};
|
||||||
let mut column_def = ColumnDef::new_with_type(column, types);
|
let mut column_def = ColumnDef::new_with_type(column, types);
|
||||||
if !orm_column_def.null {
|
if !orm_column_def.null {
|
||||||
column_def.not_null();
|
column_def.not_null();
|
||||||
@ -121,13 +123,14 @@ where
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use crate::{sea_query::*, tests_cfg::*, Schema};
|
use crate::{sea_query::*, tests_cfg::*, DbBackend, Schema};
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_create_table_from_entity() {
|
fn test_create_table_from_entity() {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
Schema::create_table_from_entity(CakeFillingPrice).to_string(MysqlQueryBuilder),
|
Schema::create_table_from_entity(CakeFillingPrice, DbBackend::MySql)
|
||||||
|
.to_string(MysqlQueryBuilder),
|
||||||
Table::create()
|
Table::create()
|
||||||
.table(CakeFillingPrice)
|
.table(CakeFillingPrice)
|
||||||
.col(
|
.col(
|
||||||
|
@ -95,7 +95,10 @@ where
|
|||||||
|
|
||||||
let stmt = builder.build(create);
|
let stmt = builder.build(create);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
builder.build(&Schema::create_table_from_entity(entity)),
|
builder.build(&Schema::create_table_from_entity(
|
||||||
|
entity,
|
||||||
|
db.get_database_backend()
|
||||||
|
)),
|
||||||
stmt
|
stmt
|
||||||
);
|
);
|
||||||
db.execute(stmt).await
|
db.execute(stmt).await
|
||||||
|
Loading…
x
Reference in New Issue
Block a user