34 lines
1.7 KiB
TypeScript
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),
|
|
},
|
|
);
|