46 lines
1.2 KiB
TypeScript
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),
|
|
};
|
|
});
|