diff --git a/sea-orm-macros/src/derives/active_model.rs b/sea-orm-macros/src/derives/active_model.rs index 1308d75e..241d9536 100644 --- a/sea-orm-macros/src/derives/active_model.rs +++ b/sea-orm-macros/src/derives/active_model.rs @@ -47,29 +47,29 @@ pub fn expand_derive_active_model(ident: Ident, data: Data) -> syn::Result sea_orm::ActiveValue { + fn take(&mut self, c: ::Column) -> sea_orm::ActiveValue { match c { - #(Self::Column::#name => std::mem::take(&mut self.#field).into_wrapped_value()),* + #(::Column::#name => std::mem::take(&mut self.#field).into_wrapped_value()),* } } - fn get(&self, c: Self::Column) -> sea_orm::ActiveValue { + fn get(&self, c: ::Column) -> sea_orm::ActiveValue { match c { - #(Self::Column::#name => self.#field.clone().into_wrapped_value()),* + #(::Column::#name => self.#field.clone().into_wrapped_value()),* } } - fn set(&mut self, c: Self::Column, v: sea_orm::Value) { + fn set(&mut self, c: ::Column, v: sea_orm::Value) { match c { - #(Self::Column::#name => self.#field = sea_orm::ActiveValue::set(v.unwrap())),* + #(::Column::#name => self.#field = sea_orm::ActiveValue::set(v.unwrap())),* } } - fn unset(&mut self, c: Self::Column) { + fn unset(&mut self, c: ::Column) { match c { - #(Self::Column::#name => self.#field = sea_orm::ActiveValue::unset()),* + #(::Column::#name => self.#field = sea_orm::ActiveValue::unset()),* } } } diff --git a/sea-orm-macros/src/derives/model.rs b/sea-orm-macros/src/derives/model.rs index 25fe7204..a09d6157 100644 --- a/sea-orm-macros/src/derives/model.rs +++ b/sea-orm-macros/src/derives/model.rs @@ -29,23 +29,23 @@ pub fn expand_derive_model(ident: Ident, data: Data) -> syn::Result Ok(quote!( impl sea_orm::ModelTrait for #ident { - type Column = Column; + type Entity = Entity; - fn get(&self, c: Self::Column) -> sea_orm::Value { + fn get(&self, c: ::Column) -> sea_orm::Value { match c { - #(Self::Column::#name => self.#field.clone().into()),* + #(::Column::#name => self.#field.clone().into()),* } } - fn set(&mut self, c: Self::Column, v: sea_orm::Value) { + fn set(&mut self, c: ::Column, v: sea_orm::Value) { match c { - #(Self::Column::#name => self.#field = v.unwrap()),* + #(::Column::#name => self.#field = v.unwrap()),* } } fn from_query_result(row: &sea_orm::QueryResult, pre: &str) -> Result { Ok(Self { - #(#field: row.try_get(pre, Self::Column::#name.as_str().into())?),* + #(#field: row.try_get(pre, ::Column::#name.as_str().into())?),* }) } } diff --git a/sea-orm-macros/src/derives/primary_key.rs b/sea-orm-macros/src/derives/primary_key.rs index 0ea945ff..8378323e 100644 --- a/sea-orm-macros/src/derives/primary_key.rs +++ b/sea-orm-macros/src/derives/primary_key.rs @@ -47,8 +47,8 @@ pub fn expand_derive_primary_key(ident: Ident, data: Data) -> syn::Result for #ident { - fn into_column(self) -> ::Column { + impl sea_orm::PrimaryKeyToColumn for #ident { + fn into_column(self) -> ::Column { match self { #(Self::#variant => Column::#variant),* } diff --git a/src/entity/active_model.rs b/src/entity/active_model.rs index 04611aac..b18a0c09 100644 --- a/src/entity/active_model.rs +++ b/src/entity/active_model.rs @@ -1,4 +1,4 @@ -use crate::{ColumnTrait, EntityTrait, Value}; +use crate::{EntityTrait, Value}; use std::fmt::Debug; #[derive(Clone, Debug, Default)] @@ -51,15 +51,15 @@ where } pub trait ActiveModelTrait: Clone + Debug + Default { - type Column: ColumnTrait; + type Entity: EntityTrait; - fn take(&mut self, c: Self::Column) -> ActiveValue; + fn take(&mut self, c: ::Column) -> ActiveValue; - fn get(&self, c: Self::Column) -> ActiveValue; + fn get(&self, c: ::Column) -> ActiveValue; - fn set(&mut self, c: Self::Column, v: Value); + fn set(&mut self, c: ::Column, v: Value); - fn unset(&mut self, c: Self::Column); + fn unset(&mut self, c: ::Column); } impl ActiveValue diff --git a/src/entity/base.rs b/src/entity/base.rs index 43124db5..927fa6e5 100644 --- a/src/entity/base.rs +++ b/src/entity/base.rs @@ -1,6 +1,6 @@ use crate::{ ActiveModelOf, ActiveModelTrait, ColumnTrait, Insert, ModelTrait, OneOrManyActiveModel, - PrimaryKeyOfModel, PrimaryKeyTrait, QueryFilter, RelationBuilder, RelationTrait, RelationType, + PrimaryKeyToColumn, PrimaryKeyTrait, QueryFilter, RelationBuilder, RelationTrait, RelationType, Select, }; use sea_query::{Iden, IntoValueTuple}; @@ -78,7 +78,7 @@ pub trait EntityTrait: EntityName { fn find_by(values: V) -> Select where V: IntoValueTuple, - Self::PrimaryKey: PrimaryKeyOfModel, + Self::PrimaryKey: PrimaryKeyToColumn, { let mut select = Self::find(); let mut keys = Self::PrimaryKey::iter(); diff --git a/src/entity/model.rs b/src/entity/model.rs index eba9761a..b2ef11a1 100644 --- a/src/entity/model.rs +++ b/src/entity/model.rs @@ -1,13 +1,13 @@ -use crate::{ColumnTrait, QueryResult, TypeErr}; +use crate::{EntityTrait, QueryResult, TypeErr}; pub use sea_query::Value; use std::fmt::Debug; pub trait ModelTrait: Clone + Debug { - type Column: ColumnTrait; + type Entity: EntityTrait; - fn get(&self, c: Self::Column) -> Value; + fn get(&self, c: ::Column) -> Value; - fn set(&mut self, c: Self::Column, v: Value); + fn set(&mut self, c: ::Column, v: Value); fn from_query_result(res: &QueryResult, pre: &str) -> Result where diff --git a/src/entity/prelude.rs b/src/entity/prelude.rs index 601a4349..9ebfca73 100644 --- a/src/entity/prelude.rs +++ b/src/entity/prelude.rs @@ -1,6 +1,6 @@ pub use crate::{ ActiveModelOf, ActiveModelTrait, ColumnTrait, ColumnType, DeriveActiveModel, DeriveColumn, DeriveEntity, DeriveModel, DerivePrimaryKey, EntityName, EntityTrait, EnumIter, Iden, - IdenStatic, ModelTrait, PrimaryKeyOfModel, PrimaryKeyTrait, QueryFilter, QueryResult, Related, + IdenStatic, ModelTrait, PrimaryKeyToColumn, PrimaryKeyTrait, QueryFilter, QueryResult, Related, RelationDef, RelationTrait, Select, TypeErr, Value, }; diff --git a/src/entity/primary_key.rs b/src/entity/primary_key.rs index 30f2ed0b..f51007c9 100644 --- a/src/entity/primary_key.rs +++ b/src/entity/primary_key.rs @@ -1,10 +1,10 @@ -use super::{IdenStatic, Iterable, ModelTrait}; +use super::{IdenStatic, Iterable, EntityTrait}; pub trait PrimaryKeyTrait: IdenStatic + Iterable {} -pub trait PrimaryKeyOfModel +pub trait PrimaryKeyToColumn where - M: ModelTrait, + E: EntityTrait, { - fn into_column(self) -> M::Column; + fn into_column(self) -> E::Column; } diff --git a/src/query/helper.rs b/src/query/helper.rs index 8f2a5a24..c5fdb168 100644 --- a/src/query/helper.rs +++ b/src/query/helper.rs @@ -1,5 +1,5 @@ use crate::{ - ColumnTrait, EntityTrait, Identity, IntoSimpleExpr, Iterable, ModelTrait, PrimaryKeyOfModel, + ColumnTrait, EntityTrait, Identity, IntoSimpleExpr, Iterable, ModelTrait, PrimaryKeyToColumn, RelationDef, }; use sea_query::{Alias, Expr, IntoCondition, SelectExpr, SelectStatement, SimpleExpr}; @@ -226,7 +226,7 @@ pub trait QueryFilter: Sized { fn belongs_to(mut self, model: &E::Model) -> Self where E: EntityTrait, - E::PrimaryKey: PrimaryKeyOfModel, + E::PrimaryKey: PrimaryKeyToColumn<::Entity>, { for key in E::PrimaryKey::iter() { let col = key.into_column(); diff --git a/src/query/insert.rs b/src/query/insert.rs index 5ee2b696..cdf5ede8 100644 --- a/src/query/insert.rs +++ b/src/query/insert.rs @@ -38,7 +38,7 @@ where let mut columns = Vec::new(); let mut values = Vec::new(); let columns_empty = self.columns.is_empty(); - for (idx, col) in A::Column::iter().enumerate() { + for (idx, col) in ::Column::iter().enumerate() { let av = am.take(col); if columns_empty { self.columns.push(av.is_set());