RenaiApp/src/main/modules/serialization/serializers/transformation-type-seriali...

44 lines
1.7 KiB
TypeScript

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<TransformationTypeSerializedInterface> {
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<TransformationTypeSerializedInterface>,
): Partial<TransformationTypeEntityInterface> {
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) }
: {}),
};
}
}