Module filters

Source
Expand description

Filtering and search functionality for libsql-orm

This module provides comprehensive filtering capabilities including simple comparisons, complex logical combinations, text search, and sorting. It supports building complex WHERE clauses programmatically with type safety.

§Basic Filtering

use libsql_orm::{Filter, FilterOperator, Value};

// Simple equality filter
let filter = Filter::eq("status", "active");

// Comparison filters
let age_filter = Filter::gt("age", 18i64);
let name_filter = Filter::like("name", "%john%");

// Convert to FilterOperator for use in queries
let filter_op = FilterOperator::Single(age_filter);

§Complex Filtering

use libsql_orm::{Filter, FilterOperator};

// AND combination
let complex_filter = FilterOperator::And(vec![
    FilterOperator::Single(Filter::eq("is_active", true)),
    FilterOperator::Single(Filter::gt("age", 18i64)),
    FilterOperator::Single(Filter::like("email", "%@company.com")),
]);

// OR combination
let or_filter = FilterOperator::Or(vec![
    FilterOperator::Single(Filter::eq("role", "admin")),
    FilterOperator::Single(Filter::eq("role", "moderator")),
]);

// Nested combinations
let nested = FilterOperator::And(vec![
    complex_filter,
    FilterOperator::Not(Box::new(or_filter)),
]);
use libsql_orm::SearchFilter;

// Search across multiple fields
let search = SearchFilter::new("john", vec!["name", "email"])
    .case_sensitive(false)
    .exact_match(false);

let filter_op = search.to_filter_operator();

§Sorting

use libsql_orm::{Sort, SortOrder};

let sorts = vec![
    Sort::new("created_at", SortOrder::Desc),
    Sort::new("name", SortOrder::Asc),
];

Structs§

Filter
Individual filter condition
SearchFilter
Search filter for text-based searches
Sort
Sort specification

Enums§

FilterOperator
Filter operator for building complex queries
FilterValue
Filter value that can be a single value or multiple values