59fbe35a8c
# Introduction Preparing view-filter and view-group introduction in v2 core engine Moving view from `core-modules` to `metadata-modules` ## What happened ### Created dedicated modules for each view entity: - ViewFieldModule - ViewFilterModule - ViewFilterGroupModule - ViewGroupModule - ViewSortModule ### Each module is now completely independent with its own: - Controller - Resolver - Service - Entity ### Created dedicated abstraction metadata module folder for: - flat-view-field - flat-view ### Dependencies - Eleminated circular dep on ViewModule to all others ones - Granular import not importing the whole viewModule anymore everywhere close https://github.com/twentyhq/core-team-issues/issues/1703
38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
import { t } from '@lingui/core/macro';
|
|
import {
|
|
extractAndSanitizeObjectStringFields,
|
|
isDefined,
|
|
} from 'twenty-shared/utils';
|
|
|
|
import { type FlatViewMaps } from 'src/engine/metadata-modules/flat-view/types/flat-view-maps.type';
|
|
import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type';
|
|
import { type DestroyViewInput } from 'src/engine/metadata-modules/view/dtos/inputs/destroy-view.input';
|
|
import {
|
|
ViewException,
|
|
ViewExceptionCode,
|
|
} from 'src/engine/metadata-modules/view/exceptions/view.exception';
|
|
|
|
export const fromDestroyViewInputToFlatViewOrThrow = ({
|
|
destroyViewInput: rawDestroyViewInput,
|
|
flatViewMaps,
|
|
}: {
|
|
destroyViewInput: DestroyViewInput;
|
|
flatViewMaps: FlatViewMaps;
|
|
}): FlatView => {
|
|
const { id: viewId } = extractAndSanitizeObjectStringFields(
|
|
rawDestroyViewInput,
|
|
['id'],
|
|
);
|
|
|
|
const existingFlatViewToDestroy = flatViewMaps.byId[viewId];
|
|
|
|
if (!isDefined(existingFlatViewToDestroy)) {
|
|
throw new ViewException(
|
|
t`View to destroy not found`,
|
|
ViewExceptionCode.VIEW_NOT_FOUND,
|
|
);
|
|
}
|
|
|
|
return existingFlatViewToDestroy;
|
|
};
|