Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions sea-orm-codegen/src/entity/active_enum.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ impl ActiveEnum {
extra_attributes: &TokenStream,
entity_format: EntityFormat,
) -> TokenStream {
let enum_name = &self.enum_name.to_string();
let enum_name = self.enum_name.as_str();
let enum_iden = format_ident!("{}", enum_name.to_upper_camel_case());
let values: Vec<String> = self.values.iter().map(|v| v.to_string()).collect();
let values: Vec<_> = self.values.iter().map(|v| v.as_str()).collect();
let variants = values.iter().map(|v| v.trim()).map(|v| {
if v.chars().next().map(char::is_numeric).unwrap_or(false) {
format_ident!("_{}", v)
Expand Down
22 changes: 16 additions & 6 deletions sea-orm-codegen/src/entity/column.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ impl Column {
"Vec<u8>".to_owned()
}
ColumnType::Boolean => "bool".to_owned(),
ColumnType::Enum { name, .. } => name.to_string().to_upper_camel_case(),
ColumnType::Enum { name, .. } => name.as_str().to_upper_camel_case(),
ColumnType::Array(column_type) => {
format!("Vec<{}>", write_rs_type(column_type, opt))
}
Expand Down Expand Up @@ -130,8 +130,8 @@ impl Column {
col_type.map(|ty| quote! { column_type = #ty })
}

pub fn get_def(&self) -> TokenStream {
fn write_col_def(col_type: &ColumnType) -> TokenStream {
fn get_def_inner(&self, enum_type_ident: Option<&Ident>) -> TokenStream {
fn write_col_def(col_type: &ColumnType, enum_type_ident: Option<&Ident>) -> TokenStream {
match col_type {
ColumnType::Char(s) => match s {
Some(s) => quote! { ColumnType::Char(Some(#s)) },
Expand Down Expand Up @@ -188,15 +188,17 @@ impl Column {
quote! { ColumnType::custom(#s) }
}
ColumnType::Enum { name, .. } => {
let enum_ident = format_ident!("{}", name.to_string().to_upper_camel_case());
let enum_ident = enum_type_ident.cloned().unwrap_or_else(|| {
format_ident!("{}", name.as_str().to_upper_camel_case())
});
quote! {
#enum_ident::db_type()
.get_column_type()
.to_owned()
}
}
ColumnType::Array(column_type) => {
let column_type = write_col_def(column_type);
let column_type = write_col_def(column_type, enum_type_ident);
quote! { ColumnType::Array(RcOrArc::new(#column_type)) }
}
ColumnType::Vector(size) => match size {
Expand All @@ -207,7 +209,7 @@ impl Column {
_ => unimplemented!(),
}
}
let mut col_def = write_col_def(&self.col_type);
let mut col_def = write_col_def(&self.col_type, enum_type_ident);
col_def.extend(quote! {
.def()
});
Expand All @@ -224,6 +226,14 @@ impl Column {
col_def
}

pub fn get_def(&self) -> TokenStream {
self.get_def_inner(None)
}

pub fn get_def_with_enum_type_ident(&self, enum_type_ident: &Ident) -> TokenStream {
self.get_def_inner(Some(enum_type_ident))
}

pub fn get_info(&self, opt: &ColumnOption) -> String {
let mut info = String::new();
let type_info = self.get_rs_type(opt).to_string().replace(' ', "");
Expand Down
Loading
Loading