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)),
]);
§Text Search
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
- Search
Filter - Search filter for text-based searches
- Sort
- Sort specification
Enums§
- Filter
Operator - Filter operator for building complex queries
- Filter
Value - Filter value that can be a single value or multiple values