extend ComicDetailsResponse
This commit is contained in:
@@ -10,7 +10,7 @@ from src.schema.comics.comic import ComicResponse
|
|||||||
from src.schema.comics.artist import ArtistCreation, ArtistResponse
|
from src.schema.comics.artist import ArtistCreation, ArtistResponse
|
||||||
from src.db.models.comic import Comic, Artist, Issue
|
from src.db.models.comic import Comic, Artist, Issue
|
||||||
from src.schema.comics.comic_details import ComicDetailsResponse
|
from src.schema.comics.comic_details import ComicDetailsResponse
|
||||||
from src.schema.comics.issue import IssueDetailsResponse
|
from src.schema.comics.issue_details import IssueDetailsResponse
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ def add_artist(db: SessionDep, artist_creation: ArtistCreation) -> ArtistRespons
|
|||||||
db.commit()
|
db.commit()
|
||||||
except:
|
except:
|
||||||
raise HTTPException(status_code=409, detail="Artist already added")
|
raise HTTPException(status_code=409, detail="Artist already added")
|
||||||
response = ArtistResponse(id=artist.id, name=artist.name)
|
response = ArtistResponse(id=artist.id, name=str(artist.name))
|
||||||
return response
|
return response
|
||||||
|
|
||||||
@router.get("/issues", response_model=List[IssueDetailsResponse])
|
@router.get("/issues", response_model=List[IssueDetailsResponse])
|
||||||
|
|||||||
@@ -7,7 +7,9 @@ from src.db.models.comic import Comic, Issue
|
|||||||
from src.schema.comics.artist import ArtistResponse
|
from src.schema.comics.artist import ArtistResponse
|
||||||
from src.schema.comics.comic import ComicResponse, ComicSchema
|
from src.schema.comics.comic import ComicResponse, ComicSchema
|
||||||
from src.schema.comics.comic_details import ComicDetailsResponse, ComicWorktypeArtistResponse
|
from src.schema.comics.comic_details import ComicDetailsResponse, ComicWorktypeArtistResponse
|
||||||
from src.schema.comics.issue import IssueDetailsResponse
|
from src.schema.comics.issue import IssueResponse
|
||||||
|
from src.schema.comics.issue_details import IssueDetailsResponse
|
||||||
|
from src.schema.comics.publisher import PublisherResponse
|
||||||
from src.schema.comics.volume import VolumeResponse
|
from src.schema.comics.volume import VolumeResponse
|
||||||
from src.schema.comics.worktype import WorktypeResponse
|
from src.schema.comics.worktype import WorktypeResponse
|
||||||
|
|
||||||
@@ -23,8 +25,8 @@ def get_issue_details(issue: Issue) -> IssueDetailsResponse:
|
|||||||
issue_number=str(issue.issue_number),
|
issue_number=str(issue.issue_number),
|
||||||
in_stock=bool(issue.in_stock),
|
in_stock=bool(issue.in_stock),
|
||||||
is_read=bool(issue.is_read),
|
is_read=bool(issue.is_read),
|
||||||
comic_id=str(issue.comic_id),
|
comic=ComicResponse(id=issue.comic.id, title=issue.comic.title, completed=issue.comic.completed),
|
||||||
volume_id=str(issue.volume_id)
|
volume=VolumeResponse(id=issue.volume.id, name=issue.volume.name)
|
||||||
)
|
)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
@@ -46,6 +48,14 @@ def get_comic_details(comic: Comic) -> ComicDetailsResponse:
|
|||||||
volumes: List[VolumeResponse] = []
|
volumes: List[VolumeResponse] = []
|
||||||
for volume in comic.volumes:
|
for volume in comic.volumes:
|
||||||
volumes.append(VolumeResponse(id=volume.id, name=volume.name))
|
volumes.append(VolumeResponse(id=volume.id, name=volume.name))
|
||||||
|
issues: List[IssueResponse] = []
|
||||||
|
for issue in comic.issues:
|
||||||
|
issues.append(IssueResponse(
|
||||||
|
id=issue.id,
|
||||||
|
issue_number=issue.issue_number,
|
||||||
|
in_stock=issue.in_stock,
|
||||||
|
is_read=issue.is_read
|
||||||
|
))
|
||||||
works: List[ComicWorktypeArtistResponse] = []
|
works: List[ComicWorktypeArtistResponse] = []
|
||||||
works_map: Dict[str, ComicWorktypeArtistResponse] = {}
|
works_map: Dict[str, ComicWorktypeArtistResponse] = {}
|
||||||
for work in comic.comic_works:
|
for work in comic.comic_works:
|
||||||
@@ -63,13 +73,14 @@ def get_comic_details(comic: Comic) -> ComicDetailsResponse:
|
|||||||
for value in works_map.values():
|
for value in works_map.values():
|
||||||
works.append(value)
|
works.append(value)
|
||||||
response = ComicDetailsResponse(
|
response = ComicDetailsResponse(
|
||||||
id=comic.id,
|
id=str(comic.id),
|
||||||
created=str(comic.created_date),
|
created=str(comic.created_date),
|
||||||
title=str(comic.title),
|
title=str(comic.title),
|
||||||
completed=bool(comic.completed),
|
completed=bool(comic.completed),
|
||||||
current_order=bool(comic.current_order),
|
current_order=bool(comic.current_order),
|
||||||
weblink=str(comic.weblink),
|
weblink=str(comic.weblink),
|
||||||
publisher=comic.publisher.name,
|
publisher=PublisherResponse(id=comic.publisher.id, name=comic.publisher.name),
|
||||||
|
issues=issues,
|
||||||
volumes=volumes,
|
volumes=volumes,
|
||||||
works=works
|
works=works
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ from typing import List
|
|||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
from src.schema.comics.comic import ComicResponse
|
from src.schema.comics.comic import ComicResponse
|
||||||
from src.schema.comics.issue import IssueDetailsResponse
|
from src.schema.comics.issue_details import IssueDetailsResponse
|
||||||
from src.schema.comics.worktype import WorktypeResponse
|
from src.schema.comics.worktype import WorktypeResponse
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ from typing import List
|
|||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
from src.schema.comics.artist import ArtistResponse
|
from src.schema.comics.artist import ArtistResponse
|
||||||
|
from src.schema.comics.issue import IssueResponse
|
||||||
|
from src.schema.comics.publisher import PublisherResponse
|
||||||
from src.schema.comics.volume import VolumeResponse
|
from src.schema.comics.volume import VolumeResponse
|
||||||
from src.schema.comics.worktype import WorktypeResponse
|
from src.schema.comics.worktype import WorktypeResponse
|
||||||
|
|
||||||
@@ -18,6 +20,7 @@ class ComicDetailsResponse(BaseModel):
|
|||||||
completed : bool
|
completed : bool
|
||||||
current_order : bool
|
current_order : bool
|
||||||
weblink: str
|
weblink: str
|
||||||
publisher: str
|
publisher: PublisherResponse
|
||||||
|
issues: List[IssueResponse]
|
||||||
volumes: List[VolumeResponse]
|
volumes: List[VolumeResponse]
|
||||||
works: List[ComicWorktypeArtistResponse]
|
works: List[ComicWorktypeArtistResponse]
|
||||||
|
|||||||
@@ -1,13 +1,8 @@
|
|||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
from src.schema.comics.comic import ComicResponse
|
|
||||||
from src.schema.comics.volume import VolumeResponse
|
|
||||||
|
|
||||||
|
class IssueResponse(BaseModel):
|
||||||
class IssueDetailsResponse(BaseModel):
|
|
||||||
id: str
|
id: str
|
||||||
issue_number: str
|
issue_number: str
|
||||||
in_stock: bool
|
in_stock: bool
|
||||||
is_read: bool
|
is_read: bool
|
||||||
comic: ComicResponse
|
|
||||||
volume: VolumeResponse | None
|
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
from src.schema.comics.comic import ComicResponse
|
||||||
|
from src.schema.comics.volume import VolumeResponse
|
||||||
|
|
||||||
|
|
||||||
|
class IssueDetailsResponse(BaseModel):
|
||||||
|
id: str
|
||||||
|
issue_number: str
|
||||||
|
in_stock: bool
|
||||||
|
is_read: bool
|
||||||
|
comic: ComicResponse
|
||||||
|
volume: VolumeResponse | None
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
|
||||||
|
class PublisherResponse(BaseModel):
|
||||||
|
id: str
|
||||||
|
name: str
|
||||||
Reference in New Issue
Block a user