40 lines
2.2 KiB
TypeScript
40 lines
2.2 KiB
TypeScript
import { entityApi } from '../../../services/api';
|
|
import { EditableEntityRepository } from '../editable-entity-repository';
|
|
import type { EditableEntityRepositoryInterface } from '../editable-entity-repository';
|
|
import { fillUpdatePartialArray, fillUpdatePartialPrimitive } from '../util/fill-update-partial';
|
|
import { updateMultiRelatedRepository, updateSingleRelatedRepository } from '../util/update-related';
|
|
|
|
const authorRepositoryPromise = import('./author-repository').then((m) => m.authorRepository);
|
|
const authorRoleRepositoryPromise = import('./author-role-repository').then((m) => m.authorRoleRepository);
|
|
const workRepositoryPromise = import('./work-repository').then((m) => m.workRepository);
|
|
|
|
export const workAuthorRepository: EditableEntityRepositoryInterface<WorkAuthorSerializedInterface> =
|
|
new EditableEntityRepository(
|
|
(id) => entityApi.readWorkAuthor(id),
|
|
(partial) => entityApi.createWorkAuthor(partial),
|
|
(id, partial) => entityApi.updateWorkAuthor(id, partial),
|
|
(id) => entityApi.deleteWorkAuthor(id),
|
|
{
|
|
order: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
|
|
},
|
|
work: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
|
|
},
|
|
author: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
|
|
},
|
|
authorRoles: (updatePartial, key, updated, original): void => {
|
|
fillUpdatePartialArray(updated, original, key, updatePartial);
|
|
},
|
|
},
|
|
{
|
|
work: (updatedPartial, key, updated, original): Promise<void> =>
|
|
updateSingleRelatedRepository(updatedPartial, key, workRepositoryPromise, updated, original),
|
|
author: (updatedPartial, key, updated, original): Promise<void> =>
|
|
updateSingleRelatedRepository(updatedPartial, key, authorRepositoryPromise, updated, original),
|
|
authorRoles: (updatedPartial, key, updated, original): Promise<void> =>
|
|
updateMultiRelatedRepository(updatedPartial, key, authorRoleRepositoryPromise, updated, original),
|
|
},
|
|
);
|