filter

Macro filter 

Source
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) - Equality
  • filter!(field != value) - Not equals
  • filter!(field > value) - Greater than
  • filter!(field >= value) - Greater than or equal
  • filter!(field < value) - Less than
  • filter!(field <= value) - Less than or equal
  • filter!(field is null) - IS NULL
  • filter!(field is not null) - IS NOT NULL
  • filter!(field contains value) - LIKE %value%
  • filter!(field starts_with value) - LIKE value%
  • filter!(field ends_with value) - LIKE %value
  • filter!(field in [v1, v2, ...]) - IN clause
  • filter!(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"]);