RenaiApp/src/renderer/store/repositories/entities/transformation-type-reposit...

44 lines
2.2 KiB
TypeScript

import { entityApi } from '../../../services/api';
import { MultiNamedEntityRepository, MultiNamedEntityRepositoryInterface } from '../multi-named-entity-repository';
import { fillUpdatePartialArray, fillUpdatePartialPrimitive } from '../util/fill-update-partial';
import { updateMultiRelatedRepository } from '../util/update-related';
const transformationRepositoryPromise = import('./transformation-repository').then((m) => m.transformationRepository);
const transformationTypeNameRepositoryPromise = import('./transformation-type-name-repository').then(
(m) => m.transformationTypeNameRepository,
);
export const transformationTypeRepository: MultiNamedEntityRepositoryInterface<
TransformationTypeSerializedInterface,
TransformationTypeNameSerializedInterface
> = new MultiNamedEntityRepository(
(id) => entityApi.readTransformationType(id),
(partial) => entityApi.createTransformationType(partial),
(id, partial) => entityApi.updateTransformationType(id, partial),
(id) => entityApi.deleteTransformationType(id),
{
nameCanonical: (updatePartial, key, updated, original): void => {
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
},
description: (updatePartial, key, updated, original): void => {
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
},
conservesTags: (updatePartial, key, updated, original): void => {
fillUpdatePartialPrimitive(updated, original, key, updatePartial);
},
names: (updatePartial, key, updated, original): void => {
fillUpdatePartialArray(updated, original, key, updatePartial);
},
transformations: (updatePartial, key, updated, original): void => {
fillUpdatePartialArray(updated, original, key, updatePartial);
},
},
{
names: (updatedPartial, key, updated, original): Promise<void> =>
updateMultiRelatedRepository(updatedPartial, key, transformationTypeNameRepositoryPromise, updated, original),
transformations: (updatedPartial, key, updated, original): Promise<void> =>
updateMultiRelatedRepository(updatedPartial, key, transformationRepositoryPromise, updated, original),
},
transformationTypeNameRepositoryPromise,
);