96 lines
5.6 KiB
TypeScript
96 lines
5.6 KiB
TypeScript
import { entityApi } from '../../../services/api';
|
|
import { MultiNamedEntityRepository, MultiNamedEntityRepositoryInterface } from '../multi-named-entity-repository';
|
|
import { fillUpdatePartialArray, fillUpdatePartialPrimitive } from '../util/fill-update-partial';
|
|
import { updateMultiRelatedRepository } from '../util/update-related';
|
|
|
|
const collectionPartRepositoryPromise = import('./collection-part-repository').then((m) => m.collectionPartRepository);
|
|
const copyRepositoryPromise = import('./copy-repository').then((m) => m.copyRepository);
|
|
const languageRepositoryPromise = import('./language-repository').then((m) => m.languageRepository);
|
|
const transformationRepositoryPromise = import('./transformation-repository').then((m) => m.transformationRepository);
|
|
const workAuthorRepositoryPromise = import('./work-author-repository').then((m) => m.workAuthorRepository);
|
|
const workCharacterRepositoryPromise = import('./work-character-repository').then((m) => m.workCharacterRepository);
|
|
const workNameRepositoryPromise = import('./work-name-repository').then((m) => m.workNameRepository);
|
|
const workTagRepositoryPromise = import('./work-tag-repository').then((m) => m.workTagRepository);
|
|
const worldRepositoryPromise = import('./world-repository').then((m) => m.worldRepository);
|
|
|
|
export const workRepository: MultiNamedEntityRepositoryInterface<WorkSerializedInterface, WorkNameSerializedInterface> =
|
|
new MultiNamedEntityRepository(
|
|
(id) => entityApi.readWork(id),
|
|
(partial) => entityApi.createWork(partial),
|
|
(id, partial) => entityApi.updateWork(id, partial),
|
|
(id) => entityApi.deleteWork(id),
|
|
{
|
|
nameCanonical: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
|
|
},
|
|
isCanonical: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
|
|
},
|
|
rating: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
|
|
},
|
|
releaseDate: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
|
|
},
|
|
languages: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialArray<'languages', LangCode>(updated, original, key, updatePartial);
|
|
},
|
|
names: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialArray(updated, original, key, updatePartial);
|
|
},
|
|
copies: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialArray(updated, original, key, updatePartial);
|
|
},
|
|
workTags: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialArray(updated, original, key, updatePartial);
|
|
},
|
|
workAuthors: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialArray(updated, original, key, updatePartial);
|
|
},
|
|
workCharacters: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialArray(updated, original, key, updatePartial);
|
|
},
|
|
collectionParts: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialArray(updated, original, key, updatePartial);
|
|
},
|
|
transformationOf: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialArray(updated, original, key, updatePartial);
|
|
},
|
|
transformedBy: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialArray(updated, original, key, updatePartial);
|
|
},
|
|
worlds: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialArray(updated, original, key, updatePartial);
|
|
},
|
|
},
|
|
{
|
|
languages: (updatedPartial, key, updated, original): Promise<void> =>
|
|
updateMultiRelatedRepository<'languages', LangCode>(
|
|
updatedPartial,
|
|
key,
|
|
languageRepositoryPromise,
|
|
updated,
|
|
original,
|
|
),
|
|
names: (updatedPartial, key, updated, original): Promise<void> =>
|
|
updateMultiRelatedRepository(updatedPartial, key, workNameRepositoryPromise, updated, original),
|
|
copies: (updatedPartial, key, updated, original): Promise<void> =>
|
|
updateMultiRelatedRepository(updatedPartial, key, copyRepositoryPromise, updated, original),
|
|
workTags: (updatedPartial, key, updated, original): Promise<void> =>
|
|
updateMultiRelatedRepository(updatedPartial, key, workTagRepositoryPromise, updated, original),
|
|
workAuthors: (updatedPartial, key, updated, original): Promise<void> =>
|
|
updateMultiRelatedRepository(updatedPartial, key, workAuthorRepositoryPromise, updated, original),
|
|
workCharacters: (updatedPartial, key, updated, original): Promise<void> =>
|
|
updateMultiRelatedRepository(updatedPartial, key, workCharacterRepositoryPromise, updated, original),
|
|
collectionParts: (updatedPartial, key, updated, original): Promise<void> =>
|
|
updateMultiRelatedRepository(updatedPartial, key, collectionPartRepositoryPromise, updated, original),
|
|
transformationOf: (updatedPartial, key, updated, original): Promise<void> =>
|
|
updateMultiRelatedRepository(updatedPartial, key, transformationRepositoryPromise, updated, original),
|
|
transformedBy: (updatedPartial, key, updated, original): Promise<void> =>
|
|
updateMultiRelatedRepository(updatedPartial, key, transformationRepositoryPromise, updated, original),
|
|
worlds: (updatedPartial, key, updated, original): Promise<void> =>
|
|
updateMultiRelatedRepository(updatedPartial, key, worldRepositoryPromise, updated, original),
|
|
},
|
|
workNameRepositoryPromise,
|
|
);
|