filters

Collection filter datastructures.

class advanced_alchemy.filters.BeforeAfter[source]

Bases: object

Data required to filter a query on a datetime column.

field_name: str

Name of the model attribute to filter on.

before: datetime | None

Filter results where field earlier than this.

after: datetime | None

Filter results where field later than this.

__init__(field_name: str, before: datetime | None, after: datetime | None) None
class advanced_alchemy.filters.CollectionFilter[source]

Bases: Generic[T]

Data required to construct a WHERE ... IN (...) clause.

field_name: str

Name of the model attribute to filter on.

values: Collection[T] | None

Values for IN clause.

An empty list will return an empty result set, however, if None, the filter is not applied to the query, and all rows are returned.

__init__(field_name: str, values: Collection[T] | None) None
advanced_alchemy.filters.FilterTypes: TypeAlias = 'BeforeAfter | OnBeforeAfter | CollectionFilter[Any] | LimitOffset | OrderBy | SearchFilter | NotInCollectionFilter[Any] | NotInSearchFilter'

Aggregate type alias of the types supported for collection filtering.

class advanced_alchemy.filters.LimitOffset[source]

Bases: object

Data required to add limit/offset filtering to a query.

limit: int

Value for LIMIT clause of query.

__init__(limit: int, offset: int) None
offset: int

Value for OFFSET clause of query.

class advanced_alchemy.filters.OrderBy[source]

Bases: object

Data required to construct a ORDER BY ... clause.

__init__(field_name: str, sort_order: Literal['asc', 'desc'] = 'asc') None
field_name: str

Name of the model attribute to sort on.

sort_order: Literal['asc', 'desc'] = 'asc'

Sort ascending or descending

class advanced_alchemy.filters.SearchFilter[source]

Bases: object

Data required to construct a WHERE field_name LIKE '%' || :value || '%' clause.

__init__(field_name: str, value: str, ignore_case: bool | None = False) None
field_name: str

Name of the model attribute to sort on.

value: str

Values for LIKE clause.

ignore_case: bool | None = False

Should the search be case insensitive.

class advanced_alchemy.filters.NotInCollectionFilter[source]

Bases: Generic[T]

Data required to construct a WHERE ... NOT IN (...) clause.

field_name: str

Name of the model attribute to filter on.

values: Collection[T] | None

Values for NOT IN clause.

An empty list or None will return all rows.

__init__(field_name: str, values: Collection[T] | None) None
class advanced_alchemy.filters.OnBeforeAfter[source]

Bases: object

Data required to filter a query on a datetime column.

field_name: str

Name of the model attribute to filter on.

on_or_before: datetime | None

Filter results where field is on or earlier than this.

on_or_after: datetime | None

Filter results where field on or later than this.

__init__(field_name: str, on_or_before: datetime | None, on_or_after: datetime | None) None
class advanced_alchemy.filters.NotInSearchFilter[source]

Bases: object

Data required to construct a WHERE field_name NOT LIKE '%' || :value || '%' clause.

__init__(field_name: str, value: str, ignore_case: bool | None = False) None
field_name: str

Name of the model attribute to search on.

value: str

Values for NOT LIKE clause.

ignore_case: bool | None = False

Should the search be case insensitive.