pub struct Condition { /* private fields */ }
Expand description
Represents the value of an Condition::any
or Condition::all
: a set of disjunctive or conjunctive conditions.
Implementations§
Source§impl Condition
impl Condition
Sourcepub fn add<C>(self, condition: C) -> Conditionwhere
C: Into<ConditionExpression>,
pub fn add<C>(self, condition: C) -> Conditionwhere
C: Into<ConditionExpression>,
Add a condition to the set.
If it’s an Condition::any
, it will be separated from the others by an " OR "
in the query. If it’s
an Condition::all
, it will be separated by an " AND "
.
use sea_query::{tests_cfg::*, *};
let statement = Query::select()
.column(Glyph::Id)
.from(Glyph::Table)
.cond_where(
Cond::all()
.add(Expr::col(Glyph::Aspect).eq(0).into_condition().not())
.add(Expr::col(Glyph::Id).eq(0).into_condition().not()),
)
.to_string(PostgresQueryBuilder);
assert_eq!(
statement,
r#"SELECT "id" FROM "glyph" WHERE (NOT "aspect" = 0) AND (NOT "id" = 0)"#
);
Sourcepub fn add_option<C>(self, other: Option<C>) -> Conditionwhere
C: Into<ConditionExpression>,
pub fn add_option<C>(self, other: Option<C>) -> Conditionwhere
C: Into<ConditionExpression>,
Add an optional condition to the set.
Shorthand for if o.is_some() { self.add(o) }
§Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.column(Glyph::Image)
.from(Glyph::Table)
.cond_where(
Cond::all()
.add_option(Some(Expr::col((Glyph::Table, Glyph::Image)).like("A%")))
.add_option(None::<SimpleExpr>),
)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `image` FROM `glyph` WHERE `glyph`.`image` LIKE 'A%'"#
);
Sourcepub fn any() -> Condition
pub fn any() -> Condition
Create a condition that is true if any of the conditions is true.
§Examples
use sea_query::{*, tests_cfg::*};
let query = Query::select()
.column(Glyph::Image)
.from(Glyph::Table)
.cond_where(
Cond::any()
.add(Expr::col((Glyph::Table, Glyph::Aspect)).is_in([3, 4]))
.add(Expr::col((Glyph::Table, Glyph::Image)).like("A%"))
)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `image` FROM `glyph` WHERE `glyph`.`aspect` IN (3, 4) OR `glyph`.`image` LIKE 'A%'"#
);
Sourcepub fn all() -> Condition
pub fn all() -> Condition
Create a condition that is false if any of the conditions is false.
§Examples
use sea_query::{*, tests_cfg::*};
let query = Query::select()
.column(Glyph::Image)
.from(Glyph::Table)
.cond_where(
Cond::all()
.add(Expr::col((Glyph::Table, Glyph::Aspect)).is_in([3, 4]))
.add(Expr::col((Glyph::Table, Glyph::Image)).like("A%"))
)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `image` FROM `glyph` WHERE `glyph`.`aspect` IN (3, 4) AND `glyph`.`image` LIKE 'A%'"#
);
Sourcepub fn not(self) -> Condition
pub fn not(self) -> Condition
Negates a condition.
§Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.column(Glyph::Image)
.from(Glyph::Table)
.cond_where(
Cond::all()
.not()
.add(Expr::col((Glyph::Table, Glyph::Aspect)).is_in([3, 4]))
.add(Expr::col((Glyph::Table, Glyph::Image)).like("A%"))
)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `image` FROM `glyph` WHERE NOT (`glyph`.`aspect` IN (3, 4) AND `glyph`.`image` LIKE 'A%')"#
);
§More Examples
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.column(Glyph::Id)
.cond_where(
Cond::all()
.add(
Cond::all()
.not()
.add(Expr::val(1).eq(1))
.add(Expr::val(2).eq(2)),
)
.add(Cond::any().add(Expr::val(3).eq(3)).add(Expr::val(4).eq(4))),
)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `id` WHERE (NOT (1 = 1 AND 2 = 2)) AND (3 = 3 OR 4 = 4)"#
);
Trait Implementations§
Source§impl From<Condition> for ConditionExpression
impl From<Condition> for ConditionExpression
Source§fn from(condition: Condition) -> ConditionExpression
fn from(condition: Condition) -> ConditionExpression
Converts to this type from the input type.
Source§impl From<Condition> for SimpleExpr
impl From<Condition> for SimpleExpr
Source§fn from(cond: Condition) -> SimpleExpr
fn from(cond: Condition) -> SimpleExpr
Converts to this type from the input type.
Source§impl IntoCondition for Condition
impl IntoCondition for Condition
fn into_condition(self) -> Condition
impl StructuralPartialEq for Condition
Auto Trait Implementations§
impl Freeze for Condition
impl !RefUnwindSafe for Condition
impl Send for Condition
impl Sync for Condition
impl Unpin for Condition
impl !UnwindSafe for Condition
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> ExprTrait for Twhere
T: Into<SimpleExpr>,
impl<T> ExprTrait for Twhere
T: Into<SimpleExpr>,
Source§fn as_enum<N>(self, type_name: N) -> SimpleExprwhere
N: IntoIden,
fn as_enum<N>(self, type_name: N) -> SimpleExprwhere
N: IntoIden,
Express a
AS enum
expression. Read moreSource§fn binary<O, R>(self, op: O, right: R) -> SimpleExpr
fn binary<O, R>(self, op: O, right: R) -> SimpleExpr
Create any binary operation Read more
Source§fn cast_as<N>(self, type_name: N) -> SimpleExprwhere
N: IntoIden,
fn cast_as<N>(self, type_name: N) -> SimpleExprwhere
N: IntoIden,
Express a
CAST AS
expression. Read moreSource§fn unary(self, op: UnOper) -> SimpleExpr
fn unary(self, op: UnOper) -> SimpleExpr
Apply any unary operator to the expression. Read more
Source§fn add<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
fn add<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
Express an arithmetic addition operation. Read more
fn and<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
Source§fn between<A, B>(self, a: A, b: B) -> SimpleExpr
fn between<A, B>(self, a: A, b: B) -> SimpleExpr
Express a
BETWEEN
expression. Read moreSource§fn div<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
fn div<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
Express an arithmetic division operation. Read more
Source§fn eq<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
fn eq<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
Express an equal (
=
) expression. Read moreSource§fn equals<C>(self, col: C) -> SimpleExprwhere
C: IntoColumnRef,
fn equals<C>(self, col: C) -> SimpleExprwhere
C: IntoColumnRef,
Express a equal expression between two table columns,
you will mainly use this to relate identical value between two table columns. Read more
Source§fn gt<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
fn gt<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
Express a greater than (
>
) expression. Read moreSource§fn gte<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
fn gte<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
Express a greater than or equal (
>=
) expression. Read moreSource§fn in_subquery(self, sel: SelectStatement) -> SimpleExpr
fn in_subquery(self, sel: SelectStatement) -> SimpleExpr
Express a
IN
sub-query expression. Read moreSource§fn in_tuples<V, I>(self, v: I) -> SimpleExprwhere
V: IntoValueTuple,
I: IntoIterator<Item = V>,
fn in_tuples<V, I>(self, v: I) -> SimpleExprwhere
V: IntoValueTuple,
I: IntoIterator<Item = V>,
Express a
IN
sub expression. Read moreSource§fn is<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
fn is<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
Express a
IS
expression. Read moreSource§fn is_in<V, I>(self, v: I) -> SimpleExpr
fn is_in<V, I>(self, v: I) -> SimpleExpr
Express a
IN
expression. Read moreSource§fn is_not<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
fn is_not<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
Express a
IS NOT
expression. Read moreSource§fn is_not_in<V, I>(self, v: I) -> SimpleExpr
fn is_not_in<V, I>(self, v: I) -> SimpleExpr
Express a
NOT IN
expression. Read moreSource§fn is_not_null(self) -> SimpleExpr
fn is_not_null(self) -> SimpleExpr
Express a
IS NOT NULL
expression. Read moreSource§fn is_null(self) -> SimpleExpr
fn is_null(self) -> SimpleExpr
Express a
IS NULL
expression. Read moreSource§fn left_shift<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
fn left_shift<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
Express a bitwise left shift. Read more
Source§fn like<L>(self, like: L) -> SimpleExprwhere
L: IntoLikeExpr,
fn like<L>(self, like: L) -> SimpleExprwhere
L: IntoLikeExpr,
Express a
LIKE
expression. Read moreSource§fn lt<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
fn lt<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
Express a less than (
<
) expression. Read moreSource§fn lte<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
fn lte<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
Express a less than or equal (
<=
) expression. Read moreSource§fn modulo<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
fn modulo<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
Express an arithmetic modulo operation. Read more
Source§fn mul<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
fn mul<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
Express an arithmetic multiplication operation. Read more
Source§fn ne<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
fn ne<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
Express a not equal (
<>
) expression. Read moreSource§fn not(self) -> SimpleExpr
fn not(self) -> SimpleExpr
Negates an expression with
NOT
. Read moreSource§fn not_between<A, B>(self, a: A, b: B) -> SimpleExpr
fn not_between<A, B>(self, a: A, b: B) -> SimpleExpr
Express a
NOT BETWEEN
expression. Read moreSource§fn not_equals<C>(self, col: C) -> SimpleExprwhere
C: IntoColumnRef,
fn not_equals<C>(self, col: C) -> SimpleExprwhere
C: IntoColumnRef,
Express a not equal expression between two table columns,
you will mainly use this to relate identical value between two table columns. Read more
Source§fn not_in_subquery(self, sel: SelectStatement) -> SimpleExpr
fn not_in_subquery(self, sel: SelectStatement) -> SimpleExpr
Express a
NOT IN
sub-query expression. Read moreSource§fn not_like<L>(self, like: L) -> SimpleExprwhere
L: IntoLikeExpr,
fn not_like<L>(self, like: L) -> SimpleExprwhere
L: IntoLikeExpr,
Express a
NOT LIKE
expression. Read moreSource§fn or<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
fn or<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
Express a logical
OR
operation. Read moreSource§fn right_shift<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
fn right_shift<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
Express a bitwise right shift. Read more
Source§fn sub<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
fn sub<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
Express an arithmetic subtraction operation. Read more
Source§fn bit_and<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
fn bit_and<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
Express a bitwise AND operation. Read more
Source§fn bit_or<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
fn bit_or<R>(self, right: R) -> SimpleExprwhere
R: Into<SimpleExpr>,
Express a bitwise OR operation. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more