add issue display

This commit is contained in:
Thomas Peetz
2025-05-02 18:17:06 +02:00
committed by Thomas Peetz
parent cf49408d0c
commit aa375573de
2 changed files with 25 additions and 3 deletions
+11 -2
View File
@@ -2,10 +2,11 @@ from typing import List, AnyStr
from fastapi import APIRouter, HTTPException, status from fastapi import APIRouter, HTTPException, status
from src.apis.utils import SessionDep from src.apis.utils import SessionDep
from src.db.repository.comic import get_artist_details, list_comics from src.db.repository.comic import get_artist_details, list_comics, get_issue_details
from src.schema.comics.comic import ComicResponse, ComicDetailsResponse, get_comic_details, get_short_info from src.schema.comics.comic import ComicResponse, ComicDetailsResponse, get_comic_details, get_short_info
from src.schema.comics.artist import ArtistCreation, ArtistDetailResponse, ArtistResponse from src.schema.comics.artist import ArtistCreation, ArtistDetailResponse, ArtistResponse
from src.db.models.comic import Comic, Artist from src.db.models.comic import Comic, Artist, Issue
from src.schema.comics.issue import IssueDetailsResponse
router = APIRouter( router = APIRouter(
prefix="/comic", prefix="/comic",
@@ -59,3 +60,11 @@ def add_artist(db: SessionDep, artist_creation: ArtistCreation) -> ArtistRespons
response = ArtistResponse(id=artist.id, name=artist.name) response = ArtistResponse(id=artist.id, name=artist.name)
return response return response
@router.get("/issues", response_model=List[IssueDetailsResponse])
def get_issues(db: SessionDep) -> List[IssueDetailsResponse]:
results: List[IssueDetailsResponse] = []
issues = db.query(Issue).all()
for issue in issues:
results.append(get_issue_details(issue))
return results
+14 -1
View File
@@ -2,8 +2,9 @@ from typing import List, Type
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from src.db.models.comic import Artist, Comic from src.db.models.comic import Artist, Comic, Issue
from src.schema.comics.artist import ArtistDetailResponse from src.schema.comics.artist import ArtistDetailResponse
from src.schema.comics.issue import IssueDetailsResponse
def get_artist_details(artist: Artist) -> ArtistDetailResponse: def get_artist_details(artist: Artist) -> ArtistDetailResponse:
@@ -25,3 +26,15 @@ def get_artist_details(artist: Artist) -> ArtistDetailResponse:
def list_comics(db: Session) -> List[Type[Comic]]: def list_comics(db: Session) -> List[Type[Comic]]:
comics = db.query(Comic).all() comics = db.query(Comic).all()
return comics return comics
def get_issue_details(issue: Issue) -> IssueDetailsResponse:
response = IssueDetailsResponse(
id=issue.id,
issue_number=issue.issue_number,
in_stock=issue.in_stock,
is_read=issue.is_read,
comic_id=issue.comic_id,
volume_id=issue.volume_id
)
return response