RenaiApp/src/renderer/store/repositories/entities/character-tag-repository.ts

33 lines
1.7 KiB
TypeScript

import { entityApi } from '../../../services/api';
import { EditableEntityRepository, EditableEntityRepositoryInterface } from '../editable-entity-repository';
import { fillUpdatePartialPrimitive } from '../util/fill-update-partial';
import { updateSingleRelatedRepository } from '../util/update-related';
const tagRepositoryPromise = import('./tag-repository').then((m) => m.tagRepository);
const workCharacterRepositoryPromise = import('./work-character-repository').then((m) => m.workCharacterRepository);
export const characterTagRepository: EditableEntityRepositoryInterface<CharacterTagSerializedInterface> =
new EditableEntityRepository(
(id) => entityApi.readCharacterTag(id),
(partial) => entityApi.createCharacterTag(partial),
(id, partial) => entityApi.updateCharacterTag(id, partial),
(id) => entityApi.deleteCharacterTag(id),
{
weight: (updatePartial, key, updated, original): void => {
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
},
tag: (updatePartial, key, updated, original): void => {
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
},
workCharacter: (updatePartial, key, updated, original): void => {
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
},
},
{
tag: (updatedPartial, key, updated, original): Promise<void> =>
updateSingleRelatedRepository(updatedPartial, key, tagRepositoryPromise, updated, original),
workCharacter: (updatedPartial, key, updated, original): Promise<void> =>
updateSingleRelatedRepository(updatedPartial, key, workCharacterRepositoryPromise, updated, original),
},
);