pypaginate.adapters.fastapi.filters
Declarative filter dependency for FastAPI.
Subclass :class:FilterDep and declare fields with :func:FilterField to map
query parameters onto :class:~pypaginate.FilterSpec conditions::
from typing import Annotated from fastapi import Query
class UserFilters(FilterDep): name: str | None = FilterField(None, operator="contains") min_age: int | None = FilterField(None, field="age", operator="gte")
@app.get("/users") def list_users(filters: Annotated[UserFilters, Query()]): specs = filters.to_specs()
Only fields whose value is not None become FilterSpec conditions.
FilterField
def FilterField(default: Any = None,
*,
operator: str = "eq",
field: str | None = None,
**kwargs: Any) -> Any
Declare a filter field carrying its operator + target-field metadata.
Arguments:
default- Default value;Nonemeans the filter is not applied.operator- Filter operator wire name (eq,gte,contains, ...).- ``0 - Target field path; defaults to the attribute name.
1 - Extra keyword arguments forwarded to Pydantic'sFieldInfo``.
Returns:
A Pydantic FieldInfo carrying the filter metadata.
FilterDep Objects
class FilterDep(BaseModel)
Base class for declarative query-parameter filters.
to_specs
def to_specs() -> list[FilterSpec]
Convert each non-None field into a FilterSpec.