Expand description
ClickHouse Filters
This crate provides a powerful, type-safe, and flexible way to build ClickHouse SQL for pagination, sorting, and filtering. It’s designed to work with the ClickHouse database while maintaining API compatibility with the pg_filters crate.
§Examples
ⓘ
use clickhouse_filters::{ClickHouseFilters, PaginationOptions, FilteringOptions};
use clickhouse_filters::filtering::{FilterCondition, FilterExpression, FilterOperator};
use clickhouse_filters::sorting::SortedColumn;
use std::collections::HashMap;
// Define column types
let mut columns = HashMap::new();
columns.insert("name", ColumnDef::String("name"));
columns.insert("age", ColumnDef::UInt32("age"));
// Create filters
let filters = ClickHouseFilters::new(
Some(PaginationOptions {
current_page: 1,
per_page: 10,
per_page_limit: 10,
total_records: 1000,
}),
vec![SortedColumn::new("name", "asc")],
Some(FilteringOptions::new(
vec![FilterExpression::Condition(FilterCondition::StringValue {
column: "name".to_string(),
operator: FilterOperator::Equal,
value: Some("John".to_string()),
})],
columns.clone(),
)),
columns,
)?;
// Generate SQL
let sql = filters.sql()?;
Modules§
- filtering
- Filtering module for ClickHouse SQL queries
- pagination
- Pagination module for ClickHouse SQL queries
- sorting
- Sorting module for ClickHouse SQL queries
Structs§
- Click
House Filters - Main struct for ClickHouse filtering, sorting, and pagination
- Filtering
Options - Filtering options for ClickHouse queries
- Pagination
Options - Pagination options for ClickHouse queries
Enums§
- Column
Def - ColumnDef enum represents different ClickHouse column types