54 lines
2.9 KiB
TypeScript
54 lines
2.9 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 workCharacterRepositoryPromise = import('./work-character-repository').then((m) => m.workCharacterRepository);
|
|
const worldCharacterNameRepositoryPromise = import('./world-character-name-repository').then(
|
|
(m) => m.worldCharacterNameRepository,
|
|
);
|
|
const worldRepositoryPromise = import('./world-repository').then((m) => m.worldRepository);
|
|
|
|
export const worldCharacterRepository: MultiNamedEntityRepositoryInterface<
|
|
WorldCharacterSerializedInterface,
|
|
WorldCharacterNameSerializedInterface
|
|
> = new MultiNamedEntityRepository(
|
|
(id) => entityApi.readWorldCharacter(id),
|
|
(partial) => entityApi.createWorldCharacter(partial),
|
|
(id, partial) => entityApi.updateWorldCharacter(id, partial),
|
|
(id) => entityApi.deleteWorldCharacter(id),
|
|
{
|
|
nameCanonical: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
|
|
},
|
|
names: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialArray(updated, original, key, updatePartial);
|
|
},
|
|
worlds: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialArray(updated, original, key, updatePartial);
|
|
},
|
|
workCharacters: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialArray(updated, original, key, updatePartial);
|
|
},
|
|
parents: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialArray(updated, original, key, updatePartial);
|
|
},
|
|
children: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialArray(updated, original, key, updatePartial);
|
|
},
|
|
},
|
|
{
|
|
names: (updatedPartial, key, updated, original): Promise<void> =>
|
|
updateMultiRelatedRepository(updatedPartial, key, worldCharacterNameRepositoryPromise, updated, original),
|
|
worlds: (updatedPartial, key, updated, original): Promise<void> =>
|
|
updateMultiRelatedRepository(updatedPartial, key, worldRepositoryPromise, updated, original),
|
|
workCharacters: (updatedPartial, key, updated, original): Promise<void> =>
|
|
updateMultiRelatedRepository(updatedPartial, key, workCharacterRepositoryPromise, updated, original),
|
|
parents: (updatedPartial, key, updated, original): Promise<void> =>
|
|
updateMultiRelatedRepository(updatedPartial, key, Promise.resolve(worldCharacterRepository), updated, original),
|
|
children: (updatedPartial, key, updated, original): Promise<void> =>
|
|
updateMultiRelatedRepository(updatedPartial, key, Promise.resolve(worldCharacterRepository), updated, original),
|
|
},
|
|
worldCharacterNameRepositoryPromise,
|
|
);
|