pub enum FilterExpr {
Show 14 variants
Eq {
field: String,
value: Value,
},
Ne {
field: String,
value: Value,
},
Lt {
field: String,
value: Value,
},
Le {
field: String,
value: Value,
},
Gt {
field: String,
value: Value,
},
Ge {
field: String,
value: Value,
},
In {
field: String,
values: Vec<Value>,
},
NotIn {
field: String,
values: Vec<Value>,
},
IsNull {
field: String,
},
IsNotNull {
field: String,
},
Like {
field: String,
pattern: String,
},
NotLike {
field: String,
pattern: String,
},
And(Vec<SimpleFilter>),
Or(Vec<SimpleFilter>),
}Expand description
Filter expression for querying entities.
Note: This uses a flat design without recursive Box types to work with rkyv.
And/Or contain Vec
Variants§
Eq
Field equals value.
Ne
Field not equals value.
Lt
Field less than value.
Le
Field less than or equal to value.
Gt
Field greater than value.
Ge
Field greater than or equal to value.
In
Field is in a set of values.
NotIn
Field is not in a set of values.
IsNull
Field is null.
IsNotNull
Field is not null.
Like
Field matches a LIKE pattern.
NotLike
Field does not match a LIKE pattern.
And(Vec<SimpleFilter>)
All conditions must be true (flat list, single level).
Or(Vec<SimpleFilter>)
At least one condition must be true (flat list, single level).
Implementations§
Source§impl FilterExpr
impl FilterExpr
Sourcepub fn eq(field: impl Into<String>, value: impl Into<Value>) -> Self
pub fn eq(field: impl Into<String>, value: impl Into<Value>) -> Self
Create an equality filter.
Sourcepub fn ne(field: impl Into<String>, value: impl Into<Value>) -> Self
pub fn ne(field: impl Into<String>, value: impl Into<Value>) -> Self
Create a not-equal filter.
Sourcepub fn lt(field: impl Into<String>, value: impl Into<Value>) -> Self
pub fn lt(field: impl Into<String>, value: impl Into<Value>) -> Self
Create a less-than filter.
Sourcepub fn le(field: impl Into<String>, value: impl Into<Value>) -> Self
pub fn le(field: impl Into<String>, value: impl Into<Value>) -> Self
Create a less-than-or-equal filter.
Sourcepub fn gt(field: impl Into<String>, value: impl Into<Value>) -> Self
pub fn gt(field: impl Into<String>, value: impl Into<Value>) -> Self
Create a greater-than filter.
Sourcepub fn ge(field: impl Into<String>, value: impl Into<Value>) -> Self
pub fn ge(field: impl Into<String>, value: impl Into<Value>) -> Self
Create a greater-than-or-equal filter.
Sourcepub fn not_in_values(field: impl Into<String>, values: Vec<Value>) -> Self
pub fn not_in_values(field: impl Into<String>, values: Vec<Value>) -> Self
Create a NOT IN filter.
Sourcepub fn is_not_null(field: impl Into<String>) -> Self
pub fn is_not_null(field: impl Into<String>) -> Self
Create an IS NOT NULL filter.
Sourcepub fn like(field: impl Into<String>, pattern: impl Into<String>) -> Self
pub fn like(field: impl Into<String>, pattern: impl Into<String>) -> Self
Create a LIKE filter.
Sourcepub fn and(exprs: Vec<SimpleFilter>) -> Self
pub fn and(exprs: Vec<SimpleFilter>) -> Self
Create an AND filter combining multiple simple expressions.
Sourcepub fn or(exprs: Vec<SimpleFilter>) -> Self
pub fn or(exprs: Vec<SimpleFilter>) -> Self
Create an OR filter combining multiple simple expressions.
Trait Implementations§
Source§impl Archive for FilterExpr
impl Archive for FilterExpr
Source§type Archived = ArchivedFilterExpr
type Archived = ArchivedFilterExpr
Source§type Resolver = FilterExprResolver
type Resolver = FilterExprResolver
Source§fn resolve(
&self,
resolver: <Self as Archive>::Resolver,
out: Place<<Self as Archive>::Archived>,
)
fn resolve( &self, resolver: <Self as Archive>::Resolver, out: Place<<Self as Archive>::Archived>, )
Source§const COPY_OPTIMIZATION: CopyOptimization<Self> = _
const COPY_OPTIMIZATION: CopyOptimization<Self> = _
serialize. Read moreSource§impl Clone for FilterExpr
impl Clone for FilterExpr
Source§fn clone(&self) -> FilterExpr
fn clone(&self) -> FilterExpr
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for FilterExpr
impl Debug for FilterExpr
Source§impl<'de> Deserialize<'de> for FilterExpr
impl<'de> Deserialize<'de> for FilterExpr
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<__D: Fallible + ?Sized> Deserialize<FilterExpr, __D> for Archived<FilterExpr>where
String: Archive,
<String as Archive>::Archived: Deserialize<String, __D>,
Value: Archive,
<Value as Archive>::Archived: Deserialize<Value, __D>,
Vec<Value>: Archive,
<Vec<Value> as Archive>::Archived: Deserialize<Vec<Value>, __D>,
Vec<SimpleFilter>: Archive,
<Vec<SimpleFilter> as Archive>::Archived: Deserialize<Vec<SimpleFilter>, __D>,
impl<__D: Fallible + ?Sized> Deserialize<FilterExpr, __D> for Archived<FilterExpr>where
String: Archive,
<String as Archive>::Archived: Deserialize<String, __D>,
Value: Archive,
<Value as Archive>::Archived: Deserialize<Value, __D>,
Vec<Value>: Archive,
<Vec<Value> as Archive>::Archived: Deserialize<Vec<Value>, __D>,
Vec<SimpleFilter>: Archive,
<Vec<SimpleFilter> as Archive>::Archived: Deserialize<Vec<SimpleFilter>, __D>,
Source§fn deserialize(
&self,
deserializer: &mut __D,
) -> Result<FilterExpr, <__D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut __D, ) -> Result<FilterExpr, <__D as Fallible>::Error>
Source§impl From<FilterExpr> for Filter
impl From<FilterExpr> for Filter
Source§fn from(expression: FilterExpr) -> Self
fn from(expression: FilterExpr) -> Self
Source§impl PartialEq for FilterExpr
impl PartialEq for FilterExpr
Source§impl Serialize for FilterExpr
impl Serialize for FilterExpr
impl StructuralPartialEq for FilterExpr
Auto Trait Implementations§
impl Freeze for FilterExpr
impl RefUnwindSafe for FilterExpr
impl Send for FilterExpr
impl Sync for FilterExpr
impl Unpin for FilterExpr
impl UnwindSafe for FilterExpr
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> ArchiveUnsized for Twhere
T: Archive,
impl<T> ArchiveUnsized for Twhere
T: Archive,
Source§type Archived = <T as Archive>::Archived
type Archived = <T as Archive>::Archived
Archive, it may be
unsized. Read moreSource§fn archived_metadata(
&self,
) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
fn archived_metadata( &self, ) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.