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