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
sourceimpl Condition
impl Condition
sourcepub fn add<C>(self, condition: C) -> Selfwhere
C: Into<ConditionExpression>,
pub fn add<C>(self, condition: C) -> Selfwhere
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 = sea_query::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>) -> Selfwhere
C: Into<ConditionExpression>,
pub fn add_option<C>(self, other: Option<C>) -> Selfwhere
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::tbl(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::tbl(Glyph::Table, Glyph::Aspect).is_in(vec![3, 4]))
.add(Expr::tbl(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::tbl(Glyph::Table, Glyph::Aspect).is_in(vec![3, 4]))
.add(Expr::tbl(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) -> Self
pub fn not(self) -> Self
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::tbl(Glyph::Table, Glyph::Aspect).is_in(vec![3, 4]))
.add(Expr::tbl(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
sourceimpl From<Condition> for ConditionExpression
impl From<Condition> for ConditionExpression
sourceimpl IntoCondition for Condition
impl IntoCondition for Condition
fn into_condition(self) -> Condition
Auto Trait Implementations
impl !RefUnwindSafe for Condition
impl Send for Condition
impl Sync for Condition
impl Unpin for Condition
impl !UnwindSafe for Condition
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more