Struct Condition
pub struct Condition {
    pub(crate) negate: bool,
    pub(crate) condition_type: ConditionType,
    pub(crate) conditions: Vec<ConditionExpression>,
}Expand description
Represents the value of an Condition::any or Condition::all: a set of disjunctive or conjunctive conditions.
Fields§
§negate: bool§condition_type: ConditionType§conditions: Vec<ConditionExpression>Implementations§
§impl Condition
 
impl Condition
pub 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)"#
);pub 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%'"#
);pub 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%'"#
);pub 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%'"#
);pub 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§
§impl From<Condition> for ConditionExpression
 
impl From<Condition> for ConditionExpression
§fn from(condition: Condition) -> ConditionExpression
 
fn from(condition: Condition) -> ConditionExpression
Converts to this type from the input type.
§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,
§impl<T> Instrument for T
 
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
§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