diff --git a/examples/bakery.sql b/examples/bakery.sql index 3ea83fa8..2335b7d9 100644 --- a/examples/bakery.sql +++ b/examples/bakery.sql @@ -2,7 +2,7 @@ DROP TABLE IF EXISTS `cake`; CREATE TABLE `cake` ( `id` int NOT NULL AUTO_INCREMENT, - `name` varchar(255) DEFAULT NULL, + `name` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; @@ -14,9 +14,10 @@ DROP TABLE IF EXISTS `fruit`; CREATE TABLE `fruit` ( `id` int NOT NULL AUTO_INCREMENT, - `name` varchar(255) DEFAULT NULL, + `name` varchar(255) NOT NULL, `cake_id` int DEFAULT NULL, - PRIMARY KEY (`id`) + PRIMARY KEY (`id`), + CONSTRAINT `fk-fruit-cake` FOREIGN KEY (`cake_id`) REFERENCES `cake` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; INSERT INTO `fruit` (`id`, `name`, `cake_id`) VALUES @@ -36,7 +37,7 @@ DROP TABLE IF EXISTS `filling`; CREATE TABLE `filling` ( `id` int NOT NULL AUTO_INCREMENT, - `name` varchar(255) DEFAULT NULL, + `name` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; @@ -50,7 +51,9 @@ DROP TABLE IF EXISTS `cake_filling`; CREATE TABLE `cake_filling` ( `cake_id` int NOT NULL, `filling_id` int NOT NULL, - PRIMARY KEY (`cake_id`, `filling_id`) + PRIMARY KEY (`cake_id`, `filling_id`), + CONSTRAINT `fk-cake_filling-cake` FOREIGN KEY (`cake_id`) REFERENCES `cake` (`id`), + CONSTRAINT `fk-cake_filling-filling` FOREIGN KEY (`filling_id`) REFERENCES `filling` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; INSERT INTO `cake_filling` (`cake_id`, `filling_id`) VALUES diff --git a/examples/codegen/Cargo.toml b/examples/codegen/Cargo.toml index 2328ba1f..be363716 100644 --- a/examples/codegen/Cargo.toml +++ b/examples/codegen/Cargo.toml @@ -11,4 +11,4 @@ sea-orm-codegen = { path = "../../sea-orm-codegen" } sea-query = { path = "../../../sea-query" } strum = { version = "^0.20", features = [ "derive" ] } serde_json = { version = "^1" } -quote = "1" +quote = { version = "^1" } diff --git a/examples/codegen/src/out/cake.rs b/examples/codegen/src/out/cake.rs index 436753bd..87ee5f1a 100644 --- a/examples/codegen/src/out/cake.rs +++ b/examples/codegen/src/out/cake.rs @@ -14,7 +14,7 @@ impl EntityName for Entity { #[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel)] pub struct Model { pub id: i32, - pub name: Option, + pub name: String, } #[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)] @@ -42,10 +42,10 @@ pub enum Relation { impl ColumnTrait for Column { type EntityName = Entity; - fn def(&self) -> ColumnType { + fn def(&self) -> ColumnDef { match self { - Self::Id => ColumnType::Integer(Some(11u32)), - Self::Name => ColumnType::String(Some(255u32)), + Self::Id => ColumnType::Integer.def(), + Self::Name => ColumnType::String(Some(255u32)).def(), } } } diff --git a/examples/codegen/src/out/cake_filling.rs b/examples/codegen/src/out/cake_filling.rs index 7febba4e..b35279d4 100644 --- a/examples/codegen/src/out/cake_filling.rs +++ b/examples/codegen/src/out/cake_filling.rs @@ -43,10 +43,10 @@ pub enum Relation { impl ColumnTrait for Column { type EntityName = Entity; - fn def(&self) -> ColumnType { + fn def(&self) -> ColumnDef { match self { - Self::CakeId => ColumnType::Integer(Some(11u32)), - Self::FillingId => ColumnType::Integer(Some(11u32)), + Self::CakeId => ColumnType::Integer.def(), + Self::FillingId => ColumnType::Integer.def(), } } } diff --git a/examples/codegen/src/out/filling.rs b/examples/codegen/src/out/filling.rs index 7e5a5bd8..4134652f 100644 --- a/examples/codegen/src/out/filling.rs +++ b/examples/codegen/src/out/filling.rs @@ -14,7 +14,7 @@ impl EntityName for Entity { #[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel)] pub struct Model { pub id: i32, - pub name: Option, + pub name: String, } #[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)] @@ -41,10 +41,10 @@ pub enum Relation { impl ColumnTrait for Column { type EntityName = Entity; - fn def(&self) -> ColumnType { + fn def(&self) -> ColumnDef { match self { - Self::Id => ColumnType::Integer(Some(11u32)), - Self::Name => ColumnType::String(Some(255u32)), + Self::Id => ColumnType::Integer.def(), + Self::Name => ColumnType::String(Some(255u32)).def(), } } } diff --git a/examples/codegen/src/out/fruit.rs b/examples/codegen/src/out/fruit.rs index c2d2a7b5..6e190749 100644 --- a/examples/codegen/src/out/fruit.rs +++ b/examples/codegen/src/out/fruit.rs @@ -14,7 +14,7 @@ impl EntityName for Entity { #[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel)] pub struct Model { pub id: i32, - pub name: Option, + pub name: String, pub cake_id: Option, } @@ -43,11 +43,11 @@ pub enum Relation { impl ColumnTrait for Column { type EntityName = Entity; - fn def(&self) -> ColumnType { + fn def(&self) -> ColumnDef { match self { - Self::Id => ColumnType::Integer(Some(11u32)), - Self::Name => ColumnType::String(Some(255u32)), - Self::CakeId => ColumnType::Integer(Some(11u32)), + Self::Id => ColumnType::Integer.def(), + Self::Name => ColumnType::String(Some(255u32)).def(), + Self::CakeId => ColumnType::Integer.def(), } } } diff --git a/examples/codegen/src/out/fruit_copy.rs b/examples/codegen/src/out/fruit_copy.rs deleted file mode 100644 index e3cdc525..00000000 --- a/examples/codegen/src/out/fruit_copy.rs +++ /dev/null @@ -1,63 +0,0 @@ -//! SeaORM Entity. Generated by sea-orm-codegen 0.1.0 - -use sea_orm::entity::prelude::*; - -#[derive(Copy, Clone, Default, Debug, DeriveEntity)] -pub struct Entity; - -impl EntityName for Entity { - fn table_name(&self) -> &str { - "fruit_copy" - } -} - -#[derive(Clone, Debug, PartialEq, DeriveModel, DeriveActiveModel)] -pub struct Model { - pub id: i32, - pub name: Option, - pub cake_id: Option, -} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveColumn)] -pub enum Column { - Id, - Name, - CakeId, -} - -#[derive(Copy, Clone, Debug, EnumIter, DerivePrimaryKey)] -pub enum PrimaryKey { - Id, -} - -impl PrimaryKeyTrait for PrimaryKey { - fn auto_increment() -> bool { - true - } -} - -#[derive(Copy, Clone, Debug, EnumIter)] -pub enum Relation {} - -impl ColumnTrait for Column { - type EntityName = Entity; - fn def(&self) -> ColumnType { - match self { - Self::Id => ColumnType::Integer(Some(11u32)), - Self::Name => ColumnType::String(Some(255u32)), - Self::CakeId => ColumnType::Integer(Some(11u32)), - } - } -} - -impl RelationTrait for Relation { - fn def(&self) -> RelationDef { - match self { - _ => panic!("No RelationDef"), - } - } -} - -impl Model {} - -impl ActiveModelBehavior for ActiveModel {} diff --git a/examples/codegen/src/out/mod.rs b/examples/codegen/src/out/mod.rs index 2644c7e7..006f7e80 100644 --- a/examples/codegen/src/out/mod.rs +++ b/examples/codegen/src/out/mod.rs @@ -4,4 +4,3 @@ pub mod cake; pub mod cake_filling; pub mod filling; pub mod fruit; -pub mod fruit_copy; diff --git a/examples/codegen/src/out/prelude.rs b/examples/codegen/src/out/prelude.rs index a4d3cd7e..b4c1c94f 100644 --- a/examples/codegen/src/out/prelude.rs +++ b/examples/codegen/src/out/prelude.rs @@ -4,4 +4,3 @@ pub use super::cake::Entity as Cake; pub use super::cake_filling::Entity as CakeFilling; pub use super::filling::Entity as Filling; pub use super::fruit::Entity as Fruit; -pub use super::fruit_copy::Entity as FruitCopy; diff --git a/examples/sqlx-mysql/src/example_cake.rs b/examples/sqlx-mysql/src/example_cake.rs index 63126cfd..003d700c 100644 --- a/examples/sqlx-mysql/src/example_cake.rs +++ b/examples/sqlx-mysql/src/example_cake.rs @@ -40,10 +40,10 @@ pub enum Relation { impl ColumnTrait for Column { type EntityName = Entity; - fn def(&self) -> ColumnType { + fn def(&self) -> ColumnDef { match self { - Self::Id => ColumnType::Integer(None), - Self::Name => ColumnType::String(None), + Self::Id => ColumnType::Integer.def(), + Self::Name => ColumnType::String(None).def(), } } } diff --git a/examples/sqlx-mysql/src/example_cake_filling.rs b/examples/sqlx-mysql/src/example_cake_filling.rs index bae780af..d1974a04 100644 --- a/examples/sqlx-mysql/src/example_cake_filling.rs +++ b/examples/sqlx-mysql/src/example_cake_filling.rs @@ -42,10 +42,10 @@ pub enum Relation { impl ColumnTrait for Column { type EntityName = Entity; - fn def(&self) -> ColumnType { + fn def(&self) -> ColumnDef { match self { - Self::CakeId => ColumnType::Integer(None), - Self::FillingId => ColumnType::Integer(None), + Self::CakeId => ColumnType::Integer.def(), + Self::FillingId => ColumnType::Integer.def(), } } } diff --git a/examples/sqlx-mysql/src/example_filling.rs b/examples/sqlx-mysql/src/example_filling.rs index c047c8f5..d2dece8a 100644 --- a/examples/sqlx-mysql/src/example_filling.rs +++ b/examples/sqlx-mysql/src/example_filling.rs @@ -38,10 +38,10 @@ pub enum Relation {} impl ColumnTrait for Column { type EntityName = Entity; - fn def(&self) -> ColumnType { + fn def(&self) -> ColumnDef { match self { - Self::Id => ColumnType::Integer(None), - Self::Name => ColumnType::String(None), + Self::Id => ColumnType::Integer.def(), + Self::Name => ColumnType::String(None).def(), } } } diff --git a/examples/sqlx-mysql/src/example_fruit.rs b/examples/sqlx-mysql/src/example_fruit.rs index 15e14768..48daac55 100644 --- a/examples/sqlx-mysql/src/example_fruit.rs +++ b/examples/sqlx-mysql/src/example_fruit.rs @@ -40,11 +40,11 @@ pub enum Relation {} impl ColumnTrait for Column { type EntityName = Entity; - fn def(&self) -> ColumnType { + fn def(&self) -> ColumnDef { match self { - Self::Id => ColumnType::Integer(None), - Self::Name => ColumnType::String(None), - Self::CakeId => ColumnType::Integer(None), + Self::Id => ColumnType::Integer.def(), + Self::Name => ColumnType::String(None).def(), + Self::CakeId => ColumnType::Integer.def(), } } } diff --git a/sea-orm-codegen/Cargo.toml b/sea-orm-codegen/Cargo.toml index f3285484..70210526 100644 --- a/sea-orm-codegen/Cargo.toml +++ b/sea-orm-codegen/Cargo.toml @@ -20,7 +20,7 @@ sea-orm = { path = "../", features = [ "sqlx-mysql", "runtime-async-std-native-t sea-schema = { path = "../../sea-schema", default-features = false, features = [ "sqlx-mysql", "runtime-async-std-native-tls", "discovery", "writer" ] } sea-query = { path = "../../sea-query", version = "^0.12" } sqlx = { version = "^0.5", features = [ "mysql", "runtime-async-std-native-tls" ] } -syn = { version = "1", default-features = false, features = [ "derive", "parsing", "proc-macro", "printing" ] } -quote = "1" -heck = "0.3" -proc-macro2 = "1" +syn = { version = "^1", default-features = false, features = [ "derive", "parsing", "proc-macro", "printing" ] } +quote = "^1" +heck = "^0.3" +proc-macro2 = "^1" diff --git a/sea-orm-codegen/src/entity/column.rs b/sea-orm-codegen/src/entity/column.rs index e5db112e..b575057f 100644 --- a/sea-orm-codegen/src/entity/column.rs +++ b/sea-orm-codegen/src/entity/column.rs @@ -36,9 +36,9 @@ impl Column { ColumnType::SmallInteger(_) => format_ident!("i16"), ColumnType::Integer(_) => format_ident!("i32"), ColumnType::BigInteger(_) => format_ident!("i64"), - ColumnType::Float(_) - | ColumnType::Decimal(_) - | ColumnType::Money(_) => format_ident!("f32"), + ColumnType::Float(_) | ColumnType::Decimal(_) | ColumnType::Money(_) => { + format_ident!("f32") + } ColumnType::Double(_) => format_ident!("f64"), ColumnType::Binary(_) => format_ident!("Vec"), ColumnType::Boolean => format_ident!("bool"), @@ -49,72 +49,42 @@ impl Column { } } - pub fn get_type(&self) -> TokenStream { + pub fn get_def(&self) -> TokenStream { match &self.col_type { ColumnType::Char(s) => match s { - Some(s) => quote! { ColumnType::Char(Some(#s)) }, - None => quote! { ColumnType::Char(None) }, + Some(s) => quote! { ColumnType::Char(Some(#s)).def() }, + None => quote! { ColumnType::Char(None).def() }, }, ColumnType::String(s) => match s { - Some(s) => quote! { ColumnType::String(Some(#s)) }, - None => quote! { ColumnType::String(None) }, - }, - ColumnType::Text => quote! { ColumnType::Text }, - ColumnType::TinyInteger(s) => match s { - Some(s) => quote! { ColumnType::TinyInteger(Some(#s)) }, - None => quote! { ColumnType::TinyInteger(None) }, - }, - ColumnType::SmallInteger(s) => match s { - Some(s) => quote! { ColumnType::SmallInteger(Some(#s)) }, - None => quote! { ColumnType::SmallInteger(None) }, - }, - ColumnType::Integer(s) => match s { - Some(s) => quote! { ColumnType::Integer(Some(#s)) }, - None => quote! { ColumnType::Integer(None) }, - }, - ColumnType::BigInteger(s) => match s { - Some(s) => quote! { ColumnType::BigInteger(Some(#s)) }, - None => quote! { ColumnType::BigInteger(None) }, - }, - ColumnType::Float(s) => match s { - Some(s) => quote! { ColumnType::Float(Some(#s)) }, - None => quote! { ColumnType::Float(None) }, - }, - ColumnType::Double(s) => match s { - Some(s) => quote! { ColumnType::Double(Some(#s)) }, - None => quote! { ColumnType::Double(None) }, + Some(s) => quote! { ColumnType::String(Some(#s)).def() }, + None => quote! { ColumnType::String(None).def() }, }, + ColumnType::Text => quote! { ColumnType::Text.def() }, + ColumnType::TinyInteger(s) => quote! { ColumnType::TinyInteger.def() }, + ColumnType::SmallInteger(s) => quote! { ColumnType::SmallInteger.def() }, + ColumnType::Integer(s) => quote! { ColumnType::Integer.def() }, + ColumnType::BigInteger(s) => quote! { ColumnType::BigInteger.def() }, + ColumnType::Float(s) => quote! { ColumnType::Float.def() }, + ColumnType::Double(s) => quote! { ColumnType::Double.def() }, ColumnType::Decimal(s) => match s { - Some((s1, s2)) => quote! { ColumnType::Decimal(Some((#s1, #s2))) }, - None => quote! { ColumnType::Decimal(None) }, + Some((s1, s2)) => quote! { ColumnType::Decimal(Some((#s1, #s2))).def() }, + None => quote! { ColumnType::Decimal(None).def() }, }, - ColumnType::DateTime(s) => match s { - Some(s) => quote! { ColumnType::DateTime(Some(#s)) }, - None => quote! { ColumnType::DateTime(None) }, - }, - ColumnType::Timestamp(s) => match s { - Some(s) => quote! { ColumnType::Timestamp(Some(#s)) }, - None => quote! { ColumnType::Timestamp(None) }, - }, - ColumnType::Time(s) => match s { - Some(s) => quote! { ColumnType::Time(Some(#s)) }, - None => quote! { ColumnType::Time(None) }, - }, - ColumnType::Date => quote! { ColumnType::Date }, - ColumnType::Binary(s) => match s { - Some(s) => quote! { ColumnType::Binary(Some(#s)) }, - None => quote! { ColumnType::Binary(None) }, - }, - ColumnType::Boolean => quote! { ColumnType::Boolean }, + ColumnType::DateTime(s) => quote! { ColumnType::DateTime.def() }, + ColumnType::Timestamp(s) => quote! { ColumnType::Timestamp.def() }, + ColumnType::Time(s) => quote! { ColumnType::Time.def() }, + ColumnType::Date => quote! { ColumnType::Date.def() }, + ColumnType::Binary(s) => quote! { ColumnType::Binary.def() }, + ColumnType::Boolean => quote! { ColumnType::Boolean.def() }, ColumnType::Money(s) => match s { - Some((s1, s2)) => quote! { ColumnType::Money(Some((#s1, #s2))) }, - None => quote! { ColumnType::Money(None) }, + Some((s1, s2)) => quote! { ColumnType::Money(Some((#s1, #s2))).def() }, + None => quote! { ColumnType::Money(None).def() }, }, - ColumnType::Json => quote! { ColumnType::Json }, - ColumnType::JsonBinary => quote! { ColumnType::JsonBinary }, + ColumnType::Json => quote! { ColumnType::Json.def() }, + ColumnType::JsonBinary => quote! { ColumnType::JsonBinary.def() }, ColumnType::Custom(s) => { let s = s.to_string(); - quote! { ColumnType::Custom(sea_query::SeaRc::new(sea_query::Alias::new(#s))) } + quote! { ColumnType::Custom(#s.to_owned()).def() } } } } diff --git a/sea-orm-codegen/src/entity/entity.rs b/sea-orm-codegen/src/entity/entity.rs index 98d7047e..788002ce 100644 --- a/sea-orm-codegen/src/entity/entity.rs +++ b/sea-orm-codegen/src/entity/entity.rs @@ -50,11 +50,11 @@ impl Entity { .collect() } - pub fn get_column_types(&self) -> Vec { + pub fn get_column_defs(&self) -> Vec { self.columns .clone() .into_iter() - .map(|col| col.get_type()) + .map(|col| col.get_def()) .collect() } diff --git a/sea-orm-codegen/src/entity/writer.rs b/sea-orm-codegen/src/entity/writer.rs index 5b200026..73e12d07 100644 --- a/sea-orm-codegen/src/entity/writer.rs +++ b/sea-orm-codegen/src/entity/writer.rs @@ -201,14 +201,14 @@ impl EntityWriter { pub fn gen_impl_column_trait(entity: &Entity) -> TokenStream { let column_names_camel_case = entity.get_column_names_camel_case(); - let column_types = entity.get_column_types(); + let column_defs = entity.get_column_defs(); quote! { impl ColumnTrait for Column { type EntityName = Entity; - fn def(&self) -> ColumnType { + fn def(&self) -> ColumnDef { match self { - #(Self::#column_names_camel_case => #column_types),* + #(Self::#column_names_camel_case => #column_defs),* } } } diff --git a/sea-orm-macros/Cargo.toml b/sea-orm-macros/Cargo.toml index 9d8854a0..eabece94 100644 --- a/sea-orm-macros/Cargo.toml +++ b/sea-orm-macros/Cargo.toml @@ -17,7 +17,7 @@ path = "src/lib.rs" proc-macro = true [dependencies] -syn = { version = "1", default-features = false, features = [ "derive", "parsing", "proc-macro", "printing" ] } -quote = "1" -heck = "0.3" -proc-macro2 = "1" +syn = { version = "^1", default-features = false, features = [ "derive", "parsing", "proc-macro", "printing" ] } +quote = "^1" +heck = "^0.3" +proc-macro2 = "^1" diff --git a/src/entity/column.rs b/src/entity/column.rs index ae13282b..e31af001 100644 --- a/src/entity/column.rs +++ b/src/entity/column.rs @@ -9,10 +9,10 @@ pub struct ColumnDef { pub(crate) indexed: bool, } -#[derive(Debug, Copy, Clone)] +#[derive(Debug, Clone)] pub enum ColumnType { - Char, - String, + Char(Option), + String(Option), Text, TinyInteger, SmallInteger, @@ -20,16 +20,17 @@ pub enum ColumnType { BigInteger, Float, Double, - Decimal, + Decimal(Option<(u32, u32)>), DateTime, Timestamp, Time, Date, Binary, Boolean, - Money, + Money(Option<(u32, u32)>), Json, JsonBinary, + Custom(String), } macro_rules! bind_oper { @@ -215,10 +216,10 @@ pub trait ColumnTrait: IdenStatic + Iterable { bind_vec_func!(is_not_in); } -impl From for ColumnDef { - fn from(col_type: ColumnType) -> Self { - Self { - col_type, +impl ColumnType { + pub fn def(self) -> ColumnDef { + ColumnDef { + col_type: self, null: false, unique: false, indexed: false, @@ -229,8 +230,8 @@ impl From for ColumnDef { impl Into for ColumnType { fn into(self) -> sea_query::ColumnType { match self { - Self::Char => sea_query::ColumnType::Char(None), - Self::String => sea_query::ColumnType::String(None), + Self::Char(s) => sea_query::ColumnType::Char(s), + Self::String(s) => sea_query::ColumnType::String(s), Self::Text => sea_query::ColumnType::Text, Self::TinyInteger => sea_query::ColumnType::TinyInteger(None), Self::SmallInteger => sea_query::ColumnType::SmallInteger(None), @@ -238,16 +239,19 @@ impl Into for ColumnType { Self::BigInteger => sea_query::ColumnType::BigInteger(None), Self::Float => sea_query::ColumnType::Float(None), Self::Double => sea_query::ColumnType::Double(None), - Self::Decimal => sea_query::ColumnType::Decimal(None), + Self::Decimal(s) => sea_query::ColumnType::Decimal(s), Self::DateTime => sea_query::ColumnType::DateTime(None), Self::Timestamp => sea_query::ColumnType::Timestamp(None), Self::Time => sea_query::ColumnType::Time(None), Self::Date => sea_query::ColumnType::Date, Self::Binary => sea_query::ColumnType::Binary(None), Self::Boolean => sea_query::ColumnType::Boolean, - Self::Money => sea_query::ColumnType::Money(None), + Self::Money(s) => sea_query::ColumnType::Money(s), Self::Json => sea_query::ColumnType::Json, Self::JsonBinary => sea_query::ColumnType::JsonBinary, + Self::Custom(s) => { + sea_query::ColumnType::Custom(sea_query::SeaRc::new(sea_query::Alias::new(&s))) + } } } } @@ -255,8 +259,8 @@ impl Into for ColumnType { impl From for ColumnType { fn from(col_type: sea_query::ColumnType) -> Self { match col_type { - sea_query::ColumnType::Char(_) => Self::Char, - sea_query::ColumnType::String(_) => Self::String, + sea_query::ColumnType::Char(s) => Self::Char(s), + sea_query::ColumnType::String(s) => Self::String(s), sea_query::ColumnType::Text => Self::Text, sea_query::ColumnType::TinyInteger(_) => Self::TinyInteger, sea_query::ColumnType::SmallInteger(_) => Self::SmallInteger, @@ -264,17 +268,17 @@ impl From for ColumnType { sea_query::ColumnType::BigInteger(_) => Self::BigInteger, sea_query::ColumnType::Float(_) => Self::Float, sea_query::ColumnType::Double(_) => Self::Double, - sea_query::ColumnType::Decimal(_) => Self::Decimal, + sea_query::ColumnType::Decimal(s) => Self::Decimal(s), sea_query::ColumnType::DateTime(_) => Self::DateTime, sea_query::ColumnType::Timestamp(_) => Self::Timestamp, sea_query::ColumnType::Time(_) => Self::Time, sea_query::ColumnType::Date => Self::Date, sea_query::ColumnType::Binary(_) => Self::Binary, sea_query::ColumnType::Boolean => Self::Boolean, - sea_query::ColumnType::Money(_) => Self::Money, + sea_query::ColumnType::Money(s) => Self::Money(s), sea_query::ColumnType::Json => Self::Json, sea_query::ColumnType::JsonBinary => Self::JsonBinary, - sea_query::ColumnType::Custom(_) => panic!("custom column type unsupported"), + sea_query::ColumnType::Custom(s) => Self::Custom(s.to_string()), } } } diff --git a/src/tests_cfg/cake.rs b/src/tests_cfg/cake.rs index 9d48b8ec..bd2c4c0c 100644 --- a/src/tests_cfg/cake.rs +++ b/src/tests_cfg/cake.rs @@ -43,8 +43,8 @@ impl ColumnTrait for Column { fn def(&self) -> ColumnDef { match self { - Self::Id => ColumnType::Integer.into(), - Self::Name => ColumnType::String.into(), + Self::Id => ColumnType::Integer.def(), + Self::Name => ColumnType::String(None).def(), } } } diff --git a/src/tests_cfg/cake_filling.rs b/src/tests_cfg/cake_filling.rs index 2dff2e43..fbd95a70 100644 --- a/src/tests_cfg/cake_filling.rs +++ b/src/tests_cfg/cake_filling.rs @@ -45,8 +45,8 @@ impl ColumnTrait for Column { fn def(&self) -> ColumnDef { match self { - Self::CakeId => ColumnType::Integer.into(), - Self::FillingId => ColumnType::Integer.into(), + Self::CakeId => ColumnType::Integer.def(), + Self::FillingId => ColumnType::Integer.def(), } } } diff --git a/src/tests_cfg/filling.rs b/src/tests_cfg/filling.rs index 8f58aa85..9dbe78f1 100644 --- a/src/tests_cfg/filling.rs +++ b/src/tests_cfg/filling.rs @@ -41,8 +41,8 @@ impl ColumnTrait for Column { fn def(&self) -> ColumnDef { match self { - Self::Id => ColumnType::Integer.into(), - Self::Name => ColumnType::String.into(), + Self::Id => ColumnType::Integer.def(), + Self::Name => ColumnType::String(None).def(), } } } diff --git a/src/tests_cfg/fruit.rs b/src/tests_cfg/fruit.rs index 64817fcd..85a73081 100644 --- a/src/tests_cfg/fruit.rs +++ b/src/tests_cfg/fruit.rs @@ -43,9 +43,9 @@ impl ColumnTrait for Column { fn def(&self) -> ColumnDef { match self { - Self::Id => ColumnType::Integer.into(), - Self::Name => ColumnType::String.into(), - Self::CakeId => ColumnType::Integer.into(), + Self::Id => ColumnType::Integer.def(), + Self::Name => ColumnType::String(None).def(), + Self::CakeId => ColumnType::Integer.def(), } } }