RenaiApp/src/shared/services/serialization/serializers/work.ts

46 lines
1.2 KiB
TypeScript

import { Serializer } from '../serializer';
export const workSerializer = new Serializer<WorkEntityInterface, WorkSerializedInterface>(async (work) => {
const [
languages,
collectionParts,
copies,
names,
transformationOf,
transformedBy,
workAuthors,
workCharacters,
workTags,
worlds,
] = await Promise.all([
work.languages,
work.collectionParts,
work.copies,
work.names,
work.transformationOf,
work.transformedBy,
work.workAuthors,
work.workCharacters,
work.workTags,
work.worlds,
]);
return {
id: work.id,
isCanonical: work.isCanonical,
nameCanonical: work.nameCanonical,
rating: work.rating,
releaseDate: work.releaseDate,
languages: languages.map((e) => e.code),
collectionParts: collectionParts.map((e) => e.id),
copies: copies.map((e) => e.id),
names: names.map((e) => e.id),
transformationOf: transformationOf.map((e) => e.id),
transformedBy: transformedBy.map((e) => e.id),
workAuthors: workAuthors.map((e) => e.id),
workCharacters: workCharacters.map((e) => e.id),
workTags: workTags.map((e) => e.id),
worlds: worlds.map((e) => e.id),
};
});