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 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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)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