diff --git a/examples/async-std/src/example_cake.rs b/examples/async-std/src/example_cake.rs index b159a381..0e13ffcd 100644 --- a/examples/async-std/src/example_cake.rs +++ b/examples/async-std/src/example_cake.rs @@ -1,6 +1,6 @@ use sea_orm::entity::prelude::*; -#[derive(Clone, Debug, PartialEq, DeriveEntityModel, DeriveModel, DeriveActiveModel)] +#[derive(Clone, Debug, PartialEq, DeriveEntityModel)] #[sea_orm(table_name = "cake")] pub struct Model { #[sea_orm(primary_key)] diff --git a/sea-orm-macros/src/lib.rs b/sea-orm-macros/src/lib.rs index f2103647..879ad5eb 100644 --- a/sea-orm-macros/src/lib.rs +++ b/sea-orm-macros/src/lib.rs @@ -16,6 +16,7 @@ pub fn derive_entity(input: TokenStream) -> TokenStream { #[proc_macro_derive(DeriveEntityModel, attributes(sea_orm))] pub fn derive_entity_model(input: TokenStream) -> TokenStream { + let input_ts = input.clone(); let DeriveInput { ident, data, attrs, .. } = parse_macro_input!(input as DeriveInput); @@ -24,10 +25,14 @@ pub fn derive_entity_model(input: TokenStream) -> TokenStream { panic!("Struct name must be Model"); } - match derives::expand_derive_entity_model(data, attrs) { - Ok(ts) => ts.into(), - Err(e) => e.to_compile_error().into(), - } + let mut ts: TokenStream = derives::expand_derive_entity_model(data, attrs) + .unwrap_or_else(Error::into_compile_error) + .into(); + ts.extend(vec![ + derive_model(input_ts.clone()), + derive_active_model(input_ts), + ]); + ts } #[proc_macro_derive(DerivePrimaryKey)] diff --git a/src/tests_cfg/cake.rs b/src/tests_cfg/cake.rs index 63030009..920e1fea 100644 --- a/src/tests_cfg/cake.rs +++ b/src/tests_cfg/cake.rs @@ -1,7 +1,7 @@ use crate as sea_orm; use crate::entity::prelude::*; -#[derive(Clone, Debug, PartialEq, DeriveEntityModel, DeriveModel, DeriveActiveModel)] +#[derive(Clone, Debug, PartialEq, DeriveEntityModel)] #[sea_orm(table_name = "cake")] pub struct Model { #[sea_orm(primary_key)] diff --git a/src/tests_cfg/fruit.rs b/src/tests_cfg/fruit.rs index 9a47e3cf..390f502a 100644 --- a/src/tests_cfg/fruit.rs +++ b/src/tests_cfg/fruit.rs @@ -1,7 +1,7 @@ use crate as sea_orm; use crate::entity::prelude::*; -#[derive(Clone, Debug, PartialEq, DeriveEntityModel, DeriveModel, DeriveActiveModel)] +#[derive(Clone, Debug, PartialEq, DeriveEntityModel)] #[sea_orm(table_name = "fruit")] pub struct Model { #[sea_orm(primary_key)]