Skip to content
Closed
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
148 changes: 0 additions & 148 deletions src/expr/enum.rs
Original file line number Diff line number Diff line change
Expand Up @@ -507,122 +507,6 @@ impl Expr {
Self::CustomWithExpr(s.into(), v.into_iter().collect())
}

/// Express a `MAX` function.
///
/// # Examples
///
/// ```
/// use sea_query::{tests_cfg::*, *};
///
/// let query = Query::select()
/// .expr(Expr::col((Char::Table, Char::SizeW)).max())
/// .from(Char::Table)
/// .to_owned();
///
/// assert_eq!(
/// query.to_string(MysqlQueryBuilder),
/// r#"SELECT MAX(`character`.`size_w`) FROM `character`"#
/// );
/// assert_eq!(
/// query.to_string(PostgresQueryBuilder),
/// r#"SELECT MAX("character"."size_w") FROM "character""#
/// );
/// assert_eq!(
/// query.to_string(SqliteQueryBuilder),
/// r#"SELECT MAX("character"."size_w") FROM "character""#
/// );
/// ```
pub fn max(self) -> Self {
Func::max(self).into()
}

/// Express a `MIN` function.
///
/// # Examples
///
/// ```
/// use sea_query::{tests_cfg::*, *};
///
/// let query = Query::select()
/// .expr(Expr::col((Char::Table, Char::SizeW)).min())
/// .from(Char::Table)
/// .to_owned();
///
/// assert_eq!(
/// query.to_string(MysqlQueryBuilder),
/// r#"SELECT MIN(`character`.`size_w`) FROM `character`"#
/// );
/// assert_eq!(
/// query.to_string(PostgresQueryBuilder),
/// r#"SELECT MIN("character"."size_w") FROM "character""#
/// );
/// assert_eq!(
/// query.to_string(SqliteQueryBuilder),
/// r#"SELECT MIN("character"."size_w") FROM "character""#
/// );
/// ```
pub fn min(self) -> Self {
Func::min(self).into()
}

/// Express a `SUM` function.
///
/// # Examples
///
/// ```
/// use sea_query::{tests_cfg::*, *};
///
/// let query = Query::select()
/// .expr(Expr::col((Char::Table, Char::SizeW)).sum())
/// .from(Char::Table)
/// .to_owned();
///
/// assert_eq!(
/// query.to_string(MysqlQueryBuilder),
/// r#"SELECT SUM(`character`.`size_w`) FROM `character`"#
/// );
/// assert_eq!(
/// query.to_string(PostgresQueryBuilder),
/// r#"SELECT SUM("character"."size_w") FROM "character""#
/// );
/// assert_eq!(
/// query.to_string(SqliteQueryBuilder),
/// r#"SELECT SUM("character"."size_w") FROM "character""#
/// );
/// ```
pub fn sum(self) -> Self {
Func::sum(self).into()
}

/// Express a `COUNT` function.
///
/// # Examples
///
/// ```
/// use sea_query::{tests_cfg::*, *};
///
/// let query = Query::select()
/// .expr(Expr::col((Char::Table, Char::SizeW)).count())
/// .from(Char::Table)
/// .to_owned();
///
/// assert_eq!(
/// query.to_string(MysqlQueryBuilder),
/// r#"SELECT COUNT(`character`.`size_w`) FROM `character`"#
/// );
/// assert_eq!(
/// query.to_string(PostgresQueryBuilder),
/// r#"SELECT COUNT("character"."size_w") FROM "character""#
/// );
/// assert_eq!(
/// query.to_string(SqliteQueryBuilder),
/// r#"SELECT COUNT("character"."size_w") FROM "character""#
/// );
/// ```
pub fn count(self) -> Self {
Func::count(self).into()
}

/// Express a `COUNT` function with the DISTINCT modifier.
///
/// # Examples
Expand Down Expand Up @@ -652,38 +536,6 @@ impl Expr {
Func::count_distinct(self).into()
}

/// Express a `IF NULL` function.
///
/// # Examples
///
/// ```
/// use sea_query::{tests_cfg::*, *};
///
/// let query = Query::select()
/// .expr(Expr::col((Char::Table, Char::SizeW)).if_null(0))
/// .from(Char::Table)
/// .to_owned();
///
/// assert_eq!(
/// query.to_string(MysqlQueryBuilder),
/// r#"SELECT IFNULL(`character`.`size_w`, 0) FROM `character`"#
/// );
/// assert_eq!(
/// query.to_string(PostgresQueryBuilder),
/// r#"SELECT COALESCE("character"."size_w", 0) FROM "character""#
/// );
/// assert_eq!(
/// query.to_string(SqliteQueryBuilder),
/// r#"SELECT IFNULL("character"."size_w", 0) FROM "character""#
/// );
/// ```
pub fn if_null<V>(self, v: V) -> Self
where
V: Into<Self>,
{
Func::if_null(self, v).into()
}

