37 lines
790 B
Python
37 lines
790 B
Python
from typing import List, Dict
|
|
from uuid import UUID
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from app.schema import Artist
|
|
|
|
|
|
class ArtistCreation(BaseModel):
|
|
name: str
|
|
|
|
class ArtistResponse(BaseModel):
|
|
id: UUID
|
|
name: str
|
|
|
|
class ArtistDetailResponse(BaseModel):
|
|
id: UUID
|
|
name: str
|
|
works: Dict[str, List[str]]
|
|
|
|
def get_artist_details(artist: Artist) -> ArtistDetailResponse:
|
|
works = {}
|
|
for work in artist.comic_works:
|
|
work_type = work.work_type.name
|
|
comic_title = work.comic.title
|
|
if work_type in works:
|
|
works[work_type].append(comic_title)
|
|
else:
|
|
works[work_type] = [comic_title]
|
|
response = ArtistDetailResponse(
|
|
id=artist.id,
|
|
name=artist.name,
|
|
works=works
|
|
)
|
|
return response
|
|
|