RenaiApp/src/renderer/store/repositories/entities/transformation-repository.ts

41 lines
2.1 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 transformationTypeRepositoryPromise = import('./transformation-type-repository').then(
(m) => m.transformationTypeRepository,
);
const workRepositoryPromise = import('./work-repository').then((m) => m.workRepository);
export const transformationRepository: EditableEntityRepositoryInterface<TransformationSerializedInterface> =
new EditableEntityRepository(
(id) => entityApi.readTransformation(id),
(partial) => entityApi.createTransformation(partial),
(id, partial) => entityApi.updateTransformation(id, partial),
(id) => entityApi.deleteTransformation(id),
{
order: (updatePartial, key, updated, original): void => {
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
},
type: (updatePartial, key, updated, original): void => {
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
},
ofWork: (updatePartial, key, updated, original): void => {
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
},
byWork: (updatePartial, key, updated, original): void => {
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
},
},
{
type: (updatedPartial, key, updated, original): Promise<void> =>
updateSingleRelatedRepository(updatedPartial, key, transformationTypeRepositoryPromise, updated, original),
ofWork: (updatedPartial, key, updated, original): Promise<void> =>
updateSingleRelatedRepository(updatedPartial, key, workRepositoryPromise, updated, original),
byWork: (updatedPartial, key, updated, original): Promise<void> =>
updateSingleRelatedRepository(updatedPartial, key, workRepositoryPromise, updated, original),
},
);