* Test suit load environment variable from env files * Added expr() and exprs() for QuerySelect trait and Minor typo fix * fmt * Added doc testing for the new functions * Remove excess comment for doc test Co-authored-by: Chris Tsang <chris.2y3@outlook.com> * Remove excess comment for doc test Co-authored-by: Chris Tsang <chris.2y3@outlook.com> * updated doc tests to make example more realistic * changed doc test again for more realistic query and added expr_as() * aligned expr_as() alias input with column_as() input * update doc test for expr_as() according to previous changes --------- Co-authored-by: Billy Chan <ccw.billy.123@gmail.com> Co-authored-by: Chris Tsang <chris.2y3@outlook.com>
This commit is contained in:
parent
d35cd6aa3b
commit
0816faa7f1
@ -3,7 +3,7 @@
|
||||
# Delete all containers
|
||||
# $ docker rm -f $(docker ps -a -q)
|
||||
#
|
||||
# Delete all volumns
|
||||
# Delete all volumes
|
||||
# $ docker volume rm $(docker volume ls -q)
|
||||
#
|
||||
# Delete all images
|
||||
|
@ -4,7 +4,7 @@ use crate::{
|
||||
};
|
||||
use sea_query::{
|
||||
Alias, ConditionType, Expr, Iden, IntoCondition, IntoIden, LockType, SeaRc, SelectExpr,
|
||||
SelectStatement, TableRef,
|
||||
SelectStatement, SimpleExpr, TableRef,
|
||||
};
|
||||
pub use sea_query::{Condition, ConditionalStatement, DynIden, JoinType, Order, OrderedStatement};
|
||||
|
||||
@ -446,6 +446,79 @@ pub trait QuerySelect: Sized {
|
||||
self.query().lock_exclusive();
|
||||
self
|
||||
}
|
||||
|
||||
/// Add an expression to the select expression list.
|
||||
/// ```
|
||||
/// use sea_orm::sea_query::Expr;
|
||||
/// use sea_orm::{entity::*, tests_cfg::cake, DbBackend, QuerySelect, QueryTrait};
|
||||
///
|
||||
/// assert_eq!(
|
||||
/// cake::Entity::find()
|
||||
/// .select_only()
|
||||
/// .expr(Expr::col((cake::Entity, cake::Column::Id)))
|
||||
/// .build(DbBackend::MySql)
|
||||
/// .to_string(),
|
||||
/// "SELECT `cake`.`id` FROM `cake`"
|
||||
/// );
|
||||
/// ```
|
||||
fn expr<T>(mut self, expr: T) -> Self
|
||||
where
|
||||
T: Into<SelectExpr>,
|
||||
{
|
||||
self.query().expr(expr);
|
||||
self
|
||||
}
|
||||
|
||||
/// Add select expressions from vector of [`SelectExpr`].
|
||||
/// ```
|
||||
/// use sea_orm::sea_query::Expr;
|
||||
/// use sea_orm::{entity::*, tests_cfg::cake, DbBackend, QuerySelect, QueryTrait};
|
||||
///
|
||||
/// assert_eq!(
|
||||
/// cake::Entity::find()
|
||||
/// .select_only()
|
||||
/// .exprs([
|
||||
/// Expr::col((cake::Entity, cake::Column::Id)),
|
||||
/// Expr::col((cake::Entity, cake::Column::Name)),
|
||||
/// ])
|
||||
/// .build(DbBackend::MySql)
|
||||
/// .to_string(),
|
||||
/// "SELECT `cake`.`id`, `cake`.`name` FROM `cake`"
|
||||
/// );
|
||||
/// ```
|
||||
fn exprs<T, I>(mut self, exprs: I) -> Self
|
||||
where
|
||||
T: Into<SelectExpr>,
|
||||
I: IntoIterator<Item = T>,
|
||||
{
|
||||
self.query().exprs(exprs);
|
||||
self
|
||||
}
|
||||
|
||||
/// Select column.
|
||||
/// ```
|
||||
/// use sea_orm::sea_query::{Alias, Expr, Func};
|
||||
/// use sea_orm::{entity::*, tests_cfg::cake, DbBackend, QuerySelect, QueryTrait};
|
||||
///
|
||||
/// assert_eq!(
|
||||
/// cake::Entity::find()
|
||||
/// .expr_as(
|
||||
/// Func::upper(Expr::col((cake::Entity, cake::Column::Name))),
|
||||
/// "name_upper"
|
||||
/// )
|
||||
/// .build(DbBackend::MySql)
|
||||
/// .to_string(),
|
||||
/// "SELECT `cake`.`id`, `cake`.`name`, UPPER(`cake`.`name`) AS `name_upper` FROM `cake`"
|
||||
/// );
|
||||
/// ```
|
||||
fn expr_as<T, A>(&mut self, expr: T, alias: A) -> &mut Self
|
||||
where
|
||||
T: Into<SimpleExpr>,
|
||||
A: IntoIdentity,
|
||||
{
|
||||
self.query().expr_as(expr, alias.into_identity());
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
// LINT: when the column does not appear in tables selected from
|
||||
|
Loading…
x
Reference in New Issue
Block a user