25 lines
977 B
TypeScript
25 lines
977 B
TypeScript
import { injectable } from 'inversify';
|
|
import { Work } from '../../../entities/library/work';
|
|
import { getDeserializedEntitiesPromise } from '../get-deserialized';
|
|
import { serializeEntitiesPromise } from '../serialize-entity-promise.js';
|
|
import { Serializer } from '../serializer.js';
|
|
|
|
@injectable()
|
|
export class LanguageSerializer extends Serializer<LanguageEntityInterface, LanguageSerializedInterface, string> {
|
|
public async serialize(entity: LanguageEntityInterface): Promise<LanguageSerializedInterface> {
|
|
return {
|
|
id: entity.code,
|
|
code: entity.code,
|
|
works: await serializeEntitiesPromise(entity.works),
|
|
};
|
|
}
|
|
|
|
public deserialize(partial: Partial<LanguageSerializedInterface>): Partial<LanguageEntityInterface> {
|
|
return {
|
|
...(partial.id ? { id: partial.id } : {}),
|
|
...(partial.code ? { code: partial.code } : {}),
|
|
...(partial.works ? { works: getDeserializedEntitiesPromise(partial.works, Work) } : {}),
|
|
};
|
|
}
|
|
}
|