mirror of
https://github.com/flibusta-apps/book_library_server.git
synced 2025-12-06 07:05:36 +01:00
Add genre_metas endpoint
This commit is contained in:
10
fastapi_book_server/app/filters/genre.py
Normal file
10
fastapi_book_server/app/filters/genre.py
Normal file
@@ -0,0 +1,10 @@
|
||||
from typing import Optional
|
||||
|
||||
|
||||
def get_genre_filter(meta: Optional[str] = None) -> dict:
|
||||
result = {}
|
||||
|
||||
if meta:
|
||||
result["meta"] = meta
|
||||
|
||||
return result
|
||||
@@ -4,6 +4,7 @@ from fastapi_pagination import Params
|
||||
from fastapi_pagination.ext.ormar import paginate
|
||||
|
||||
from app.depends import check_token, get_allowed_langs
|
||||
from app.filters.genre import get_genre_filter
|
||||
from app.models import Genre as GenreDB
|
||||
from app.serializers.genre import Genre
|
||||
from app.services.genre import GenreMeiliSearchService
|
||||
@@ -19,8 +20,18 @@ PREFETCH_RELATED_FIELDS = ["source"]
|
||||
|
||||
|
||||
@genre_router.get("/", response_model=CustomPage[Genre], dependencies=[Depends(Params)])
|
||||
async def get_genres():
|
||||
return await paginate(GenreDB.objects.prefetch_related(PREFETCH_RELATED_FIELDS))
|
||||
async def get_genres(genre_filter: dict = Depends(get_genre_filter)):
|
||||
return await paginate(
|
||||
GenreDB.objects.prefetch_related(PREFETCH_RELATED_FIELDS)
|
||||
.filter(**genre_filter)
|
||||
.order_by("description")
|
||||
)
|
||||
|
||||
|
||||
@genre_router.get("/metas", response_model=list[str])
|
||||
async def get_genre_metas():
|
||||
genres = await GenreDB.objects.fields("meta").values_list(flatten=True)
|
||||
return sorted(list(set(genres)))
|
||||
|
||||
|
||||
@genre_router.get("/{id}", response_model=Genre)
|
||||
|
||||
Reference in New Issue
Block a user