fastapi-peewee-filter

Introduction

Reference: https://github.com/arthurio/fastapi-filter

But this fastapi-filter only supports SQLAlchemy, so I made a fastapi-peewee-filter to support peewee as an ORM

Installation

Python interpreter.

  • CPython : version 3.8 and above

用法

from fastapi import Depends
from fastapi_peewee_filter import BaseFilter
from dataclasses import dataclass, field
from datetime import datetime
from loguru import logger
from fastapi import APIRouter
from fastapi import Query
from fastapi.requests import Request
from core.mysql.models import SeriesTable, TrackingwebsiteTable

series = APIRouter(tags=["GS review"], prefix='/series')


@dataclass
class SeriesFilter(BaseFilter):
    assignee_in: str | None = None
    company_id_in: str | None = None
    company_id_nin: str | None = None
    imdbid_status_in: str | None = None
    confirm_at_gte: datetime | None = None
    confirm_at_lte: datetime | None = None
    created_at_gte: datetime | None = None
    created_at_lte: datetime | None = None
    rating_score_gte: int | None = None
    rating_score_lte: int | None = None

    class Meta:
        model_class = SeriesTable


@series.get('', summary='list series')
def list_series(
    series_filter: SeriesFilter = Depends(SeriesFilter),
    page_size: int = Query(10),
    offset: int = Query(0)
):
    q = series_filter.filter()

    q = q.offset(offset).limit(page_size)

    return list(q.dicts())