pub struct FilterBuilder<'a> { /* private fields */ }Expand description
A builder for constructing filters within a pool.
Provides ergonomic methods for building filter trees with minimal allocations.
Implementations§
Source§impl<'a> FilterBuilder<'a>
impl<'a> FilterBuilder<'a>
Sourcepub fn value<V: IntoPooledValue<'a>>(&self, v: V) -> PooledValue<'a>
pub fn value<V: IntoPooledValue<'a>>(&self, v: V) -> PooledValue<'a>
Convert a value into a pooled value.
Sourcepub fn none(&self) -> PooledFilter<'a>
pub fn none(&self) -> PooledFilter<'a>
Create an empty filter (matches everything).
Sourcepub fn eq<V: IntoPooledValue<'a>>(
&self,
field: &str,
value: V,
) -> PooledFilter<'a>
pub fn eq<V: IntoPooledValue<'a>>( &self, field: &str, value: V, ) -> PooledFilter<'a>
Create an equals filter.
§Examples
use prax_query::pool::FilterPool;
let pool = FilterPool::new();
let filter = pool.build(|b| b.eq("status", "active"));Sourcepub fn ne<V: IntoPooledValue<'a>>(
&self,
field: &str,
value: V,
) -> PooledFilter<'a>
pub fn ne<V: IntoPooledValue<'a>>( &self, field: &str, value: V, ) -> PooledFilter<'a>
Create a not equals filter.
Sourcepub fn lt<V: IntoPooledValue<'a>>(
&self,
field: &str,
value: V,
) -> PooledFilter<'a>
pub fn lt<V: IntoPooledValue<'a>>( &self, field: &str, value: V, ) -> PooledFilter<'a>
Create a less than filter.
Sourcepub fn lte<V: IntoPooledValue<'a>>(
&self,
field: &str,
value: V,
) -> PooledFilter<'a>
pub fn lte<V: IntoPooledValue<'a>>( &self, field: &str, value: V, ) -> PooledFilter<'a>
Create a less than or equal filter.
Sourcepub fn gt<V: IntoPooledValue<'a>>(
&self,
field: &str,
value: V,
) -> PooledFilter<'a>
pub fn gt<V: IntoPooledValue<'a>>( &self, field: &str, value: V, ) -> PooledFilter<'a>
Create a greater than filter.
Sourcepub fn gte<V: IntoPooledValue<'a>>(
&self,
field: &str,
value: V,
) -> PooledFilter<'a>
pub fn gte<V: IntoPooledValue<'a>>( &self, field: &str, value: V, ) -> PooledFilter<'a>
Create a greater than or equal filter.
Sourcepub fn is_in(
&self,
field: &str,
values: Vec<PooledValue<'a>>,
) -> PooledFilter<'a>
pub fn is_in( &self, field: &str, values: Vec<PooledValue<'a>>, ) -> PooledFilter<'a>
Create an IN filter.
§Examples
use prax_query::pool::FilterPool;
let pool = FilterPool::new();
let filter = pool.build(|b| {
b.is_in("status", vec![b.value("pending"), b.value("processing")])
});Sourcepub fn not_in(
&self,
field: &str,
values: Vec<PooledValue<'a>>,
) -> PooledFilter<'a>
pub fn not_in( &self, field: &str, values: Vec<PooledValue<'a>>, ) -> PooledFilter<'a>
Create a NOT IN filter.
Sourcepub fn contains<V: IntoPooledValue<'a>>(
&self,
field: &str,
value: V,
) -> PooledFilter<'a>
pub fn contains<V: IntoPooledValue<'a>>( &self, field: &str, value: V, ) -> PooledFilter<'a>
Create a contains filter (LIKE %value%).
Sourcepub fn starts_with<V: IntoPooledValue<'a>>(
&self,
field: &str,
value: V,
) -> PooledFilter<'a>
pub fn starts_with<V: IntoPooledValue<'a>>( &self, field: &str, value: V, ) -> PooledFilter<'a>
Create a starts with filter (LIKE value%).
Sourcepub fn ends_with<V: IntoPooledValue<'a>>(
&self,
field: &str,
value: V,
) -> PooledFilter<'a>
pub fn ends_with<V: IntoPooledValue<'a>>( &self, field: &str, value: V, ) -> PooledFilter<'a>
Create an ends with filter (LIKE %value).
Sourcepub fn is_null(&self, field: &str) -> PooledFilter<'a>
pub fn is_null(&self, field: &str) -> PooledFilter<'a>
Create an IS NULL filter.
Sourcepub fn is_not_null(&self, field: &str) -> PooledFilter<'a>
pub fn is_not_null(&self, field: &str) -> PooledFilter<'a>
Create an IS NOT NULL filter.
Sourcepub fn and(&self, filters: Vec<PooledFilter<'a>>) -> PooledFilter<'a>
pub fn and(&self, filters: Vec<PooledFilter<'a>>) -> PooledFilter<'a>
Create an AND filter combining multiple filters.
§Examples
use prax_query::pool::FilterPool;
let pool = FilterPool::new();
let filter = pool.build(|b| {
b.and(vec![
b.eq("active", true),
b.gt("score", 100),
b.is_not_null("email"),
])
});Sourcepub fn or(&self, filters: Vec<PooledFilter<'a>>) -> PooledFilter<'a>
pub fn or(&self, filters: Vec<PooledFilter<'a>>) -> PooledFilter<'a>
Create an OR filter combining multiple filters.
§Examples
use prax_query::pool::FilterPool;
let pool = FilterPool::new();
let filter = pool.build(|b| {
b.or(vec![
b.eq("role", "admin"),
b.eq("role", "moderator"),
])
});Sourcepub fn not(&self, filter: PooledFilter<'a>) -> PooledFilter<'a>
pub fn not(&self, filter: PooledFilter<'a>) -> PooledFilter<'a>
Create a NOT filter.
§Examples
use prax_query::pool::FilterPool;
let pool = FilterPool::new();
let filter = pool.build(|b| b.not(b.eq("deleted", true)));Auto Trait Implementations§
impl<'a> Freeze for FilterBuilder<'a>
impl<'a> !RefUnwindSafe for FilterBuilder<'a>
impl<'a> !Send for FilterBuilder<'a>
impl<'a> !Sync for FilterBuilder<'a>
impl<'a> Unpin for FilterBuilder<'a>
impl<'a> !UnwindSafe for FilterBuilder<'a>
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more