RenaiApp/src/renderer/store/repositories/entities/collection-part-repository.ts

34 lines
1.7 KiB
TypeScript

import { entityApi } from '../../../services/api';
import { EditableEntityRepository } from '../editable-entity-repository';
import type { EditableEntityRepositoryInterface } from '../editable-entity-repository';
import { fillUpdatePartialPrimitive } from '../util/fill-update-partial';
import { updateSingleRelatedRepository } from '../util/update-related';
const collectionRepositoryPromise = import('./collection-repository').then((m) => m.collectionRepository);
const workRepositoryPromise = import('./work-repository').then((m) => m.workRepository);
export const collectionPartRepository: EditableEntityRepositoryInterface<CollectionPartSerializedInterface> =
new EditableEntityRepository(
(id) => entityApi.readCollectionPart(id),
(partial) => entityApi.createCollectionPart(partial),
(id, partial) => entityApi.updateCollectionPart(id, partial),
(id) => entityApi.deleteCollectionPart(id),
{
order: (updatePartial, key, updated, original): void => {
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
},
collection: (updatePartial, key, updated, original): void => {
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
},
work: (updatePartial, key, updated, original): void => {
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
},
},
{
collection: (updatedPartial, key, updated, original): Promise<void> =>
updateSingleRelatedRepository(updatedPartial, key, collectionRepositoryPromise, updated, original),
work: (updatedPartial, key, updated, original): Promise<void> =>
updateSingleRelatedRepository(updatedPartial, key, workRepositoryPromise, updated, original),
},
);