53 lines
2.1 KiB
Python
53 lines
2.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,
|
|
created_date=imprint.created_date,
|
|
last_modified_date=imprint.last_modified_date,
|
|
version=imprint.version,
|
|
weblink=str(imprint.weblink),
|
|
parent_publisher_id=imprint.parent_publisher_id,
|
|
name=str(imprint.name)
|
|
)
|
|
)
|
|
comics: List[ComicResponse] = []
|
|
for comic in publisher.comics:
|
|
comics.append(
|
|
ComicResponse(
|
|
id=comic.id,
|
|
created_date=comic.created_date,
|
|
last_modified_date=comic.last_modified_date,
|
|
version=comic.version,
|
|
publisher_id=comic.publisher_id,
|
|
current_order=comic.current_order,
|
|
weblink=comic.weblink,
|
|
title=comic.title,
|
|
completed=comic.completed
|
|
)
|
|
)
|
|
parent_publisher: PublisherResponse | None = None
|
|
if publisher.parent_publisher:
|
|
parent_publisher = PublisherResponse(
|
|
id=publisher.parent_publisher.id,
|
|
created_date=publisher.parent_publisher.created_date,
|
|
last_modified_date=publisher.parent_publisher.last_modified_date,
|
|
version=publisher.parent_publisher.version,#
|
|
weblink=str(publisher.parent_publisher.weblink),
|
|
parent_publisher_id=publisher.parent_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
|