Struct arel::statements::filter::Filter
source · pub struct Filter<M: Arel> { /* private fields */ }Implementations§
source§impl<M: Arel> Filter<M>
impl<M: Arel> Filter<M>
sourcepub fn and_filter<K: AsRef<str>, V: Into<Value>>(
&mut self,
key: K,
value: V
) -> &mut Self
pub fn and_filter<K: AsRef<str>, V: Into<Value>>( &mut self, key: K, value: V ) -> &mut Self
Examples
use arel::prelude::*;
use arel::statements::filter::Filter;
#[arel]
struct User {}
impl Arel for User {}
let mut filter = Filter::<User>::default();
filter.and_filter("username", "sanmu");
#[cfg(any(feature = "sqlite", feature = "mysql"))]
assert_eq!(filter.to_sql().unwrap().unwrap().to_sql_string().unwrap(), r#""user"."username" = ?"#);
filter.and_filter("age", vec![18, 20]);
#[cfg(any(feature = "sqlite", feature = "mysql"))]
assert_eq!(filter.to_sql().unwrap().unwrap().to_sql_string().unwrap(), r#""user"."username" = ? AND "user"."age" IN (?, ?)"#);
sourcepub fn and_filter_pairs<K: AsRef<str>, V: Into<Value>>(
&mut self,
pairs: Vec<(K, V)>
) -> &mut Self
pub fn and_filter_pairs<K: AsRef<str>, V: Into<Value>>( &mut self, pairs: Vec<(K, V)> ) -> &mut Self
Examples
use arel::prelude::*;
use arel::statements::filter::Filter;
#[arel]
struct User {}
impl Arel for User {}
let mut filter = Filter::<User>::default();
filter.and_filter_pairs(vec![("username", Into::<arel::Value>::into("sanmu")), ("age", Into::<arel::Value>::into(vec![18, 20]))]);
#[cfg(any(feature = "sqlite", feature = "mysql"))]
assert_eq!(filter.to_sql().unwrap().unwrap().to_sql_string().unwrap(), r#""user"."username" = ? AND "user"."age" IN (?, ?)"#);
filter.and_filter("gender", "male");
#[cfg(any(feature = "sqlite", feature = "mysql"))]
assert_eq!(filter.to_sql().unwrap().unwrap().to_sql_string().unwrap(), r#""user"."username" = ? AND "user"."age" IN (?, ?) AND "user"."gender" = ?"#);
pub fn and_filter_sql<S: Into<Sql>>(&mut self, sql: S) -> &mut Self
sourcepub fn and_not_filter<K: AsRef<str>, V: Into<Value>>(
&mut self,
key: K,
value: V
) -> &mut Self
pub fn and_not_filter<K: AsRef<str>, V: Into<Value>>( &mut self, key: K, value: V ) -> &mut Self
Examples
use arel::prelude::*;
use arel::statements::filter::Filter;
#[arel]
struct User {}
impl Arel for User {}
let mut filter = Filter::<User>::default();
filter.and_not_filter("username", "sanmu");
#[cfg(any(feature = "sqlite", feature = "mysql"))]
assert_eq!(filter.to_sql().unwrap().unwrap().to_sql_string().unwrap(), r#""user"."username" != ?"#);
filter.and_not_filter("aga", vec![18, 20]);
#[cfg(any(feature = "sqlite", feature = "mysql"))]
assert_eq!(filter.to_sql().unwrap().unwrap().to_sql_string().unwrap(), r#""user"."username" != ? AND "user"."aga" NOT IN (?, ?)"#);
pub fn and_not_filter_pairs<K: AsRef<str>, V: Into<Value>>( &mut self, pairs: Vec<(K, V)> ) -> &mut Self
sourcepub fn or_filter<K: AsRef<str>, V: Into<Value>>(
&mut self,
key: K,
value: V
) -> &mut Self
pub fn or_filter<K: AsRef<str>, V: Into<Value>>( &mut self, key: K, value: V ) -> &mut Self
Examples
use arel::prelude::*;
use arel::statements::filter::Filter;
#[arel]
struct User {}
impl Arel for User {}
let mut filter = Filter::<User>::default();
filter.or_filter("username", "sanmu");
#[cfg(any(feature = "sqlite", feature = "mysql"))]
assert_eq!(filter.to_sql().unwrap().unwrap().to_sql_string().unwrap(), r#""user"."username" = ?"#);
filter.or_filter("age", vec![18, 20]);
#[cfg(any(feature = "sqlite", feature = "mysql"))]
assert_eq!(filter.to_sql().unwrap().unwrap().to_sql_string().unwrap(), r#""user"."username" = ? OR "user"."age" IN (?, ?)"#);
filter.and_filter("gender", "male");
#[cfg(any(feature = "sqlite", feature = "mysql"))]
assert_eq!(filter.to_sql().unwrap().unwrap().to_sql_string().unwrap(), r#""user"."username" = ? OR "user"."age" IN (?, ?) AND "user"."gender" = ?"#);
sourcepub fn or_filter_pairs<K: AsRef<str>, V: Into<Value>>(
&mut self,
pairs: Vec<(K, V)>
) -> &mut Self
pub fn or_filter_pairs<K: AsRef<str>, V: Into<Value>>( &mut self, pairs: Vec<(K, V)> ) -> &mut Self
Examples
use arel::prelude::*;
use arel::statements::filter::Filter;
#[arel]
struct User {}
impl Arel for User {}
let mut filter = Filter::<User>::default();
filter.or_filter_pairs(vec![("username", Into::<arel::Value>::into("sanmu")), ("age", Into::<arel::Value>::into(vec![18, 20]))]);
#[cfg(any(feature = "sqlite", feature = "mysql"))]
assert_eq!(filter.to_sql().unwrap().unwrap().to_sql_string().unwrap(), r#"("user"."username" = ? OR "user"."age" IN (?, ?))"#);
filter.or_filter("gender", "male");
#[cfg(any(feature = "sqlite", feature = "mysql"))]
assert_eq!(filter.to_sql().unwrap().unwrap().to_sql_string().unwrap(), r#"("user"."username" = ? OR "user"."age" IN (?, ?)) OR "user"."gender" = ?"#);
pub fn or_filter_sql<S: Into<Sql>>(&mut self, sql: S) -> &mut Self
sourcepub fn or_not_filter<K: AsRef<str>, V: Into<Value>>(
&mut self,
key: K,
value: V
) -> &mut Self
pub fn or_not_filter<K: AsRef<str>, V: Into<Value>>( &mut self, key: K, value: V ) -> &mut Self
Examples
#[cfg(any(feature = “sqlite”, feature = “mysql”))]
use arel::prelude::*;
use arel::statements::filter::Filter;
#[arel]
struct User {}
impl Arel for User {}
let mut filter = Filter::<User>::default();
filter.or_not_filter("username", "sanmu");
#[cfg(any(feature = "sqlite", feature = "mysql"))]
assert_eq!(filter.to_sql().unwrap().unwrap().to_sql_string().unwrap(), r#""user"."username" != ?"#);
filter.or_not_filter("aga", vec![18, 20]);
#[cfg(any(feature = "sqlite", feature = "mysql"))]
assert_eq!(filter.to_sql().unwrap().unwrap().to_sql_string().unwrap(), r#""user"."username" != ? OR "user"."aga" NOT IN (?, ?)"#);
pub fn or_not_filter_pairs<K: AsRef<str>, V: Into<Value>>( &mut self, pairs: Vec<(K, V)> ) -> &mut Self
pub fn unfilter_starts_with<K: AsRef<str>>(&mut self, start: K) -> &mut Self
sourcepub fn unfilter<K: ToString>(&mut self, key: K) -> &mut Self
pub fn unfilter<K: ToString>(&mut self, key: K) -> &mut Self
Examples
use arel::prelude::*;
use arel::statements::filter::Filter;
#[arel]
struct User {}
impl Arel for User {}
let mut filter = Filter::<User>::default();
filter.and_filter_pairs(vec![("username", Into::<arel::Value>::into("sanmu")), ("age", Into::<arel::Value>::into(vec![18, 20]))]);
filter.unfilter("age");
#[cfg(any(feature = "sqlite", feature = "mysql"))]
assert_eq!(filter.to_sql().unwrap().unwrap().to_sql_string().unwrap(), r#""user"."username" = ?"#);
Trait Implementations§
Auto Trait Implementations§
impl<M> !RefUnwindSafe for Filter<M>
impl<M> Send for Filter<M>
impl<M> Sync for Filter<M>where
M: Sync,
impl<M> Unpin for Filter<M>where
M: Unpin,
impl<M> !UnwindSafe for Filter<M>
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