30 lines
1.2 KiB
TypeScript
30 lines
1.2 KiB
TypeScript
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<WorkTagEntityInterface, WorkTagSerializedInterface> {
|
|
public async serialize(entity: WorkTagEntityInterface): Promise<WorkTagSerializedInterface> {
|
|
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<WorkTagSerializedInterface>): Partial<WorkTagEntityInterface> {
|
|
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) } : {}),
|
|
};
|
|
}
|
|
}
|