import { injectable } from 'inversify'; import { Transformation } from '../../../entities/library/transformation'; import { TransformationTypeName } from '../../../entities/library/transformation-type-name'; import { getDeserializedEntitiesPromise } from '../get-deserialized'; import { serializeEntitiesPromise } from '../serialize-entity-promise'; import { Serializer } from '../serializer'; @injectable() export class TransformationTypeSerializer extends Serializer< TransformationTypeEntityInterface, TransformationTypeSerializedInterface > { public async serialize(entity: TransformationTypeEntityInterface): Promise { const [names, transformations] = await Promise.all([ serializeEntitiesPromise(entity.names), serializeEntitiesPromise(entity.transformations), ]); return { id: entity.id, nameCanonical: entity.nameCanonical, description: entity.description, conservesTags: entity.conservesTags, names, transformations, }; } public deserialize( partial: Partial, ): Partial { return { ...(partial.id ? { id: partial.id } : {}), ...(partial.nameCanonical ? { nameCanonical: partial.nameCanonical } : {}), ...(partial.description ? { description: partial.description } : {}), ...(partial.conservesTags ? { conservesTags: partial.conservesTags } : {}), ...(partial.names ? { names: getDeserializedEntitiesPromise(partial.names, TransformationTypeName) } : {}), ...(partial.transformations ? { transformations: getDeserializedEntitiesPromise(partial.transformations, Transformation) } : {}), }; } }