diff --git a/kontor-api/src/apis/version1/comic.py b/kontor-api/src/apis/version1/comic.py index 2541f2b..5a70195 100644 --- a/kontor-api/src/apis/version1/comic.py +++ b/kontor-api/src/apis/version1/comic.py @@ -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 + diff --git a/kontor-api/src/db/repository/comic.py b/kontor-api/src/db/repository/comic.py index 3388bb4..a8774c5 100644 --- a/kontor-api/src/db/repository/comic.py +++ b/kontor-api/src/db/repository/comic.py @@ -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