33 lines
1.0 KiB
Python
33 lines
1.0 KiB
Python
from uuid import UUID
|
|
|
|
from fastapi import APIRouter, Depends, HTTPException
|
|
from sqlalchemy import select
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.models.comic import ComicResponse
|
|
from app.schema import Comic, get_db, SessionDep
|
|
|
|
router = APIRouter(
|
|
prefix="/comic",
|
|
tags=["comics"],
|
|
responses={404: {"description": "Not found"}},
|
|
)
|
|
|
|
|
|
@router.get("/comics")
|
|
def get_all_comics(db: SessionDep) -> list[ComicResponse]:
|
|
results: list[ComicResponse] = []
|
|
comics = db.scalars(select(Comic)).all()
|
|
for comic in comics:
|
|
results.append(ComicResponse(id=comic.id, title=comic.title, completed=(comic.completed == 1)))
|
|
return results
|
|
|
|
|
|
@router.get("/comics/{comic_id}")
|
|
def get_comic(comic_id: UUID, db: SessionDep) -> ComicResponse:
|
|
comic = db.get(Comic, comic_id)
|
|
if comic is None:
|
|
raise HTTPException(status_code=404, detail="Comic could not be found")
|
|
response: ComicResponse = ComicResponse(id=comic_id, title=comic.title, completed=comic.completed)
|
|
return response
|