Files
book_library_server/fastapi_book_server/app/views/genre.py
2022-04-10 16:40:56 +03:00

34 lines
905 B
Python

from fastapi import APIRouter, Depends, HTTPException, status
from fastapi_pagination import Params, Page
from fastapi_pagination.ext.ormar import paginate
from app.depends import check_token
from app.models import Genre as GenreDB
from app.serializers.genre import Genre
genre_router = APIRouter(
prefix="/api/v1/genres", tags=["genres"], dependencies=[Depends(check_token)]
)
PREFETCH_RELATED_FIELDS = ["source"]
@genre_router.get("/", response_model=Page[Genre], dependencies=[Depends(Params)])
async def get_genres():
return await paginate(GenreDB.objects.prefetch_related(PREFETCH_RELATED_FIELDS))
@genre_router.get("/{id}", response_model=Genre)
async def get_genre(id: int):
genre = await GenreDB.objects.prefetch_related(PREFETCH_RELATED_FIELDS).get_or_none(
id=id
)
if genre is None:
raise HTTPException(status.HTTP_404_NOT_FOUND)
return genre