49 lines
2.1 KiB
TypeScript
49 lines
2.1 KiB
TypeScript
import { injectable } from 'inversify';
|
|
import { WorkCharacter } from '../../../entities/library/work-character';
|
|
import { World } from '../../../entities/library/world';
|
|
import { WorldCharacter } from '../../../entities/library/world-character';
|
|
import { WorldCharacterName } from '../../../entities/library/world-character-name';
|
|
import { getDeserializedEntitiesPromise } from '../get-deserialized';
|
|
import { serializeEntitiesPromise } from '../serialize-entity-promise';
|
|
import { Serializer } from '../serializer';
|
|
|
|
@injectable()
|
|
export class WorldCharacterSerializer extends Serializer<
|
|
WorldCharacterEntityInterface,
|
|
WorldCharacterSerializedInterface
|
|
> {
|
|
public async serialize(entity: WorldCharacterEntityInterface): Promise<WorldCharacterSerializedInterface> {
|
|
const [names, children, parents, workCharacters, worlds] = await Promise.all([
|
|
serializeEntitiesPromise(entity.names),
|
|
serializeEntitiesPromise(entity.children),
|
|
serializeEntitiesPromise(entity.parents),
|
|
serializeEntitiesPromise(entity.workCharacters),
|
|
serializeEntitiesPromise(entity.worlds),
|
|
]);
|
|
|
|
return {
|
|
id: entity.id,
|
|
nameCanonical: entity.nameCanonical,
|
|
names,
|
|
children,
|
|
parents,
|
|
workCharacters,
|
|
worlds,
|
|
};
|
|
}
|
|
|
|
public deserialize(partial: Partial<WorldCharacterSerializedInterface>): Partial<WorldCharacterEntityInterface> {
|
|
return {
|
|
...(partial.id ? { id: partial.id } : {}),
|
|
...(partial.nameCanonical ? { nameCanonical: partial.nameCanonical } : {}),
|
|
...(partial.names ? { names: getDeserializedEntitiesPromise(partial.names, WorldCharacterName) } : {}),
|
|
...(partial.children ? { children: getDeserializedEntitiesPromise(partial.children, WorldCharacter) } : {}),
|
|
...(partial.parents ? { parents: getDeserializedEntitiesPromise(partial.parents, WorldCharacter) } : {}),
|
|
...(partial.workCharacters
|
|
? { workCharacters: getDeserializedEntitiesPromise(partial.workCharacters, WorkCharacter) }
|
|
: {}),
|
|
...(partial.worlds ? { worlds: getDeserializedEntitiesPromise(partial.worlds, World) } : {}),
|
|
};
|
|
}
|
|
}
|