Migrate page layout services (#16443)
Last step of the page layout migration: - Migrate services - Write integration tests
This commit is contained in:
+17
-2
@@ -4,11 +4,12 @@ import { msg, t } from '@lingui/core/macro';
|
||||
import { type ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type FlatPageLayoutTab } from 'src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type';
|
||||
import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
|
||||
import { type FlatPageLayoutTab } from 'src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type';
|
||||
import { PageLayoutExceptionCode } from 'src/engine/metadata-modules/page-layout/exceptions/page-layout.exception';
|
||||
import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
|
||||
const PAGE_LAYOUT_TAB_EXCEPTION_CODE = {
|
||||
PAGE_LAYOUT_TAB_NOT_FOUND: 'PAGE_LAYOUT_TAB_NOT_FOUND',
|
||||
@@ -18,6 +19,7 @@ const PAGE_LAYOUT_TAB_EXCEPTION_CODE = {
|
||||
export class FlatPageLayoutTabValidatorService {
|
||||
public validateFlatPageLayoutTabCreation({
|
||||
flatEntityToValidate: flatPageLayoutTab,
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: { flatPageLayoutMaps },
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.pageLayoutTab
|
||||
>): FailedFlatEntityValidation<FlatPageLayoutTab> {
|
||||
@@ -30,6 +32,19 @@ export class FlatPageLayoutTabValidatorService {
|
||||
},
|
||||
};
|
||||
|
||||
const referencedPageLayout = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId: flatPageLayoutTab.pageLayoutId,
|
||||
flatEntityMaps: flatPageLayoutMaps,
|
||||
});
|
||||
|
||||
if (!isDefined(referencedPageLayout)) {
|
||||
validationResult.errors.push({
|
||||
code: PageLayoutExceptionCode.PAGE_LAYOUT_NOT_FOUND,
|
||||
message: t`Page layout not found`,
|
||||
userFriendlyMessage: msg`Page layout not found`,
|
||||
});
|
||||
}
|
||||
|
||||
return validationResult;
|
||||
}
|
||||
|
||||
|
||||
+16
@@ -4,7 +4,9 @@ import { msg, t } from '@lingui/core/macro';
|
||||
import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
|
||||
import { FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type';
|
||||
import { PageLayoutTabExceptionCode } from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-tab.exception';
|
||||
import { PageLayoutWidgetExceptionCode } from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-widget.exception';
|
||||
import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
@@ -95,6 +97,7 @@ export class FlatPageLayoutWidgetValidatorService {
|
||||
public validateFlatPageLayoutWidgetCreation({
|
||||
flatEntityToValidate: flatPageLayoutWidgetToValidate,
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
|
||||
flatPageLayoutTabMaps,
|
||||
flatPageLayoutWidgetMaps: optimisticFlatPageLayoutWidgetMaps,
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
@@ -124,6 +127,19 @@ export class FlatPageLayoutWidgetValidatorService {
|
||||
});
|
||||
}
|
||||
|
||||
const referencedPageLayoutTab = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId: flatPageLayoutWidgetToValidate.pageLayoutTabId,
|
||||
flatEntityMaps: flatPageLayoutTabMaps,
|
||||
});
|
||||
|
||||
if (!isDefined(referencedPageLayoutTab)) {
|
||||
validationResult.errors.push({
|
||||
code: PageLayoutTabExceptionCode.PAGE_LAYOUT_TAB_NOT_FOUND,
|
||||
message: t`Page layout tab not found`,
|
||||
userFriendlyMessage: msg`Page layout tab not found`,
|
||||
});
|
||||
}
|
||||
|
||||
return validationResult;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user