From 1c269a081fe3ffdb42ba01f70f4db0151315ad83 Mon Sep 17 00:00:00 2001 From: Chris Tsang Date: Wed, 3 Apr 2024 21:14:22 +0100 Subject: [PATCH 1/2] Associate `ActiveModel` to `EntityTrait` --- sea-orm-macros/src/derives/attributes.rs | 1 + sea-orm-macros/src/derives/entity.rs | 6 ++++++ src/entity/base_entity.rs | 9 ++++++--- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/sea-orm-macros/src/derives/attributes.rs b/sea-orm-macros/src/derives/attributes.rs index 9c0c24c4b..bf04c9771 100644 --- a/sea-orm-macros/src/derives/attributes.rs +++ b/sea-orm-macros/src/derives/attributes.rs @@ -7,6 +7,7 @@ pub mod derive_attr { pub column: Option, pub entity: Option, pub model: Option, + pub active_model: Option, pub primary_key: Option, pub relation: Option, pub schema_name: Option, diff --git a/sea-orm-macros/src/derives/entity.rs b/sea-orm-macros/src/derives/entity.rs index 5f9a0733c..dbff915ad 100644 --- a/sea-orm-macros/src/derives/entity.rs +++ b/sea-orm-macros/src/derives/entity.rs @@ -9,6 +9,7 @@ struct DeriveEntity { column_ident: syn::Ident, ident: syn::Ident, model_ident: syn::Ident, + active_model_ident: syn::Ident, primary_key_ident: syn::Ident, relation_ident: syn::Ident, schema_name: Option, @@ -22,6 +23,7 @@ impl DeriveEntity { let ident = input.ident; let column_ident = sea_attr.column.unwrap_or_else(|| format_ident!("Column")); let model_ident = sea_attr.model.unwrap_or_else(|| format_ident!("Model")); + let active_model_ident = sea_attr.active_model.unwrap_or_else(|| format_ident!("ActiveModel")); let primary_key_ident = sea_attr .primary_key .unwrap_or_else(|| format_ident!("PrimaryKey")); @@ -36,6 +38,7 @@ impl DeriveEntity { column_ident, ident, model_ident, + active_model_ident, primary_key_ident, relation_ident, schema_name, @@ -87,6 +90,7 @@ impl DeriveEntity { let Self { ident, model_ident, + active_model_ident, column_ident, primary_key_ident, relation_ident, @@ -98,6 +102,8 @@ impl DeriveEntity { impl sea_orm::entity::EntityTrait for #ident { type Model = #model_ident; + type ActiveModel = #active_model_ident; + type Column = #column_ident; type PrimaryKey = #primary_key_ident; diff --git a/src/entity/base_entity.rs b/src/entity/base_entity.rs index 6cd8b1052..5ed5d7572 100644 --- a/src/entity/base_entity.rs +++ b/src/entity/base_entity.rs @@ -1,7 +1,7 @@ use crate::{ - ActiveModelTrait, ColumnTrait, Delete, DeleteMany, DeleteOne, FromQueryResult, Insert, - ModelTrait, PrimaryKeyToColumn, PrimaryKeyTrait, QueryFilter, Related, RelationBuilder, - RelationTrait, RelationType, Select, Update, UpdateMany, UpdateOne, + ActiveModelBehavior, ActiveModelTrait, ColumnTrait, Delete, DeleteMany, DeleteOne, + FromQueryResult, Insert, ModelTrait, PrimaryKeyToColumn, PrimaryKeyTrait, QueryFilter, Related, + RelationBuilder, RelationTrait, RelationType, Select, Update, UpdateMany, UpdateOne, }; use sea_query::{Alias, Iden, IntoIden, IntoTableRef, IntoValueTuple, TableRef}; use std::fmt::Debug; @@ -58,6 +58,9 @@ pub trait EntityTrait: EntityName { #[allow(missing_docs)] type Model: ModelTrait + FromQueryResult; + #[allow(missing_docs)] + type ActiveModel: ActiveModelBehavior; + #[allow(missing_docs)] type Column: ColumnTrait; From 3b3a4463ad67d0b5f5464f489af21175bea61371 Mon Sep 17 00:00:00 2001 From: Chris Tsang Date: Wed, 3 Apr 2024 21:33:35 +0100 Subject: [PATCH 2/2] fmt --- sea-orm-macros/src/derives/entity.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sea-orm-macros/src/derives/entity.rs b/sea-orm-macros/src/derives/entity.rs index dbff915ad..b2e1fd66d 100644 --- a/sea-orm-macros/src/derives/entity.rs +++ b/sea-orm-macros/src/derives/entity.rs @@ -23,7 +23,9 @@ impl DeriveEntity { let ident = input.ident; let column_ident = sea_attr.column.unwrap_or_else(|| format_ident!("Column")); let model_ident = sea_attr.model.unwrap_or_else(|| format_ident!("Model")); - let active_model_ident = sea_attr.active_model.unwrap_or_else(|| format_ident!("ActiveModel")); + let active_model_ident = sea_attr + .active_model + .unwrap_or_else(|| format_ident!("ActiveModel")); let primary_key_ident = sea_attr .primary_key .unwrap_or_else(|| format_ident!("PrimaryKey"));