From 0eb6902d1b250095ad9774c7b07103bb3a94b902 Mon Sep 17 00:00:00 2001 From: Marco Napetti Date: Mon, 6 Sep 2021 12:02:15 +0200 Subject: [PATCH] default_value and default_expr hypotetical implementation --- sea-orm-macros/src/derives/entity_model.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sea-orm-macros/src/derives/entity_model.rs b/sea-orm-macros/src/derives/entity_model.rs index b207f420..f8e93b75 100644 --- a/sea-orm-macros/src/derives/entity_model.rs +++ b/sea-orm-macros/src/derives/entity_model.rs @@ -47,10 +47,11 @@ impl sea_orm::prelude::EntityName for Entity { let mut nullable = false; let mut default_value = None; + let mut default_expr = None; let mut indexed = false; let mut unique = false; let mut sql_type = None; - // search for #[sea_orm(primary_key, column_type = "String", nullable, default_value = "something", indexed, unique)] + // search for #[sea_orm(primary_key, column_type = "String", default_value = "new user", default_expr = "gen_random_uuid()", nullable, indexed, unique)] field.attrs.iter().for_each(|attr| { if let Some(ident) = attr.path.get_ident() { if ident != "sea_orm" { @@ -76,6 +77,9 @@ impl sea_orm::prelude::EntityName for Entity { else if name == "default_value" { default_value = Some(nv.lit.to_owned()); } + else if name == "default_expr" { + default_expr = Some(nv.lit.to_owned()); + } } }, Meta::Path(p) => { @@ -140,6 +144,12 @@ impl sea_orm::prelude::EntityName for Entity { if unique { match_row = quote! { #match_row.unique() }; } + if let Some(default_value) = default_value { + match_row = quote! { #match_row.default_value(#default_value) }; + } + if let Some(default_expr) = default_expr { + match_row = quote! { #match_row.default_expr(#default_expr) }; + } columns_trait.push(match_row); } }