From 2ee376ddd117b2e14f16dd6e3952645c5fc7d007 Mon Sep 17 00:00:00 2001 From: Billy Chan Date: Tue, 26 Oct 2021 16:22:24 +0800 Subject: [PATCH] Try `EnumValue` --- src/entity/column.rs | 3 +-- src/query/insert.rs | 4 ++-- src/query/select.rs | 4 ++-- src/query/update.rs | 4 ++-- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/entity/column.rs b/src/entity/column.rs index 4b9af89f..8cd65d9c 100644 --- a/src/entity/column.rs +++ b/src/entity/column.rs @@ -245,8 +245,7 @@ impl ColumnType { pub(crate) fn get_enum_name(&self) -> Option<&String> { match self { - // FIXME: How to get rid of this feature gate? - ColumnType::Enum(s, _) if cfg!(feature = "sqlx-postgres") => Some(s), + ColumnType::Enum(s, _) => Some(s), _ => None, } } diff --git a/src/query/insert.rs b/src/query/insert.rs index 3a7c91d6..a1b34f50 100644 --- a/src/query/insert.rs +++ b/src/query/insert.rs @@ -3,7 +3,7 @@ use crate::{ PrimaryKeyTrait, QueryTrait, }; use core::marker::PhantomData; -use sea_query::{Alias, Expr, Func, InsertStatement, ValueTuple}; +use sea_query::{Expr, InsertStatement, SimpleExpr, ValueTuple}; #[derive(Debug)] pub struct Insert @@ -136,7 +136,7 @@ where columns.push(col); let val = av.into_value().unwrap(); let expr = if let Some(enum_name) = enum_name { - Func::cast_as(val, Alias::new(enum_name)) + SimpleExpr::EnumValue(enum_name.to_owned(), Box::new(Expr::val(val).into())) } else { Expr::val(val).into() }; diff --git a/src/query/select.rs b/src/query/select.rs index 0f2db65b..1bdfce1a 100644 --- a/src/query/select.rs +++ b/src/query/select.rs @@ -2,7 +2,7 @@ use crate::{ColumnTrait, EntityTrait, Iterable, QueryFilter, QueryOrder, QuerySe use core::fmt::Debug; use core::marker::PhantomData; pub use sea_query::JoinType; -use sea_query::{Alias, DynIden, Expr, Func, IntoColumnRef, SeaRc, SelectStatement, SimpleExpr}; +use sea_query::{DynIden, Expr, IntoColumnRef, SeaRc, SelectStatement, SimpleExpr}; #[derive(Clone, Debug)] pub struct Select @@ -121,7 +121,7 @@ where let enum_name = col_def.get_column_type().get_enum_name(); let col_expr = Expr::tbl(table.clone(), col); if enum_name.is_some() { - Func::cast_expr_as(col_expr, Alias::new("text")) + SimpleExpr::EnumValue("text".to_owned(), Box::new(col_expr.into())) } else { col_expr.into() } diff --git a/src/query/update.rs b/src/query/update.rs index a881ad11..a81b5607 100644 --- a/src/query/update.rs +++ b/src/query/update.rs @@ -3,7 +3,7 @@ use crate::{ QueryTrait, }; use core::marker::PhantomData; -use sea_query::{Alias, Expr, Func, IntoIden, SimpleExpr, UpdateStatement}; +use sea_query::{Expr, IntoIden, SimpleExpr, UpdateStatement}; #[derive(Clone, Debug)] pub struct Update; @@ -110,7 +110,7 @@ where if av.is_set() { let val = av.into_value().unwrap(); let expr = if let Some(enum_name) = enum_name { - Func::cast_as(val, Alias::new(enum_name)) + SimpleExpr::EnumValue(enum_name.to_owned(), Box::new(Expr::val(val).into())) } else { Expr::val(val).into() };