Filters#
Composable SQL statement filters for building WHERE clauses, pagination,
ordering, and search conditions. Filters can be applied to any SQL statement
via apply_filter().
apply_filter#
Base#
- class sqlspec.core.filters.StatementFilter[source]#
Bases:
ABCAbstract base class for filters that can be appended to a statement.
- abstractmethod append_to_statement(statement)[source]#
Append the filter to the statement.
This method modifies the SQL expression and adds parameters via
add_named_parameter()on the returned statement.- Return type:
- extract_parameters()[source]#
Return the parameters this filter would contribute.
This is an introspection helper and is not called during the normal filter-application path (
append_to_statementhandles both expression modification and parameter addition).
- __eq__(other)[source]#
Compare filters by their cache key for round-trip and deduplication checks.
- Return type:
Date Filters#
- class sqlspec.core.filters.BeforeAfterFilter[source]#
Bases:
_DatetimeBoundFilterFilter for datetime range queries.
Applies WHERE clauses for before/after datetime filtering.
- __eq__(other)#
Compare filters by their cache key for round-trip and deduplication checks.
- Return type:
- __hash__()#
Hash via the canonical filter key so unhashable members are normalized.
- Return type:
- __reduce__()#
Reconstruct via
cls(*ctor_args)— works on mypyc native classes.
- extract_parameters()#
Extract filter parameters.
- get_cache_key()#
Return cache key for this filter configuration.
- class sqlspec.core.filters.OnBeforeAfterFilter[source]#
Bases:
_DatetimeBoundFilterFilter for inclusive datetime range queries.
Applies WHERE clauses for on-or-before/on-or-after datetime filtering.
- __eq__(other)#
Compare filters by their cache key for round-trip and deduplication checks.
- Return type:
- __hash__()#
Hash via the canonical filter key so unhashable members are normalized.
- Return type:
- __reduce__()#
Reconstruct via
cls(*ctor_args)— works on mypyc native classes.
- extract_parameters()#
Extract filter parameters.
- get_cache_key()#
Return cache key for this filter configuration.
Collection Filters#
- class sqlspec.core.filters.InCollectionFilter[source]#
Bases:
InAnyFilter[T]Filter for IN clause queries.
Constructs WHERE ... IN (...) clauses.
- class sqlspec.core.filters.NotInCollectionFilter[source]#
Bases:
InAnyFilter[T]Filter for NOT IN clause queries.
Constructs WHERE ... NOT IN (...) clauses.
Null Filters#
- class sqlspec.core.filters.NullFilter[source]#
Bases:
StatementFilterFilter for IS NULL queries.
Constructs WHERE field_name IS NULL clauses.
- class sqlspec.core.filters.NotNullFilter[source]#
Bases:
StatementFilterFilter for IS NOT NULL queries.
Constructs WHERE field_name IS NOT NULL clauses.
- extract_parameters()[source]#
Extract filter parameters.
Returns empty parameters since IS NOT NULL requires no values.
Pagination#
- class sqlspec.core.filters.LimitOffsetFilter[source]#
Bases:
PaginationFilterFilter for LIMIT and OFFSET clauses.
Adds pagination support through LIMIT/OFFSET SQL clauses.
Ordering#
- class sqlspec.core.filters.OrderByFilter[source]#
Bases:
StatementFilterFilter for ORDER BY clauses.
Adds sorting capability to SQL queries.
Search#
- class sqlspec.core.filters.SearchFilter[source]#
Bases:
_TextSearchFilterFilter for text search queries.
Constructs WHERE field_name LIKE '%value%' clauses.
- __eq__(other)#
Compare filters by their cache key for round-trip and deduplication checks.
- Return type:
- __hash__()#
Hash via the canonical filter key so unhashable members are normalized.
- Return type:
- __init__(field_name, value, ignore_case=False)#
- __reduce__()#
Reconstruct via
cls(*ctor_args)— works on mypyc native classes.
- append_to_statement(statement)#
Append the filter to the statement.
This method modifies the SQL expression and adds parameters via
add_named_parameter()on the returned statement.- Return type:
- static escape_like_value(value)#
Escape
%and_metacharacters for safe LIKE/ILIKE pattern matching.Backslash is the default LIKE escape character in PostgreSQL (with
standard_conforming_stringson), SQLite, and MySQL, so the produced pattern is safe without an explicitESCAPEclause on those engines.
- extract_parameters()#
Extract filter parameters.
- get_cache_key()#
Return cache key for this filter configuration.
- class sqlspec.core.filters.NotInSearchFilter[source]#
Bases:
SearchFilterFilter for negated text search queries.
Constructs WHERE field_name NOT LIKE '%value%' clauses.
- __eq__(other)#
Compare filters by their cache key for round-trip and deduplication checks.
- Return type:
- __hash__()#
Hash via the canonical filter key so unhashable members are normalized.
- Return type:
- __init__(field_name, value, ignore_case=False)#
- __reduce__()#
Reconstruct via
cls(*ctor_args)— works on mypyc native classes.
- append_to_statement(statement)#
Append the filter to the statement.
This method modifies the SQL expression and adds parameters via
add_named_parameter()on the returned statement.- Return type:
- static escape_like_value(value)#
Escape
%and_metacharacters for safe LIKE/ILIKE pattern matching.Backslash is the default LIKE escape character in PostgreSQL (with
standard_conforming_stringson), SQLite, and MySQL, so the produced pattern is safe without an explicitESCAPEclause on those engines.
- extract_parameters()#
Extract filter parameters.
- get_cache_key()#
Return cache key for this filter configuration.
Type Aliases#
- sqlspec.core.filters.FilterTypes#
Union type of all filter classes.