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