import { injectable } from 'inversify'; import { Tag } from '../../../entities/library/tag'; import { Work } from '../../../entities/library/work'; import { getDeserializedEntityPromise } from '../get-deserialized'; import { serializeEntityPromise } from '../serialize-entity-promise'; import { Serializer } from '../serializer'; @injectable() export class WorkTagSerializer extends Serializer { public async serialize(entity: WorkTagEntityInterface): Promise { const [tag, work] = await Promise.all([serializeEntityPromise(entity.tag), serializeEntityPromise(entity.work)]); return { id: entity.id, weight: entity.weight, tag, work, }; } public deserialize(partial: Partial): Partial { return { ...(partial.id ? { id: partial.id } : {}), ...(partial.weight ? { weight: partial.weight } : {}), ...(partial.tag ? { tag: getDeserializedEntityPromise(partial.tag, Tag) } : {}), ...(partial.work ? { work: getDeserializedEntityPromise(partial.work, Work) } : {}), }; } }