RenaiApp/src/main/modules/serialization/serializers/collection-part-serializer.ts

36 lines
1.3 KiB
TypeScript

import { injectable } from 'inversify';
import { Collection } from '../../../entities/library/collection';
import { Work } from '../../../entities/library/work';
import { getDeserializedEntityPromise } from '../get-deserialized';
import { serializeEntityPromise } from '../serialize-entity-promise';
import { Serializer } from '../serializer';
@injectable()
export class CollectionPartSerializer extends Serializer<
CollectionPartEntityInterface,
CollectionPartSerializedInterface
> {
public async serialize(entity: CollectionPartEntityInterface): Promise<CollectionPartSerializedInterface> {
const [collection, work] = await Promise.all([
serializeEntityPromise(entity.collection),
serializeEntityPromise(entity.work),
]);
return {
id: entity.id,
order: entity.order,
collection,
work,
};
}
public deserialize(partial: Partial<CollectionPartSerializedInterface>): Partial<CollectionPartEntityInterface> {
return {
...(partial.id ? { id: partial.id } : {}),
...(partial.order ? { order: partial.order } : {}),
...(partial.collection ? { collection: getDeserializedEntityPromise(partial.collection, Collection) } : {}),
...(partial.work ? { work: getDeserializedEntityPromise(partial.work, Work) } : {}),
};
}
}