Add genre_metas endpoint

This commit is contained in:
2022-07-19 18:11:00 +03:00
parent d1974ee650
commit 532ce1c3c3
2 changed files with 23 additions and 2 deletions

View 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

View File

@@ -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)