/// Express a `EXISTS` sub-query expression.
///
/// # Examples
Expand Down
160 changes: 160 additions & 0 deletions src/expr/trait.rs
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,143 @@ pub trait ExprTrait: Sized {
where
N: IntoIden;

/// Express a `MAX` function.
///
/// # Examples
///
/// ```
/// use sea_query::{tests_cfg::*, *};
///
/// let query = Query::select()
/// .expr(Expr::col((Char::Table, Char::SizeW)).max())
/// .from(Char::Table)
/// .to_owned();
///
/// assert_eq!(
/// query.to_string(MysqlQueryBuilder),
/// r#"SELECT MAX(`character`.`size_w`) FROM `character`"#
/// );
/// assert_eq!(
/// query.to_string(PostgresQueryBuilder),
/// r#"SELECT MAX("character"."size_w") FROM "character""#
/// );
/// assert_eq!(
/// query.to_string(SqliteQueryBuilder),
/// r#"SELECT MAX("character"."size_w") FROM "character""#
/// );
/// ```
fn max(self) -> Expr;

/// Express a `MIN` function.
///
/// # Examples
///
/// ```
/// use sea_query::{tests_cfg::*, *};
///
/// let query = Query::select()
/// .expr(Expr::col((Char::Table, Char::SizeW)).min())
/// .from(Char::Table)
/// .to_owned();
///
/// assert_eq!(
/// query.to_string(MysqlQueryBuilder),
/// r#"SELECT MIN(`character`.`size_w`) FROM `character`"#
/// );
/// assert_eq!(
/// query.to_string(PostgresQueryBuilder),
/// r#"SELECT MIN("character"."size_w") FROM "character""#
/// );
/// assert_eq!(
/// query.to_string(SqliteQueryBuilder),
/// r#"SELECT MIN("character"."size_w") FROM "character""#
/// );
/// ```
fn min(self) -> Expr;

/// Express a `SUM` function.
///
/// # Examples
///
/// ```
/// use sea_query::{tests_cfg::*, *};
///
/// let query = Query::select()
/// .expr(Expr::col((Char::Table, Char::SizeW)).sum())
/// .from(Char::Table)
/// .to_owned();
///
/// assert_eq!(
/// query.to_string(MysqlQueryBuilder),
/// r#"SELECT SUM(`character`.`size_w`) FROM `character`"#
/// );
/// assert_eq!(
/// query.to_string(PostgresQueryBuilder),
/// r#"SELECT SUM("character"."size_w") FROM "character""#
/// );
/// assert_eq!(
/// query.to_string(SqliteQueryBuilder),
/// r#"SELECT SUM("character"."size_w") FROM "character""#
/// );
/// ```
fn sum(self) -> Expr;

/// Express a `COUNT` function.
///
/// # Examples
///
/// ```
/// use sea_query::{tests_cfg::*, *};
///
/// let query = Query::select()
/// .expr(Expr::col((Char::Table, Char::SizeW)).count())
/// .from(Char::Table)
/// .to_owned();
///
/// assert_eq!(
/// query.to_string(MysqlQueryBuilder),
/// r#"SELECT COUNT(`character`.`size_w`) FROM `character`"#
/// );
/// assert_eq!(
/// query.to_string(PostgresQueryBuilder),
/// r#"SELECT COUNT("character"."size_w") FROM "character""#
/// );
/// assert_eq!(
/// query.to_string(SqliteQueryBuilder),
/// r#"SELECT COUNT("character"."size_w") FROM "character""#
/// );
/// ```
fn count(self) -> Expr;

/// Express a `IF NULL` function.
///
/// # Examples
///
/// ```
/// use sea_query::{tests_cfg::*, *};
///
/// let query = Query::select()
/// .expr(Expr::col((Char::Table, Char::SizeW)).if_null(0))
/// .from(Char::Table)
/// .to_owned();
///
/// assert_eq!(
/// query.to_string(MysqlQueryBuilder),
/// r#"SELECT IFNULL(`character`.`size_w`, 0) FROM `character`"#
/// );
/// assert_eq!(
/// query.to_string(PostgresQueryBuilder),
/// r#"SELECT COALESCE("character"."size_w", 0) FROM "character""#
/// );
/// assert_eq!(
/// query.to_string(SqliteQueryBuilder),
/// r#"SELECT IFNULL("character"."size_w", 0) FROM "character""#
/// );
/// ```
fn if_null<V>(self, v: V) -> Expr
where
V: Into<Expr>;

/// Express an arithmetic division operation.
///
/// # Examples
Expand Down Expand Up @@ -1491,6 +1628,29 @@ where
Expr::FunctionCall(Func::cast_as(self, type_name))
}

fn max(self) -> Expr {
Func::max(self).into()
}

fn min(self) -> Expr {
Func::min(self).into()
}

fn sum(self) -> Expr {
Func::sum(self).into()
}

fn count(self) -> Expr {
Func::count(self).into()
}

fn if_null<V>(self, v: V) -> Expr
where
V: Into<Expr>,
{
Func::if_null(self, v).into()
}

fn unary(self, op: UnOper) -> Expr {
Expr::Unary(op, Box::new(self.into()))
}
Expand Down
Loading