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 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.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(
prefix="/comic",
@@ -59,3 +60,11 @@ def add_artist(db: SessionDep, artist_creation: ArtistCreation) -> ArtistRespons
response = ArtistResponse(id=artist.id, name=artist.name)
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 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.issue import IssueDetailsResponse
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]]:
comics = db.query(Comic).all()
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