Refactor select_as & save_as implementation generated by derive macros (#1442)

This commit is contained in:
Billy Chan 2023-02-04 15:53:10 +08:00 committed by GitHub
parent 9b53b99706
commit 8680c46177
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 26 deletions

View File

@ -248,18 +248,12 @@ pub fn expand_derive_entity_model(data: Data, attrs: Vec<Attribute>) -> syn::Res
if let Some(select_as) = select_as {
columns_select_as.push(quote! {
Self::#field_name => sea_orm::sea_query::SimpleExpr::cast_as(
Into::<sea_orm::sea_query::SimpleExpr>::into(expr),
sea_orm::sea_query::Alias::new(&#select_as),
)
Self::#field_name => expr.cast_as(sea_orm::sea_query::Alias::new(&#select_as))
});
}
if let Some(save_as) = save_as {
columns_save_as.push(quote! {
Self::#field_name => sea_orm::sea_query::SimpleExpr::cast_as(
Into::<sea_orm::sea_query::SimpleExpr>::into(val),
sea_orm::sea_query::Alias::new(&#save_as),
)
Self::#field_name => val.cast_as(sea_orm::sea_query::Alias::new(&#save_as))
});
}

View File

@ -931,10 +931,7 @@ mod tests {
fn select_as(&self, expr: Expr) -> SimpleExpr {
match self {
Self::Two => SimpleExpr::cast_as(
Into::<SimpleExpr>::into(expr),
Alias::new("integer"),
),
Self::Two => expr.cast_as(Alias::new("integer")),
_ => self.select_enum_as(expr),
}
}
@ -1063,12 +1060,10 @@ mod tests {
}
}
fn save_as(&self, expr: Expr) -> SimpleExpr {
fn save_as(&self, val: Expr) -> SimpleExpr {
match self {
Self::Two => {
SimpleExpr::cast_as(Into::<SimpleExpr>::into(expr), Alias::new("text"))
}
_ => self.save_enum_as(expr),
Self::Two => val.cast_as(Alias::new("text")),
_ => self.save_enum_as(val),
}
}
}
@ -1198,20 +1193,15 @@ mod tests {
fn select_as(&self, expr: Expr) -> SimpleExpr {
match self {
Self::Two => SimpleExpr::cast_as(
Into::<SimpleExpr>::into(expr),
Alias::new("integer"),
),
Self::Two => expr.cast_as(Alias::new("integer")),
_ => self.select_enum_as(expr),
}
}
fn save_as(&self, expr: Expr) -> SimpleExpr {
fn save_as(&self, val: Expr) -> SimpleExpr {
match self {
Self::Two => {
SimpleExpr::cast_as(Into::<SimpleExpr>::into(expr), Alias::new("text"))
}
_ => self.save_enum_as(expr),
Self::Two => val.cast_as(Alias::new("text")),
_ => self.save_enum_as(val),
}
}
}