From c2d19686279b3581f7de85ed7f0197e903afa192 Mon Sep 17 00:00:00 2001 From: Chris Tsang Date: Thu, 13 Jul 2023 11:30:34 +0100 Subject: [PATCH] Reinstate Table => type_name semantic --- sea-orm-macros/src/derives/derive_iden.rs | 7 ++++++- tests/derive_iden_tests.rs | 16 ++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/sea-orm-macros/src/derives/derive_iden.rs b/sea-orm-macros/src/derives/derive_iden.rs index 026a97b1..75442b0c 100644 --- a/sea-orm-macros/src/derives/derive_iden.rs +++ b/sea-orm-macros/src/derives/derive_iden.rs @@ -49,7 +49,12 @@ fn impl_iden_for_enum( let match_pair: Vec = variants .map(|v| { let var_ident = &v.ident; - let mut var_name = var_ident.to_string().to_snake_case(); + let var_name = if var_ident == "Table" { + ident + } else { + var_ident + }; + let mut var_name = var_name.to_string().to_snake_case(); v.attrs .iter() .filter(|attr| attr.path().is_ident("sea_orm")) diff --git a/tests/derive_iden_tests.rs b/tests/derive_iden_tests.rs index 707a69f1..e45adda7 100644 --- a/tests/derive_iden_tests.rs +++ b/tests/derive_iden_tests.rs @@ -4,7 +4,8 @@ use sea_orm::entity::prelude::*; use sea_orm_macros::DeriveIden; #[derive(DeriveIden)] -pub enum Class { +pub enum ClassName { + Table, Id, Title, Text, @@ -12,6 +13,7 @@ pub enum Class { #[derive(DeriveIden)] pub enum Book { + Table, Id, #[sea_orm(iden = "turtle")] Title, @@ -22,7 +24,7 @@ pub enum Book { } #[derive(DeriveIden)] -struct Glyph; +struct GlyphToken; #[derive(DeriveIden)] #[sea_orm(iden = "weRd")] @@ -30,16 +32,18 @@ struct Word; #[test] fn main() -> Result<(), DbErr> { - assert_eq!(Class::Id.to_string(), "id"); - assert_eq!(Class::Title.to_string(), "title"); - assert_eq!(Class::Text.to_string(), "text"); + assert_eq!(ClassName::Table.to_string(), "class_name"); + assert_eq!(ClassName::Id.to_string(), "id"); + assert_eq!(ClassName::Title.to_string(), "title"); + assert_eq!(ClassName::Text.to_string(), "text"); assert_eq!(Book::Id.to_string(), "id"); + assert_eq!(Book::Table.to_string(), "book"); assert_eq!(Book::Title.to_string(), "turtle"); assert_eq!(Book::Text.to_string(), "TeXt"); assert_eq!(Book::Type.to_string(), "ty_pe"); - assert_eq!(Glyph.to_string(), "glyph"); + assert_eq!(GlyphToken.to_string(), "glyph_token"); assert_eq!(Word.to_string(), "weRd"); Ok(())