Skip to content

uriyyo/fastapi-filters

Repository files navigation

logo

license test codecov downloads pypi black

Introduction

fastapi-filters is a library that provides filtering/sorting feature for FastAPI applications.


Installation

pip install fastapi-filters

Quickstart

To create filters you need either define them manually using create_filters function or automatically generate them based on model using create_filters_from_model function.

from typing import List from fastapi import FastAPI, Depends from pydantic import BaseModel, Field # import all you need from fastapi-filters from fastapi_filters import create_filters, create_filters_from_model, FilterValues app = FastAPI() # create FastAPI app class UserOut(BaseModel): # define your model name: str = Field(..., example="Steve") surname: str = Field(..., example="Rogers") age: int = Field(..., example=102) @app.get("/users") async def get_users_manual_filters( # manually define filters filters: FilterValues = Depends(create_filters(name=str, surname=str, age=int)), ) -> List[UserOut]: pass @app.get("/users") async def get_users_auto_filters( # or automatically generate filters from pydantic model filters: FilterValues = Depends(create_filters_from_model(UserOut)), ) -> List[UserOut]: pass

Currently, fastapi-filters supports SQLAlchemy integration.

from fastapi_filters.ext.sqlalchemy import apply_filters @app.get("/users") async def get_users( db: AsyncSession = Depends(get_db), filters: FilterValues = Depends(create_filters_from_model(UserOut)), ) -> List[UserOut]: query = apply_filters(select(UserOut), filters) return (await db.scalars(query)).all()

About

FastAPI filters🍸

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages