25 lines
1.1 KiB
Python
25 lines
1.1 KiB
Python
from typing import List
|
|
|
|
from src.db.models.comic import Publisher
|
|
from src.schema.comics.comic import ComicResponse
|
|
from src.schema.comics.publisher import PublisherResponse
|
|
from src.schema.comics.publisher_details import PublisherDetailsResponse
|
|
|
|
|
|
def get_publisher_details(publisher: Publisher) -> PublisherDetailsResponse:
|
|
imprints: List[PublisherResponse] = []
|
|
for imprint in publisher.imprints:
|
|
imprints.append(PublisherResponse(id=imprint.id, name=str(imprint.name)))
|
|
comics: List[ComicResponse] = []
|
|
for comic in publisher.comics:
|
|
comics.append(
|
|
ComicResponse(id=comic.id, title=comic.title, completed=comic.completed)
|
|
)
|
|
parent_publisher: PublisherResponse | None = None
|
|
if publisher.parent_publisher:
|
|
parent_publisher = PublisherResponse(id=publisher.parent_publisher.id, name=str(publisher.parent_publisher.name))
|
|
response: PublisherDetailsResponse = PublisherDetailsResponse(
|
|
id=publisher.id, name=str(publisher.name), parent_publisher=parent_publisher, imprints=imprints, comics=comics
|
|
)
|
|
return response
|