macro_rules! filter {
($field:ident == $value:expr) => { ... };
($field:ident != $value:expr) => { ... };
($field:ident > $value:expr) => { ... };
($field:ident >= $value:expr) => { ... };
($field:ident < $value:expr) => { ... };
($field:ident <= $value:expr) => { ... };
($field:ident is null) => { ... };
($field:ident is not null) => { ... };
($field:ident contains $value:expr) => { ... };
($field:ident starts_with $value:expr) => { ... };
($field:ident ends_with $value:expr) => { ... };
($field:ident in [$($value:expr),* $(,)?]) => { ... };
($field:ident not in [$($value:expr),* $(,)?]) => { ... };
}Expand description
Create a filter expression with minimal allocations.
§Syntax
filter!(field == value)- Equalityfilter!(field != value)- Not equalsfilter!(field > value)- Greater thanfilter!(field >= value)- Greater than or equalfilter!(field < value)- Less thanfilter!(field <= value)- Less than or equalfilter!(field is null)- IS NULLfilter!(field is not null)- IS NOT NULLfilter!(field contains value)- LIKE %value%filter!(field starts_with value)- LIKE value%filter!(field ends_with value)- LIKE %valuefilter!(field in [v1, v2, ...])- IN clausefilter!(field not in [v1, v2, ...])- NOT IN clause
§Examples
use prax_query::filter;
use prax_query::filter::Filter;
// Basic comparisons
let f = filter!(id == 42);
let f = filter!(age > 18);
let f = filter!(score >= 100);
// String comparisons
let f = filter!(name == "Alice");
let f = filter!(email contains "@example.com");
// Null checks
let f = filter!(deleted_at is null);
let f = filter!(verified_at is not null);
// IN clauses
let f = filter!(status in ["active", "pending"]);