import { injectable } from 'inversify'; import { Collection } from '../../../entities/library/collection'; import { Work } from '../../../entities/library/work'; import { getDeserializedEntityPromise } from '../get-deserialized'; import { serializeEntityPromise } from '../serialize-entity-promise'; import { Serializer } from '../serializer'; @injectable() export class CollectionPartSerializer extends Serializer< CollectionPartEntityInterface, CollectionPartSerializedInterface > { public async serialize(entity: CollectionPartEntityInterface): Promise { const [collection, work] = await Promise.all([ serializeEntityPromise(entity.collection), serializeEntityPromise(entity.work), ]); return { id: entity.id, order: entity.order, collection, work, }; } public deserialize(partial: Partial): Partial { return { ...(partial.id ? { id: partial.id } : {}), ...(partial.order ? { order: partial.order } : {}), ...(partial.collection ? { collection: getDeserializedEntityPromise(partial.collection, Collection) } : {}), ...(partial.work ? { work: getDeserializedEntityPromise(partial.work, Work) } : {}), }; } }