Migrate all remaining workspace migration create action to universal (#17836)
# Introduction Completely finalize the universal migration at builder and runner levels. Which mean that from now on the builder only compares `universalFlatEntity` and produces universal workspace migration that the runner ingest ## What's done Migrated all create metadata remaining for - agent - skill - commandMenuItem - navigationMenuItem - fieldMetadata - objectMetadata - view - viewField - viewFilter - viewGroup - viewFilterGroup - index - logicFunction - role - roleTarget - pageLayout - pageLayoutTab - pageLayoutWidget - rowLevelPermissionPredicate - rowLevelPermissionPredicateGroup - frontComponent
This commit is contained in:
+52
-26
@@ -41,19 +41,33 @@ import { type FlatRowLevelPermissionPredicateGroupMaps } from 'src/engine/metada
|
||||
import { type FlatRowLevelPermissionPredicateGroup } from 'src/engine/metadata-modules/row-level-permission-predicate/types/flat-row-level-permission-predicate-group.type';
|
||||
import { type FlatRowLevelPermissionPredicateMaps } from 'src/engine/metadata-modules/row-level-permission-predicate/types/flat-row-level-permission-predicate-maps.type';
|
||||
import { type FlatRowLevelPermissionPredicate } from 'src/engine/metadata-modules/row-level-permission-predicate/types/flat-row-level-permission-predicate.type';
|
||||
import { type UniversalFlatAgent } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-agent.type';
|
||||
import { type UniversalFlatCommandMenuItem } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-command-menu-item.type';
|
||||
import { type UniversalFlatEntityFrom } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-entity-from.type';
|
||||
import { type UniversalFlatFrontComponent } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-front-component.type';
|
||||
import { type UniversalFlatIndexMetadata } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-index-metadata.type';
|
||||
import { type UniversalFlatLogicFunction } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-logic-function.type';
|
||||
import { type UniversalFlatNavigationMenuItem } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-navigation-menu-item.type';
|
||||
import { type UniversalFlatObjectMetadata } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-object-metadata.type';
|
||||
import { type UniversalFlatPageLayout } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-page-layout.type';
|
||||
import { type UniversalFlatPageLayoutTab } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-page-layout-tab.type';
|
||||
import { type UniversalFlatPageLayoutWidget } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-page-layout-widget.type';
|
||||
import { type UniversalFlatRole } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-role.type';
|
||||
import { type UniversalFlatRoleTarget } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-role-target.type';
|
||||
import { type UniversalFlatRowLevelPermissionPredicate } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-row-level-permission-predicate.type';
|
||||
import { type UniversalFlatRowLevelPermissionPredicateGroup } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-row-level-permission-predicate-group.type';
|
||||
import { type UniversalFlatSkill } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-skill.type';
|
||||
import { type UniversalFlatViewField } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-view-field.type';
|
||||
import { type UniversalFlatViewFilterGroup } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-view-filter-group.type';
|
||||
import { type UniversalFlatViewFilter } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-view-filter.type';
|
||||
import { type UniversalFlatViewGroup } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-view-group.type';
|
||||
import { type UniversalFlatView } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-view.type';
|
||||
import { type UniversalFlatWebhook } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-webhook.type';
|
||||
import {
|
||||
type FlatCreateAgentAction,
|
||||
type FlatDeleteAgentAction,
|
||||
type FlatUpdateAgentAction,
|
||||
type UniversalCreateAgentAction,
|
||||
type UniversalDeleteAgentAction,
|
||||
type UniversalUpdateAgentAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/agent/types/workspace-migration-agent-action-builder.service';
|
||||
@@ -61,6 +75,7 @@ import {
|
||||
type FlatCreateCommandMenuItemAction,
|
||||
type FlatDeleteCommandMenuItemAction,
|
||||
type FlatUpdateCommandMenuItemAction,
|
||||
type UniversalCreateCommandMenuItemAction,
|
||||
type UniversalDeleteCommandMenuItemAction,
|
||||
type UniversalUpdateCommandMenuItemAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/command-menu-item/types/workspace-migration-command-menu-item-action.type';
|
||||
@@ -76,6 +91,7 @@ import {
|
||||
type FlatCreateFrontComponentAction,
|
||||
type FlatDeleteFrontComponentAction,
|
||||
type FlatUpdateFrontComponentAction,
|
||||
type UniversalCreateFrontComponentAction,
|
||||
type UniversalDeleteFrontComponentAction,
|
||||
type UniversalUpdateFrontComponentAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/front-component/types/workspace-migration-front-component-action.type';
|
||||
@@ -91,6 +107,7 @@ import {
|
||||
type FlatCreateLogicFunctionAction,
|
||||
type FlatDeleteLogicFunctionAction,
|
||||
type FlatUpdateLogicFunctionAction,
|
||||
type UniversalCreateLogicFunctionAction,
|
||||
type UniversalDeleteLogicFunctionAction,
|
||||
type UniversalUpdateLogicFunctionAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/logic-function/types/workspace-migration-logic-function-action.type';
|
||||
@@ -98,6 +115,7 @@ import {
|
||||
type FlatCreateNavigationMenuItemAction,
|
||||
type FlatDeleteNavigationMenuItemAction,
|
||||
type FlatUpdateNavigationMenuItemAction,
|
||||
type UniversalCreateNavigationMenuItemAction,
|
||||
type UniversalDeleteNavigationMenuItemAction,
|
||||
type UniversalUpdateNavigationMenuItemAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/navigation-menu-item/types/workspace-migration-navigation-menu-item-action.type';
|
||||
@@ -113,6 +131,7 @@ import {
|
||||
type FlatCreatePageLayoutTabAction,
|
||||
type FlatDeletePageLayoutTabAction,
|
||||
type FlatUpdatePageLayoutTabAction,
|
||||
type UniversalCreatePageLayoutTabAction,
|
||||
type UniversalDeletePageLayoutTabAction,
|
||||
type UniversalUpdatePageLayoutTabAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action.type';
|
||||
@@ -120,6 +139,7 @@ import {
|
||||
type FlatCreatePageLayoutWidgetAction,
|
||||
type FlatDeletePageLayoutWidgetAction,
|
||||
type FlatUpdatePageLayoutWidgetAction,
|
||||
type UniversalCreatePageLayoutWidgetAction,
|
||||
type UniversalDeletePageLayoutWidgetAction,
|
||||
type UniversalUpdatePageLayoutWidgetAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action.type';
|
||||
@@ -127,6 +147,7 @@ import {
|
||||
type FlatCreatePageLayoutAction,
|
||||
type FlatDeletePageLayoutAction,
|
||||
type FlatUpdatePageLayoutAction,
|
||||
type UniversalCreatePageLayoutAction,
|
||||
type UniversalDeletePageLayoutAction,
|
||||
type UniversalUpdatePageLayoutAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout/types/workspace-migration-page-layout-action.type';
|
||||
@@ -134,6 +155,7 @@ import {
|
||||
type FlatCreateRoleTargetAction,
|
||||
type FlatDeleteRoleTargetAction,
|
||||
type FlatUpdateRoleTargetAction,
|
||||
type UniversalCreateRoleTargetAction,
|
||||
type UniversalDeleteRoleTargetAction,
|
||||
type UniversalUpdateRoleTargetAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role-target/types/workspace-migration-role-target-action.type';
|
||||
@@ -141,6 +163,7 @@ import {
|
||||
type FlatCreateRoleAction,
|
||||
type FlatDeleteRoleAction,
|
||||
type FlatUpdateRoleAction,
|
||||
type UniversalCreateRoleAction,
|
||||
type UniversalDeleteRoleAction,
|
||||
type UniversalUpdateRoleAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role/types/workspace-migration-role-action.type';
|
||||
@@ -148,6 +171,7 @@ import {
|
||||
type FlatCreateRowLevelPermissionPredicateGroupAction,
|
||||
type FlatDeleteRowLevelPermissionPredicateGroupAction,
|
||||
type FlatUpdateRowLevelPermissionPredicateGroupAction,
|
||||
type UniversalCreateRowLevelPermissionPredicateGroupAction,
|
||||
type UniversalDeleteRowLevelPermissionPredicateGroupAction,
|
||||
type UniversalUpdateRowLevelPermissionPredicateGroupAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-action.type';
|
||||
@@ -155,6 +179,7 @@ import {
|
||||
type FlatCreateRowLevelPermissionPredicateAction,
|
||||
type FlatDeleteRowLevelPermissionPredicateAction,
|
||||
type FlatUpdateRowLevelPermissionPredicateAction,
|
||||
type UniversalCreateRowLevelPermissionPredicateAction,
|
||||
type UniversalDeleteRowLevelPermissionPredicateAction,
|
||||
type UniversalUpdateRowLevelPermissionPredicateAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-action.type';
|
||||
@@ -210,6 +235,7 @@ import {
|
||||
type FlatCreateWebhookAction,
|
||||
type FlatDeleteWebhookAction,
|
||||
type FlatUpdateWebhookAction,
|
||||
type UniversalCreateWebhookAction,
|
||||
type UniversalDeleteWebhookAction,
|
||||
type UniversalUpdateWebhookAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/webhook/types/workspace-migration-webhook-action.type';
|
||||
@@ -301,7 +327,7 @@ export type AllFlatEntityTypesByMetadataName = {
|
||||
rowLevelPermissionPredicate: {
|
||||
flatEntityMaps: FlatRowLevelPermissionPredicateMaps;
|
||||
universalActions: {
|
||||
create: FlatCreateRowLevelPermissionPredicateAction;
|
||||
create: UniversalCreateRowLevelPermissionPredicateAction;
|
||||
update: UniversalUpdateRowLevelPermissionPredicateAction;
|
||||
delete: UniversalDeleteRowLevelPermissionPredicateAction;
|
||||
};
|
||||
@@ -311,13 +337,13 @@ export type AllFlatEntityTypesByMetadataName = {
|
||||
delete: FlatDeleteRowLevelPermissionPredicateAction;
|
||||
};
|
||||
flatEntity: FlatRowLevelPermissionPredicate;
|
||||
universalFlatEntity: FlatRowLevelPermissionPredicate;
|
||||
universalFlatEntity: UniversalFlatRowLevelPermissionPredicate;
|
||||
entity: MetadataEntity<'rowLevelPermissionPredicate'>;
|
||||
};
|
||||
rowLevelPermissionPredicateGroup: {
|
||||
flatEntityMaps: FlatRowLevelPermissionPredicateGroupMaps;
|
||||
universalActions: {
|
||||
create: FlatCreateRowLevelPermissionPredicateGroupAction;
|
||||
create: UniversalCreateRowLevelPermissionPredicateGroupAction;
|
||||
update: UniversalUpdateRowLevelPermissionPredicateGroupAction;
|
||||
delete: UniversalDeleteRowLevelPermissionPredicateGroupAction;
|
||||
};
|
||||
@@ -327,7 +353,7 @@ export type AllFlatEntityTypesByMetadataName = {
|
||||
delete: FlatDeleteRowLevelPermissionPredicateGroupAction;
|
||||
};
|
||||
flatEntity: FlatRowLevelPermissionPredicateGroup;
|
||||
universalFlatEntity: FlatRowLevelPermissionPredicateGroup;
|
||||
universalFlatEntity: UniversalFlatRowLevelPermissionPredicateGroup;
|
||||
entity: MetadataEntity<'rowLevelPermissionPredicateGroup'>;
|
||||
};
|
||||
viewFilterGroup: {
|
||||
@@ -365,7 +391,7 @@ export type AllFlatEntityTypesByMetadataName = {
|
||||
logicFunction: {
|
||||
flatEntityMaps: FlatEntityMaps<FlatLogicFunction>;
|
||||
universalActions: {
|
||||
create: FlatCreateLogicFunctionAction;
|
||||
create: UniversalCreateLogicFunctionAction;
|
||||
update: UniversalUpdateLogicFunctionAction;
|
||||
delete: UniversalDeleteLogicFunctionAction;
|
||||
};
|
||||
@@ -375,7 +401,7 @@ export type AllFlatEntityTypesByMetadataName = {
|
||||
delete: FlatDeleteLogicFunctionAction;
|
||||
};
|
||||
flatEntity: FlatLogicFunction;
|
||||
universalFlatEntity: FlatLogicFunction;
|
||||
universalFlatEntity: UniversalFlatLogicFunction;
|
||||
entity: MetadataEntity<'logicFunction'>;
|
||||
};
|
||||
viewFilter: {
|
||||
@@ -397,7 +423,7 @@ export type AllFlatEntityTypesByMetadataName = {
|
||||
role: {
|
||||
flatEntityMaps: FlatEntityMaps<FlatRole>;
|
||||
universalActions: {
|
||||
create: FlatCreateRoleAction;
|
||||
create: UniversalCreateRoleAction;
|
||||
update: UniversalUpdateRoleAction;
|
||||
delete: UniversalDeleteRoleAction;
|
||||
};
|
||||
@@ -407,13 +433,13 @@ export type AllFlatEntityTypesByMetadataName = {
|
||||
delete: FlatDeleteRoleAction;
|
||||
};
|
||||
flatEntity: FlatRole;
|
||||
universalFlatEntity: FlatRole;
|
||||
universalFlatEntity: UniversalFlatRole;
|
||||
entity: MetadataEntity<'role'>;
|
||||
};
|
||||
roleTarget: {
|
||||
flatEntityMaps: FlatRoleTargetMaps;
|
||||
universalActions: {
|
||||
create: FlatCreateRoleTargetAction;
|
||||
create: UniversalCreateRoleTargetAction;
|
||||
update: UniversalUpdateRoleTargetAction;
|
||||
delete: UniversalDeleteRoleTargetAction;
|
||||
};
|
||||
@@ -423,13 +449,13 @@ export type AllFlatEntityTypesByMetadataName = {
|
||||
delete: FlatDeleteRoleTargetAction;
|
||||
};
|
||||
flatEntity: FlatRoleTarget;
|
||||
universalFlatEntity: FlatRoleTarget;
|
||||
universalFlatEntity: UniversalFlatRoleTarget;
|
||||
entity: MetadataEntity<'roleTarget'>;
|
||||
};
|
||||
agent: {
|
||||
flatEntityMaps: FlatAgentMaps;
|
||||
universalActions: {
|
||||
create: FlatCreateAgentAction;
|
||||
create: UniversalCreateAgentAction;
|
||||
update: UniversalUpdateAgentAction;
|
||||
delete: UniversalDeleteAgentAction;
|
||||
};
|
||||
@@ -439,7 +465,7 @@ export type AllFlatEntityTypesByMetadataName = {
|
||||
delete: FlatDeleteAgentAction;
|
||||
};
|
||||
flatEntity: FlatAgent;
|
||||
universalFlatEntity: FlatAgent;
|
||||
universalFlatEntity: UniversalFlatAgent;
|
||||
entity: MetadataEntity<'agent'>;
|
||||
};
|
||||
skill: {
|
||||
@@ -461,7 +487,7 @@ export type AllFlatEntityTypesByMetadataName = {
|
||||
commandMenuItem: {
|
||||
flatEntityMaps: FlatCommandMenuItemMaps;
|
||||
universalActions: {
|
||||
create: FlatCreateCommandMenuItemAction;
|
||||
create: UniversalCreateCommandMenuItemAction;
|
||||
update: UniversalUpdateCommandMenuItemAction;
|
||||
delete: UniversalDeleteCommandMenuItemAction;
|
||||
};
|
||||
@@ -471,13 +497,13 @@ export type AllFlatEntityTypesByMetadataName = {
|
||||
delete: FlatDeleteCommandMenuItemAction;
|
||||
};
|
||||
flatEntity: FlatCommandMenuItem;
|
||||
universalFlatEntity: FlatCommandMenuItem;
|
||||
universalFlatEntity: UniversalFlatCommandMenuItem;
|
||||
entity: MetadataEntity<'commandMenuItem'>;
|
||||
};
|
||||
navigationMenuItem: {
|
||||
flatEntityMaps: FlatNavigationMenuItemMaps;
|
||||
universalActions: {
|
||||
create: FlatCreateNavigationMenuItemAction;
|
||||
create: UniversalCreateNavigationMenuItemAction;
|
||||
update: UniversalUpdateNavigationMenuItemAction;
|
||||
delete: UniversalDeleteNavigationMenuItemAction;
|
||||
};
|
||||
@@ -487,13 +513,13 @@ export type AllFlatEntityTypesByMetadataName = {
|
||||
delete: FlatDeleteNavigationMenuItemAction;
|
||||
};
|
||||
flatEntity: FlatNavigationMenuItem;
|
||||
universalFlatEntity: FlatNavigationMenuItem;
|
||||
universalFlatEntity: UniversalFlatNavigationMenuItem;
|
||||
entity: NavigationMenuItemEntity;
|
||||
};
|
||||
pageLayout: {
|
||||
flatEntityMaps: FlatPageLayoutMaps;
|
||||
universalActions: {
|
||||
create: FlatCreatePageLayoutAction;
|
||||
create: UniversalCreatePageLayoutAction;
|
||||
update: UniversalUpdatePageLayoutAction;
|
||||
delete: UniversalDeletePageLayoutAction;
|
||||
};
|
||||
@@ -503,13 +529,13 @@ export type AllFlatEntityTypesByMetadataName = {
|
||||
delete: FlatDeletePageLayoutAction;
|
||||
};
|
||||
flatEntity: FlatPageLayout;
|
||||
universalFlatEntity: FlatPageLayout;
|
||||
universalFlatEntity: UniversalFlatPageLayout;
|
||||
entity: MetadataEntity<'pageLayout'>;
|
||||
};
|
||||
pageLayoutWidget: {
|
||||
flatEntityMaps: FlatPageLayoutWidgetMaps;
|
||||
universalActions: {
|
||||
create: FlatCreatePageLayoutWidgetAction;
|
||||
create: UniversalCreatePageLayoutWidgetAction;
|
||||
update: UniversalUpdatePageLayoutWidgetAction;
|
||||
delete: UniversalDeletePageLayoutWidgetAction;
|
||||
};
|
||||
@@ -519,13 +545,13 @@ export type AllFlatEntityTypesByMetadataName = {
|
||||
delete: FlatDeletePageLayoutWidgetAction;
|
||||
};
|
||||
flatEntity: FlatPageLayoutWidget;
|
||||
universalFlatEntity: FlatPageLayoutWidget;
|
||||
universalFlatEntity: UniversalFlatPageLayoutWidget;
|
||||
entity: MetadataEntity<'pageLayoutWidget'>;
|
||||
};
|
||||
pageLayoutTab: {
|
||||
flatEntityMaps: FlatPageLayoutTabMaps;
|
||||
universalActions: {
|
||||
create: FlatCreatePageLayoutTabAction;
|
||||
create: UniversalCreatePageLayoutTabAction;
|
||||
update: UniversalUpdatePageLayoutTabAction;
|
||||
delete: UniversalDeletePageLayoutTabAction;
|
||||
};
|
||||
@@ -535,13 +561,13 @@ export type AllFlatEntityTypesByMetadataName = {
|
||||
delete: FlatDeletePageLayoutTabAction;
|
||||
};
|
||||
flatEntity: FlatPageLayoutTab;
|
||||
universalFlatEntity: FlatPageLayoutTab;
|
||||
universalFlatEntity: UniversalFlatPageLayoutTab;
|
||||
entity: MetadataEntity<'pageLayoutTab'>;
|
||||
};
|
||||
frontComponent: {
|
||||
flatEntityMaps: FlatFrontComponentMaps;
|
||||
universalActions: {
|
||||
create: FlatCreateFrontComponentAction;
|
||||
create: UniversalCreateFrontComponentAction;
|
||||
update: UniversalUpdateFrontComponentAction;
|
||||
delete: UniversalDeleteFrontComponentAction;
|
||||
};
|
||||
@@ -551,13 +577,13 @@ export type AllFlatEntityTypesByMetadataName = {
|
||||
delete: FlatDeleteFrontComponentAction;
|
||||
};
|
||||
flatEntity: FlatFrontComponent;
|
||||
universalFlatEntity: FlatFrontComponent;
|
||||
universalFlatEntity: UniversalFlatFrontComponent;
|
||||
entity: MetadataEntity<'frontComponent'>;
|
||||
};
|
||||
webhook: {
|
||||
flatEntityMaps: FlatWebhookMaps;
|
||||
universalActions: {
|
||||
create: FlatCreateWebhookAction;
|
||||
create: UniversalCreateWebhookAction;
|
||||
update: UniversalUpdateWebhookAction;
|
||||
delete: UniversalDeleteWebhookAction;
|
||||
};
|
||||
@@ -567,7 +593,7 @@ export type AllFlatEntityTypesByMetadataName = {
|
||||
delete: FlatDeleteWebhookAction;
|
||||
};
|
||||
flatEntity: FlatWebhook;
|
||||
universalFlatEntity: FlatWebhook;
|
||||
universalFlatEntity: UniversalFlatWebhook;
|
||||
entity: MetadataEntity<'webhook'>;
|
||||
};
|
||||
};
|
||||
|
||||
-6
@@ -1,6 +0,0 @@
|
||||
import { type GraphConfiguration } from './graph-configuration.type';
|
||||
|
||||
export type BaseGraphConfiguration = Pick<
|
||||
GraphConfiguration,
|
||||
'configurationType' | 'aggregateFieldMetadataId' | 'aggregateOperation'
|
||||
>;
|
||||
+15
-7
@@ -2,16 +2,24 @@ import { msg, t } from '@lingui/core/macro';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type FlatPageLayoutWidgetValidationError } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-validation-error.type';
|
||||
import { type BarChartConfigurationDTO } from 'src/engine/metadata-modules/page-layout-widget/dtos/bar-chart-configuration.dto';
|
||||
import { type WidgetConfigurationType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-configuration-type.type';
|
||||
import { PageLayoutWidgetExceptionCode } from 'src/engine/metadata-modules/page-layout-widget/exceptions/page-layout-widget.exception';
|
||||
import { type UniversalFlatPageLayoutWidget } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-page-layout-widget.type';
|
||||
|
||||
export const validateBarChartConfiguration = (
|
||||
configuration: BarChartConfigurationDTO,
|
||||
widgetTitle: string,
|
||||
): FlatPageLayoutWidgetValidationError[] => {
|
||||
export const validateBarChartConfiguration = ({
|
||||
graphUniversalConfiguration,
|
||||
widgetTitle,
|
||||
}: {
|
||||
graphUniversalConfiguration: UniversalFlatPageLayoutWidget<WidgetConfigurationType.BAR_CHART>['universalConfiguration'];
|
||||
widgetTitle: string;
|
||||
}): FlatPageLayoutWidgetValidationError[] => {
|
||||
const errors: FlatPageLayoutWidgetValidationError[] = [];
|
||||
|
||||
if (!isDefined(configuration.primaryAxisGroupByFieldMetadataId)) {
|
||||
if (
|
||||
!isDefined(
|
||||
graphUniversalConfiguration.primaryAxisGroupByFieldMetadataUniversalIdentifier,
|
||||
)
|
||||
) {
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Primary axis group by field is required for bar chart widget "${widgetTitle}"`,
|
||||
@@ -19,7 +27,7 @@ export const validateBarChartConfiguration = (
|
||||
});
|
||||
}
|
||||
|
||||
if (!isDefined(configuration.layout)) {
|
||||
if (!isDefined(graphUniversalConfiguration.layout)) {
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Layout is required for bar chart widget "${widgetTitle}"`,
|
||||
|
||||
+16
-8
@@ -2,24 +2,32 @@ import { msg, t } from '@lingui/core/macro';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type FlatPageLayoutWidgetValidationError } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-validation-error.type';
|
||||
import { type BaseGraphConfiguration } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/types/base-graph-configuration.type';
|
||||
import { type AllGraphWidgetConfigurationType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-configuration-type.type';
|
||||
import { PageLayoutWidgetExceptionCode } from 'src/engine/metadata-modules/page-layout-widget/exceptions/page-layout-widget.exception';
|
||||
import { type UniversalFlatPageLayoutWidget } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-page-layout-widget.type';
|
||||
|
||||
export const validateBaseGraphFields = (
|
||||
configuration: BaseGraphConfiguration,
|
||||
widgetTitle: string,
|
||||
): FlatPageLayoutWidgetValidationError[] => {
|
||||
export const validateBaseGraphFields = ({
|
||||
graphUniversalConfiguration,
|
||||
widgetTitle,
|
||||
}: {
|
||||
graphUniversalConfiguration: UniversalFlatPageLayoutWidget<AllGraphWidgetConfigurationType>['universalConfiguration'];
|
||||
widgetTitle: string;
|
||||
}): FlatPageLayoutWidgetValidationError[] => {
|
||||
const errors: FlatPageLayoutWidgetValidationError[] = [];
|
||||
|
||||
if (!isDefined(configuration.aggregateFieldMetadataId)) {
|
||||
if (
|
||||
!isDefined(
|
||||
graphUniversalConfiguration.aggregateFieldMetadataUniversalIdentifier,
|
||||
)
|
||||
) {
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Aggregate field metadata ID is required for graph widget "${widgetTitle}"`,
|
||||
message: t`Aggregate field metadata is required for graph widget "${widgetTitle}"`,
|
||||
userFriendlyMessage: msg`Aggregate field is required for graph widget`,
|
||||
});
|
||||
}
|
||||
|
||||
if (!isDefined(configuration.aggregateOperation)) {
|
||||
if (!isDefined(graphUniversalConfiguration.aggregateOperation)) {
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Aggregate operation is required for graph widget "${widgetTitle}"`,
|
||||
|
||||
+17
-11
@@ -2,20 +2,23 @@ import { msg, t } from '@lingui/core/macro';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type FlatPageLayoutWidgetValidationError } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-validation-error.type';
|
||||
import { type FrontComponentConfigurationDTO } from 'src/engine/metadata-modules/page-layout-widget/dtos/front-component-configuration.dto';
|
||||
import { WidgetConfigurationType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-configuration-type.type';
|
||||
import { PageLayoutWidgetExceptionCode } from 'src/engine/metadata-modules/page-layout-widget/exceptions/page-layout-widget.exception';
|
||||
import { type UniversalFlatPageLayoutWidget } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-page-layout-widget.type';
|
||||
|
||||
export const validateFrontComponentConfigurationType = (
|
||||
configuration: FrontComponentConfigurationDTO,
|
||||
widgetTitle: string,
|
||||
): FlatPageLayoutWidgetValidationError[] => {
|
||||
export const validateFrontComponentConfigurationType = ({
|
||||
universalConfiguration,
|
||||
title,
|
||||
}: Pick<
|
||||
UniversalFlatPageLayoutWidget,
|
||||
'universalConfiguration' | 'title'
|
||||
>): FlatPageLayoutWidgetValidationError[] => {
|
||||
const errors: FlatPageLayoutWidgetValidationError[] = [];
|
||||
|
||||
if (!isDefined(configuration.configurationType)) {
|
||||
if (!isDefined(universalConfiguration.configurationType)) {
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Configuration type is required for widget "${widgetTitle}"`,
|
||||
message: t`Configuration type is required for widget "${title}"`,
|
||||
userFriendlyMessage: msg`Configuration type is required`,
|
||||
});
|
||||
|
||||
@@ -23,15 +26,18 @@ export const validateFrontComponentConfigurationType = (
|
||||
}
|
||||
|
||||
if (
|
||||
configuration.configurationType !== WidgetConfigurationType.FRONT_COMPONENT
|
||||
universalConfiguration.configurationType !==
|
||||
WidgetConfigurationType.FRONT_COMPONENT
|
||||
) {
|
||||
const configurationTypeString = String(configuration.configurationType);
|
||||
const configurationTypeString = String(
|
||||
universalConfiguration.configurationType,
|
||||
);
|
||||
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Invalid configuration type for front component widget "${widgetTitle}". Expected FRONT_COMPONENT, got ${configurationTypeString}`,
|
||||
message: t`Invalid configuration type for front component widget "${title}". Expected FRONT_COMPONENT, got ${configurationTypeString}`,
|
||||
userFriendlyMessage: msg`Invalid configuration type for front component widget`,
|
||||
value: configuration.configurationType,
|
||||
value: universalConfiguration.configurationType,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+5
-9
@@ -4,17 +4,16 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
import { type ValidateFlatPageLayoutWidgetTypeSpecificitiesForCreationArgs } from 'src/engine/metadata-modules/flat-page-layout-widget/services/flat-page-layout-widget-type-validator.service';
|
||||
import { type FlatPageLayoutWidgetValidationError } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-validation-error.type';
|
||||
import { validateFrontComponentConfigurationType } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-front-component-configuration-type.util';
|
||||
import { type FrontComponentConfigurationDTO } from 'src/engine/metadata-modules/page-layout-widget/dtos/front-component-configuration.dto';
|
||||
import { PageLayoutWidgetExceptionCode } from 'src/engine/metadata-modules/page-layout-widget/exceptions/page-layout-widget.exception';
|
||||
|
||||
export const validateFrontComponentFlatPageLayoutWidgetForCreation = (
|
||||
args: ValidateFlatPageLayoutWidgetTypeSpecificitiesForCreationArgs,
|
||||
): FlatPageLayoutWidgetValidationError[] => {
|
||||
const { flatEntityToValidate } = args;
|
||||
const { configuration, title } = flatEntityToValidate;
|
||||
const { universalConfiguration, title } = flatEntityToValidate;
|
||||
const errors: FlatPageLayoutWidgetValidationError[] = [];
|
||||
|
||||
if (!isDefined(configuration)) {
|
||||
if (!isDefined(universalConfiguration)) {
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Configuration is required for front component widget "${title}"`,
|
||||
@@ -24,13 +23,10 @@ export const validateFrontComponentFlatPageLayoutWidgetForCreation = (
|
||||
return errors;
|
||||
}
|
||||
|
||||
const frontComponentConfiguration =
|
||||
configuration as FrontComponentConfigurationDTO;
|
||||
|
||||
const configurationTypeErrors = validateFrontComponentConfigurationType(
|
||||
frontComponentConfiguration,
|
||||
const configurationTypeErrors = validateFrontComponentConfigurationType({
|
||||
universalConfiguration,
|
||||
title,
|
||||
);
|
||||
});
|
||||
|
||||
errors.push(...configurationTypeErrors);
|
||||
|
||||
|
||||
+5
-9
@@ -3,26 +3,22 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
import { type ValidateFlatPageLayoutWidgetTypeSpecificitiesForUpdateArgs } from 'src/engine/metadata-modules/flat-page-layout-widget/services/flat-page-layout-widget-type-validator.service';
|
||||
import { type FlatPageLayoutWidgetValidationError } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-validation-error.type';
|
||||
import { validateFrontComponentConfigurationType } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-front-component-configuration-type.util';
|
||||
import { type FrontComponentConfigurationDTO } from 'src/engine/metadata-modules/page-layout-widget/dtos/front-component-configuration.dto';
|
||||
|
||||
export const validateFrontComponentFlatPageLayoutWidgetForUpdate = (
|
||||
args: ValidateFlatPageLayoutWidgetTypeSpecificitiesForUpdateArgs,
|
||||
): FlatPageLayoutWidgetValidationError[] => {
|
||||
const { flatEntityToValidate } = args;
|
||||
const { configuration, title } = flatEntityToValidate;
|
||||
const { universalConfiguration, title } = flatEntityToValidate;
|
||||
const errors: FlatPageLayoutWidgetValidationError[] = [];
|
||||
|
||||
if (!isDefined(configuration)) {
|
||||
if (!isDefined(universalConfiguration)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const frontComponentConfiguration =
|
||||
configuration as FrontComponentConfigurationDTO;
|
||||
|
||||
const configurationTypeErrors = validateFrontComponentConfigurationType(
|
||||
frontComponentConfiguration,
|
||||
const configurationTypeErrors = validateFrontComponentConfigurationType({
|
||||
universalConfiguration,
|
||||
title,
|
||||
);
|
||||
});
|
||||
|
||||
errors.push(...configurationTypeErrors);
|
||||
|
||||
|
||||
+25
-10
@@ -1,23 +1,38 @@
|
||||
import { type FlatPageLayoutWidgetValidationError } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-validation-error.type';
|
||||
import { type GraphConfiguration } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/types/graph-configuration.type';
|
||||
import { validateBarChartConfiguration } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-bar-chart-configuration.util';
|
||||
import { validateLineChartConfiguration } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-line-chart-configuration.util';
|
||||
import { validatePieChartConfiguration } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-pie-chart-configuration.util';
|
||||
import { WidgetConfigurationType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-configuration-type.type';
|
||||
import {
|
||||
type AllGraphWidgetConfigurationType,
|
||||
WidgetConfigurationType,
|
||||
} from 'src/engine/metadata-modules/page-layout-widget/enums/widget-configuration-type.type';
|
||||
import { type UniversalFlatPageLayoutWidget } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-page-layout-widget.type';
|
||||
|
||||
export const validateGraphConfigurationByType = (
|
||||
configuration: GraphConfiguration,
|
||||
widgetTitle: string,
|
||||
): FlatPageLayoutWidgetValidationError[] => {
|
||||
const configurationType = configuration.configurationType;
|
||||
export const validateGraphConfigurationByType = ({
|
||||
graphUniversalConfiguration,
|
||||
widgetTitle,
|
||||
}: {
|
||||
graphUniversalConfiguration: UniversalFlatPageLayoutWidget<AllGraphWidgetConfigurationType>['universalConfiguration'];
|
||||
widgetTitle: string;
|
||||
}): FlatPageLayoutWidgetValidationError[] => {
|
||||
const configurationType = graphUniversalConfiguration.configurationType;
|
||||
|
||||
switch (configurationType) {
|
||||
case WidgetConfigurationType.BAR_CHART:
|
||||
return validateBarChartConfiguration(configuration, widgetTitle);
|
||||
return validateBarChartConfiguration({
|
||||
graphUniversalConfiguration,
|
||||
widgetTitle,
|
||||
});
|
||||
case WidgetConfigurationType.LINE_CHART:
|
||||
return validateLineChartConfiguration(configuration, widgetTitle);
|
||||
return validateLineChartConfiguration({
|
||||
graphUniversalConfiguration,
|
||||
widgetTitle,
|
||||
});
|
||||
case WidgetConfigurationType.PIE_CHART:
|
||||
return validatePieChartConfiguration(configuration, widgetTitle);
|
||||
return validatePieChartConfiguration({
|
||||
graphUniversalConfiguration,
|
||||
widgetTitle,
|
||||
});
|
||||
case WidgetConfigurationType.AGGREGATE_CHART:
|
||||
case WidgetConfigurationType.GAUGE_CHART:
|
||||
return [];
|
||||
|
||||
+49
-24
@@ -3,42 +3,67 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type FlatPageLayoutWidgetValidationError } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-validation-error.type';
|
||||
import { VALID_GRAPH_CONFIGURATION_TYPES } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/constants/valid-graph-configuration-types.constant';
|
||||
import { type GraphConfiguration } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/types/graph-configuration.type';
|
||||
import { type AllGraphWidgetConfigurationType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-configuration-type.type';
|
||||
import { PageLayoutWidgetExceptionCode } from 'src/engine/metadata-modules/page-layout-widget/exceptions/page-layout-widget.exception';
|
||||
import { type UniversalFlatPageLayoutWidget } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-page-layout-widget.type';
|
||||
|
||||
export const validateGraphConfigurationType = (
|
||||
configuration: GraphConfiguration,
|
||||
widgetTitle: string,
|
||||
): FlatPageLayoutWidgetValidationError[] => {
|
||||
const errors: FlatPageLayoutWidgetValidationError[] = [];
|
||||
|
||||
if (!isDefined(configuration.configurationType)) {
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Configuration type is required for widget "${widgetTitle}"`,
|
||||
userFriendlyMessage: msg`Configuration type is required`,
|
||||
});
|
||||
|
||||
return errors;
|
||||
export const validateGraphConfigurationType = ({
|
||||
universalConfiguration,
|
||||
widgetTitle,
|
||||
}: {
|
||||
universalConfiguration: UniversalFlatPageLayoutWidget['universalConfiguration'];
|
||||
widgetTitle: string;
|
||||
}):
|
||||
| {
|
||||
status: 'fail';
|
||||
errors: FlatPageLayoutWidgetValidationError[];
|
||||
}
|
||||
| {
|
||||
status: 'success';
|
||||
graphUniversalConfiguration: UniversalFlatPageLayoutWidget<AllGraphWidgetConfigurationType>['universalConfiguration'];
|
||||
} => {
|
||||
if (!isDefined(universalConfiguration.configurationType)) {
|
||||
return {
|
||||
errors: [
|
||||
{
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Configuration type is required for widget "${widgetTitle}"`,
|
||||
userFriendlyMessage: msg`Configuration type is required`,
|
||||
},
|
||||
],
|
||||
status: 'fail',
|
||||
};
|
||||
}
|
||||
|
||||
const isValidGraphConfigurationType =
|
||||
VALID_GRAPH_CONFIGURATION_TYPES.includes(configuration.configurationType);
|
||||
VALID_GRAPH_CONFIGURATION_TYPES.includes(
|
||||
universalConfiguration.configurationType as (typeof VALID_GRAPH_CONFIGURATION_TYPES)[number],
|
||||
);
|
||||
|
||||
if (!isValidGraphConfigurationType) {
|
||||
const expectedConfigurationTypes = VALID_GRAPH_CONFIGURATION_TYPES.map(
|
||||
(type) => type.toString(),
|
||||
).join(', ');
|
||||
|
||||
const configurationTypeString = configuration.configurationType.toString();
|
||||
const configurationTypeString =
|
||||
universalConfiguration.configurationType.toString();
|
||||
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Invalid configuration type for graph widget "${widgetTitle}". Expected one of ${expectedConfigurationTypes}, got ${configurationTypeString}`,
|
||||
userFriendlyMessage: msg`Invalid configuration type for graph widget`,
|
||||
value: configuration.configurationType,
|
||||
});
|
||||
return {
|
||||
errors: [
|
||||
{
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Invalid configuration type for graph widget "${widgetTitle}". Expected one of ${expectedConfigurationTypes}, got ${configurationTypeString}`,
|
||||
userFriendlyMessage: msg`Invalid configuration type for graph widget`,
|
||||
value: universalConfiguration.configurationType,
|
||||
},
|
||||
],
|
||||
status: 'fail',
|
||||
};
|
||||
}
|
||||
|
||||
return errors;
|
||||
return {
|
||||
status: 'success',
|
||||
graphUniversalConfiguration:
|
||||
universalConfiguration as UniversalFlatPageLayoutWidget<AllGraphWidgetConfigurationType>['universalConfiguration'],
|
||||
};
|
||||
};
|
||||
|
||||
+19
-19
@@ -3,7 +3,6 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type ValidateFlatPageLayoutWidgetTypeSpecificitiesForCreationArgs } from 'src/engine/metadata-modules/flat-page-layout-widget/services/flat-page-layout-widget-type-validator.service';
|
||||
import { type FlatPageLayoutWidgetValidationError } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-validation-error.type';
|
||||
import { type GraphConfiguration } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/types/graph-configuration.type';
|
||||
import { validateBaseGraphFields } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-base-graph-fields.util';
|
||||
import { validateGraphConfigurationByType } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-graph-configuration-by-type.util';
|
||||
import { validateGraphConfigurationType } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-graph-configuration-type.util';
|
||||
@@ -13,40 +12,41 @@ export const validateGraphFlatPageLayoutWidgetForCreation = (
|
||||
args: ValidateFlatPageLayoutWidgetTypeSpecificitiesForCreationArgs,
|
||||
): FlatPageLayoutWidgetValidationError[] => {
|
||||
const { flatEntityToValidate } = args;
|
||||
const { configuration, title } = flatEntityToValidate;
|
||||
const { universalConfiguration, title: widgetTitle } = flatEntityToValidate;
|
||||
const errors: FlatPageLayoutWidgetValidationError[] = [];
|
||||
|
||||
if (!isDefined(configuration)) {
|
||||
if (!isDefined(universalConfiguration)) {
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Configuration is required for graph widget "${title}"`,
|
||||
message: t`Configuration is required for graph widget "${widgetTitle}"`,
|
||||
userFriendlyMessage: msg`Configuration is required for graph widget`,
|
||||
});
|
||||
|
||||
return errors;
|
||||
}
|
||||
|
||||
const graphConfiguration = configuration as GraphConfiguration;
|
||||
const result = validateGraphConfigurationType({
|
||||
universalConfiguration,
|
||||
widgetTitle,
|
||||
});
|
||||
|
||||
const configurationTypeErrors = validateGraphConfigurationType(
|
||||
graphConfiguration,
|
||||
title,
|
||||
);
|
||||
|
||||
errors.push(...configurationTypeErrors);
|
||||
|
||||
if (configurationTypeErrors.length > 0) {
|
||||
return errors;
|
||||
if (result.status === 'fail') {
|
||||
return [...errors, ...result.errors];
|
||||
}
|
||||
|
||||
const baseFieldErrors = validateBaseGraphFields(graphConfiguration, title);
|
||||
const { graphUniversalConfiguration } = result;
|
||||
|
||||
const baseFieldErrors = validateBaseGraphFields({
|
||||
graphUniversalConfiguration,
|
||||
widgetTitle,
|
||||
});
|
||||
|
||||
errors.push(...baseFieldErrors);
|
||||
|
||||
const typeSpecificErrors = validateGraphConfigurationByType(
|
||||
graphConfiguration,
|
||||
title,
|
||||
);
|
||||
const typeSpecificErrors = validateGraphConfigurationByType({
|
||||
graphUniversalConfiguration,
|
||||
widgetTitle,
|
||||
});
|
||||
|
||||
errors.push(...typeSpecificErrors);
|
||||
|
||||
|
||||
+17
-18
@@ -2,7 +2,6 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type ValidateFlatPageLayoutWidgetTypeSpecificitiesForUpdateArgs } from 'src/engine/metadata-modules/flat-page-layout-widget/services/flat-page-layout-widget-type-validator.service';
|
||||
import { type FlatPageLayoutWidgetValidationError } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-validation-error.type';
|
||||
import { type GraphConfiguration } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/types/graph-configuration.type';
|
||||
import { validateBaseGraphFields } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-base-graph-fields.util';
|
||||
import { validateGraphConfigurationByType } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-graph-configuration-by-type.util';
|
||||
import { validateGraphConfigurationType } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-graph-configuration-type.util';
|
||||
@@ -11,34 +10,34 @@ export const validateGraphFlatPageLayoutWidgetForUpdate = (
|
||||
args: ValidateFlatPageLayoutWidgetTypeSpecificitiesForUpdateArgs,
|
||||
): FlatPageLayoutWidgetValidationError[] => {
|
||||
const { flatEntityToValidate } = args;
|
||||
const { configuration, title } = flatEntityToValidate;
|
||||
const { universalConfiguration, title: widgetTitle } = flatEntityToValidate;
|
||||
const errors: FlatPageLayoutWidgetValidationError[] = [];
|
||||
|
||||
if (!isDefined(configuration)) {
|
||||
if (!isDefined(universalConfiguration)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const graphConfiguration = configuration as GraphConfiguration;
|
||||
const result = validateGraphConfigurationType({
|
||||
universalConfiguration,
|
||||
widgetTitle,
|
||||
});
|
||||
|
||||
const configurationTypeErrors = validateGraphConfigurationType(
|
||||
graphConfiguration,
|
||||
title,
|
||||
);
|
||||
|
||||
errors.push(...configurationTypeErrors);
|
||||
|
||||
if (configurationTypeErrors.length > 0) {
|
||||
return errors;
|
||||
if (result.status === 'fail') {
|
||||
return result.errors;
|
||||
}
|
||||
const { graphUniversalConfiguration } = result;
|
||||
|
||||
const baseFieldErrors = validateBaseGraphFields(graphConfiguration, title);
|
||||
const baseFieldErrors = validateBaseGraphFields({
|
||||
graphUniversalConfiguration,
|
||||
widgetTitle,
|
||||
});
|
||||
|
||||
errors.push(...baseFieldErrors);
|
||||
|
||||
const typeSpecificErrors = validateGraphConfigurationByType(
|
||||
graphConfiguration,
|
||||
title,
|
||||
);
|
||||
const typeSpecificErrors = validateGraphConfigurationByType({
|
||||
graphUniversalConfiguration,
|
||||
widgetTitle,
|
||||
});
|
||||
|
||||
errors.push(...typeSpecificErrors);
|
||||
|
||||
|
||||
+48
-24
@@ -2,36 +2,60 @@ import { msg, t } from '@lingui/core/macro';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type FlatPageLayoutWidgetValidationError } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-validation-error.type';
|
||||
import { type IframeConfiguration } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/types/iframe-configuration.type';
|
||||
import { WidgetConfigurationType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-configuration-type.type';
|
||||
import { PageLayoutWidgetExceptionCode } from 'src/engine/metadata-modules/page-layout-widget/exceptions/page-layout-widget.exception';
|
||||
import { type UniversalFlatPageLayoutWidget } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-page-layout-widget.type';
|
||||
|
||||
export const validateIframeConfigurationType = (
|
||||
configuration: IframeConfiguration,
|
||||
widgetTitle: string,
|
||||
): FlatPageLayoutWidgetValidationError[] => {
|
||||
const errors: FlatPageLayoutWidgetValidationError[] = [];
|
||||
|
||||
if (!isDefined(configuration.configurationType)) {
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Configuration type is required for widget "${widgetTitle}"`,
|
||||
userFriendlyMessage: msg`Configuration type is required`,
|
||||
});
|
||||
|
||||
return errors;
|
||||
export const validateIframeConfigurationType = ({
|
||||
universalConfiguration,
|
||||
widgetTitle,
|
||||
}: {
|
||||
universalConfiguration: UniversalFlatPageLayoutWidget['universalConfiguration'];
|
||||
widgetTitle: string;
|
||||
}):
|
||||
| {
|
||||
status: 'fail';
|
||||
errors: FlatPageLayoutWidgetValidationError[];
|
||||
}
|
||||
| {
|
||||
status: 'success';
|
||||
iframeUniversalConfiguration: UniversalFlatPageLayoutWidget<WidgetConfigurationType.IFRAME>['universalConfiguration'];
|
||||
} => {
|
||||
if (!isDefined(universalConfiguration.configurationType)) {
|
||||
return {
|
||||
errors: [
|
||||
{
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Configuration type is required for widget "${widgetTitle}"`,
|
||||
userFriendlyMessage: msg`Configuration type is required`,
|
||||
},
|
||||
],
|
||||
status: 'fail',
|
||||
};
|
||||
}
|
||||
|
||||
if (configuration.configurationType !== WidgetConfigurationType.IFRAME) {
|
||||
const configurationTypeString = configuration.configurationType.toString();
|
||||
if (
|
||||
universalConfiguration.configurationType !== WidgetConfigurationType.IFRAME
|
||||
) {
|
||||
const configurationTypeString =
|
||||
universalConfiguration.configurationType.toString();
|
||||
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Invalid configuration type for iframe widget "${widgetTitle}". Expected IFRAME, got ${configurationTypeString}`,
|
||||
userFriendlyMessage: msg`Invalid configuration type for iframe widget`,
|
||||
value: configuration.configurationType,
|
||||
});
|
||||
return {
|
||||
errors: [
|
||||
{
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Invalid configuration type for iframe widget "${widgetTitle}". Expected IFRAME, got ${configurationTypeString}`,
|
||||
userFriendlyMessage: msg`Invalid configuration type for iframe widget`,
|
||||
value: universalConfiguration.configurationType,
|
||||
},
|
||||
],
|
||||
status: 'fail',
|
||||
};
|
||||
}
|
||||
|
||||
return errors;
|
||||
return {
|
||||
status: 'success',
|
||||
iframeUniversalConfiguration:
|
||||
universalConfiguration as UniversalFlatPageLayoutWidget<WidgetConfigurationType.IFRAME>['universalConfiguration'],
|
||||
};
|
||||
};
|
||||
|
||||
+15
-11
@@ -3,7 +3,6 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type ValidateFlatPageLayoutWidgetTypeSpecificitiesForCreationArgs } from 'src/engine/metadata-modules/flat-page-layout-widget/services/flat-page-layout-widget-type-validator.service';
|
||||
import { type FlatPageLayoutWidgetValidationError } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-validation-error.type';
|
||||
import { type IframeConfiguration } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/types/iframe-configuration.type';
|
||||
import { validateIframeConfigurationType } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-iframe-configuration-type.util';
|
||||
import { validateIframeUrl } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-iframe-url.util';
|
||||
import { PageLayoutWidgetExceptionCode } from 'src/engine/metadata-modules/page-layout-widget/exceptions/page-layout-widget.exception';
|
||||
@@ -12,29 +11,34 @@ export const validateIframeFlatPageLayoutWidgetForCreation = (
|
||||
args: ValidateFlatPageLayoutWidgetTypeSpecificitiesForCreationArgs,
|
||||
): FlatPageLayoutWidgetValidationError[] => {
|
||||
const { flatEntityToValidate } = args;
|
||||
const { configuration, title } = flatEntityToValidate;
|
||||
const { universalConfiguration, title: widgetTitle } = flatEntityToValidate;
|
||||
const errors: FlatPageLayoutWidgetValidationError[] = [];
|
||||
|
||||
if (!isDefined(configuration)) {
|
||||
if (!isDefined(universalConfiguration)) {
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Configuration is required for iframe widget "${title}"`,
|
||||
message: t`Configuration is required for iframe widget "${widgetTitle}"`,
|
||||
userFriendlyMessage: msg`Configuration is required for iframe widget`,
|
||||
});
|
||||
|
||||
return errors;
|
||||
}
|
||||
|
||||
const iframeConfiguration = configuration as IframeConfiguration;
|
||||
const result = validateIframeConfigurationType({
|
||||
universalConfiguration,
|
||||
widgetTitle,
|
||||
});
|
||||
|
||||
const configurationTypeErrors = validateIframeConfigurationType(
|
||||
iframeConfiguration,
|
||||
title,
|
||||
);
|
||||
if (result.status === 'fail') {
|
||||
return [...errors, ...result.errors];
|
||||
}
|
||||
|
||||
errors.push(...configurationTypeErrors);
|
||||
const { iframeUniversalConfiguration } = result;
|
||||
|
||||
const urlErrors = validateIframeUrl(iframeConfiguration, title);
|
||||
const urlErrors = validateIframeUrl({
|
||||
iframeUniversalConfiguration,
|
||||
widgetTitle,
|
||||
});
|
||||
|
||||
errors.push(...urlErrors);
|
||||
|
||||
|
||||
+14
-10
@@ -2,7 +2,6 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type ValidateFlatPageLayoutWidgetTypeSpecificitiesForUpdateArgs } from 'src/engine/metadata-modules/flat-page-layout-widget/services/flat-page-layout-widget-type-validator.service';
|
||||
import { type FlatPageLayoutWidgetValidationError } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-validation-error.type';
|
||||
import { type IframeConfiguration } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/types/iframe-configuration.type';
|
||||
import { validateIframeConfigurationType } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-iframe-configuration-type.util';
|
||||
import { validateIframeUrl } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-iframe-url.util';
|
||||
|
||||
@@ -10,23 +9,28 @@ export const validateIframeFlatPageLayoutWidgetForUpdate = (
|
||||
args: ValidateFlatPageLayoutWidgetTypeSpecificitiesForUpdateArgs,
|
||||
): FlatPageLayoutWidgetValidationError[] => {
|
||||
const { flatEntityToValidate } = args;
|
||||
const { configuration, title } = flatEntityToValidate;
|
||||
const { universalConfiguration, title: widgetTitle } = flatEntityToValidate;
|
||||
const errors: FlatPageLayoutWidgetValidationError[] = [];
|
||||
|
||||
if (!isDefined(configuration)) {
|
||||
if (!isDefined(universalConfiguration)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const iframeConfiguration = configuration as IframeConfiguration;
|
||||
const result = validateIframeConfigurationType({
|
||||
universalConfiguration,
|
||||
widgetTitle,
|
||||
});
|
||||
|
||||
const configurationTypeErrors = validateIframeConfigurationType(
|
||||
iframeConfiguration,
|
||||
title,
|
||||
);
|
||||
if (result.status === 'fail') {
|
||||
return result.errors;
|
||||
}
|
||||
|
||||
errors.push(...configurationTypeErrors);
|
||||
const { iframeUniversalConfiguration } = result;
|
||||
|
||||
const urlErrors = validateIframeUrl(iframeConfiguration, title);
|
||||
const urlErrors = validateIframeUrl({
|
||||
iframeUniversalConfiguration,
|
||||
widgetTitle,
|
||||
});
|
||||
|
||||
errors.push(...urlErrors);
|
||||
|
||||
|
||||
+14
-7
@@ -2,21 +2,28 @@ import { msg, t } from '@lingui/core/macro';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type FlatPageLayoutWidgetValidationError } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-validation-error.type';
|
||||
import { type IframeConfiguration } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/types/iframe-configuration.type';
|
||||
import { type WidgetConfigurationType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-configuration-type.type';
|
||||
import { PageLayoutWidgetExceptionCode } from 'src/engine/metadata-modules/page-layout-widget/exceptions/page-layout-widget.exception';
|
||||
import { type UniversalFlatPageLayoutWidget } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-page-layout-widget.type';
|
||||
|
||||
export const validateIframeUrl = (
|
||||
configuration: IframeConfiguration,
|
||||
widgetTitle: string,
|
||||
): FlatPageLayoutWidgetValidationError[] => {
|
||||
export const validateIframeUrl = ({
|
||||
iframeUniversalConfiguration,
|
||||
widgetTitle,
|
||||
}: {
|
||||
iframeUniversalConfiguration: UniversalFlatPageLayoutWidget<WidgetConfigurationType.IFRAME>['universalConfiguration'];
|
||||
widgetTitle: string;
|
||||
}): FlatPageLayoutWidgetValidationError[] => {
|
||||
const errors: FlatPageLayoutWidgetValidationError[] = [];
|
||||
|
||||
if (isDefined(configuration.url) && typeof configuration.url !== 'string') {
|
||||
if (
|
||||
isDefined(iframeUniversalConfiguration.url) &&
|
||||
typeof iframeUniversalConfiguration.url !== 'string'
|
||||
) {
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`URL must be a string for widget "${widgetTitle}"`,
|
||||
userFriendlyMessage: msg`URL must be a string`,
|
||||
value: configuration.url,
|
||||
value: iframeUniversalConfiguration.url,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+14
-6
@@ -2,16 +2,24 @@ import { msg, t } from '@lingui/core/macro';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type FlatPageLayoutWidgetValidationError } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-validation-error.type';
|
||||
import { type LineChartConfigurationDTO } from 'src/engine/metadata-modules/page-layout-widget/dtos/line-chart-configuration.dto';
|
||||
import { type WidgetConfigurationType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-configuration-type.type';
|
||||
import { PageLayoutWidgetExceptionCode } from 'src/engine/metadata-modules/page-layout-widget/exceptions/page-layout-widget.exception';
|
||||
import { type UniversalFlatPageLayoutWidget } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-page-layout-widget.type';
|
||||
|
||||
export const validateLineChartConfiguration = (
|
||||
configuration: LineChartConfigurationDTO,
|
||||
widgetTitle: string,
|
||||
): FlatPageLayoutWidgetValidationError[] => {
|
||||
export const validateLineChartConfiguration = ({
|
||||
graphUniversalConfiguration,
|
||||
widgetTitle,
|
||||
}: {
|
||||
graphUniversalConfiguration: UniversalFlatPageLayoutWidget<WidgetConfigurationType.LINE_CHART>['universalConfiguration'];
|
||||
widgetTitle: string;
|
||||
}): FlatPageLayoutWidgetValidationError[] => {
|
||||
const errors: FlatPageLayoutWidgetValidationError[] = [];
|
||||
|
||||
if (!isDefined(configuration.primaryAxisGroupByFieldMetadataId)) {
|
||||
if (
|
||||
!isDefined(
|
||||
graphUniversalConfiguration.primaryAxisGroupByFieldMetadataUniversalIdentifier,
|
||||
)
|
||||
) {
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Primary axis group by field is required for line chart widget "${widgetTitle}"`,
|
||||
|
||||
+14
-6
@@ -2,16 +2,24 @@ import { msg, t } from '@lingui/core/macro';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type FlatPageLayoutWidgetValidationError } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-validation-error.type';
|
||||
import { type PieChartConfigurationDTO } from 'src/engine/metadata-modules/page-layout-widget/dtos/pie-chart-configuration.dto';
|
||||
import { type WidgetConfigurationType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-configuration-type.type';
|
||||
import { PageLayoutWidgetExceptionCode } from 'src/engine/metadata-modules/page-layout-widget/exceptions/page-layout-widget.exception';
|
||||
import { type UniversalFlatPageLayoutWidget } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-page-layout-widget.type';
|
||||
|
||||
export const validatePieChartConfiguration = (
|
||||
configuration: PieChartConfigurationDTO,
|
||||
widgetTitle: string,
|
||||
): FlatPageLayoutWidgetValidationError[] => {
|
||||
export const validatePieChartConfiguration = ({
|
||||
graphUniversalConfiguration,
|
||||
widgetTitle,
|
||||
}: {
|
||||
graphUniversalConfiguration: UniversalFlatPageLayoutWidget<WidgetConfigurationType.PIE_CHART>['universalConfiguration'];
|
||||
widgetTitle: string;
|
||||
}): FlatPageLayoutWidgetValidationError[] => {
|
||||
const errors: FlatPageLayoutWidgetValidationError[] = [];
|
||||
|
||||
if (!isDefined(configuration.groupByFieldMetadataId)) {
|
||||
if (
|
||||
!isDefined(
|
||||
graphUniversalConfiguration.groupByFieldMetadataUniversalIdentifier,
|
||||
)
|
||||
) {
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Group by field is required for pie chart widget "${widgetTitle}"`,
|
||||
|
||||
+13
-9
@@ -2,16 +2,20 @@ import { msg, t } from '@lingui/core/macro';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type FlatPageLayoutWidgetValidationError } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-validation-error.type';
|
||||
import { type StandaloneRichTextConfigurationDTO } from 'src/engine/metadata-modules/page-layout-widget/dtos/standalone-rich-text-configuration.dto';
|
||||
import { type WidgetConfigurationType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-configuration-type.type';
|
||||
import { PageLayoutWidgetExceptionCode } from 'src/engine/metadata-modules/page-layout-widget/exceptions/page-layout-widget.exception';
|
||||
import { type UniversalFlatPageLayoutWidget } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-page-layout-widget.type';
|
||||
|
||||
export const validateStandaloneRichTextBody = (
|
||||
configuration: StandaloneRichTextConfigurationDTO,
|
||||
widgetTitle: string,
|
||||
): FlatPageLayoutWidgetValidationError[] => {
|
||||
export const validateStandaloneRichTextBody = ({
|
||||
standaloneRichTextUniversalConfiguration,
|
||||
widgetTitle,
|
||||
}: {
|
||||
standaloneRichTextUniversalConfiguration: UniversalFlatPageLayoutWidget<WidgetConfigurationType.STANDALONE_RICH_TEXT>['universalConfiguration'];
|
||||
widgetTitle: string;
|
||||
}): FlatPageLayoutWidgetValidationError[] => {
|
||||
const errors: FlatPageLayoutWidgetValidationError[] = [];
|
||||
|
||||
if (!isDefined(configuration.body)) {
|
||||
if (!isDefined(standaloneRichTextUniversalConfiguration.body)) {
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Body is required for standalone rich text widget "${widgetTitle}"`,
|
||||
@@ -22,14 +26,14 @@ export const validateStandaloneRichTextBody = (
|
||||
}
|
||||
|
||||
if (
|
||||
typeof configuration.body !== 'object' ||
|
||||
Array.isArray(configuration.body)
|
||||
typeof standaloneRichTextUniversalConfiguration.body !== 'object' ||
|
||||
Array.isArray(standaloneRichTextUniversalConfiguration.body)
|
||||
) {
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Body must be an object for widget "${widgetTitle}"`,
|
||||
userFriendlyMessage: msg`Body must be an object`,
|
||||
value: configuration.body,
|
||||
value: standaloneRichTextUniversalConfiguration.body,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+46
-27
@@ -2,42 +2,61 @@ import { msg, t } from '@lingui/core/macro';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type FlatPageLayoutWidgetValidationError } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-validation-error.type';
|
||||
import { type StandaloneRichTextConfigurationDTO } from 'src/engine/metadata-modules/page-layout-widget/dtos/standalone-rich-text-configuration.dto';
|
||||
import { WidgetConfigurationType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-configuration-type.type';
|
||||
import { PageLayoutWidgetExceptionCode } from 'src/engine/metadata-modules/page-layout-widget/exceptions/page-layout-widget.exception';
|
||||
import { type UniversalFlatPageLayoutWidget } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-page-layout-widget.type';
|
||||
|
||||
export const validateStandaloneRichTextConfigurationType = (
|
||||
configuration: StandaloneRichTextConfigurationDTO,
|
||||
widgetTitle: string,
|
||||
): FlatPageLayoutWidgetValidationError[] => {
|
||||
const errors: FlatPageLayoutWidgetValidationError[] = [];
|
||||
|
||||
if (!isDefined(configuration.configurationType)) {
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Configuration type is required for widget "${widgetTitle}"`,
|
||||
userFriendlyMessage: msg`Configuration type is required`,
|
||||
});
|
||||
|
||||
return errors;
|
||||
export const validateStandaloneRichTextConfigurationType = ({
|
||||
universalConfiguration,
|
||||
widgetTitle,
|
||||
}: {
|
||||
universalConfiguration: UniversalFlatPageLayoutWidget['universalConfiguration'];
|
||||
widgetTitle: string;
|
||||
}):
|
||||
| {
|
||||
status: 'fail';
|
||||
errors: FlatPageLayoutWidgetValidationError[];
|
||||
}
|
||||
| {
|
||||
status: 'success';
|
||||
standaloneRichTextUniversalConfiguration: UniversalFlatPageLayoutWidget<WidgetConfigurationType.STANDALONE_RICH_TEXT>['universalConfiguration'];
|
||||
} => {
|
||||
if (!isDefined(universalConfiguration.configurationType)) {
|
||||
return {
|
||||
errors: [
|
||||
{
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Configuration type is required for widget "${widgetTitle}"`,
|
||||
userFriendlyMessage: msg`Configuration type is required`,
|
||||
},
|
||||
],
|
||||
status: 'fail',
|
||||
};
|
||||
}
|
||||
|
||||
if (
|
||||
configuration.configurationType !==
|
||||
universalConfiguration.configurationType !==
|
||||
WidgetConfigurationType.STANDALONE_RICH_TEXT
|
||||
) {
|
||||
const expectedConfigurationType =
|
||||
WidgetConfigurationType.STANDALONE_RICH_TEXT;
|
||||
const configurationTypeString =
|
||||
universalConfiguration.configurationType.toString();
|
||||
|
||||
const configurationType = configuration.configurationType;
|
||||
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Invalid configuration type for standalone rich text widget "${widgetTitle}". Expected ${expectedConfigurationType}, got ${configurationType}`,
|
||||
userFriendlyMessage: msg`Invalid configuration type for standalone rich text widget`,
|
||||
value: configuration.configurationType,
|
||||
});
|
||||
return {
|
||||
errors: [
|
||||
{
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Invalid configuration type for standalone rich text widget "${widgetTitle}". Expected STANDALONE_RICH_TEXT, got ${configurationTypeString}`,
|
||||
userFriendlyMessage: msg`Invalid configuration type for standalone rich text widget`,
|
||||
value: universalConfiguration.configurationType,
|
||||
},
|
||||
],
|
||||
status: 'fail',
|
||||
};
|
||||
}
|
||||
|
||||
return errors;
|
||||
return {
|
||||
status: 'success',
|
||||
standaloneRichTextUniversalConfiguration:
|
||||
universalConfiguration as UniversalFlatPageLayoutWidget<WidgetConfigurationType.STANDALONE_RICH_TEXT>['universalConfiguration'],
|
||||
};
|
||||
};
|
||||
|
||||
+15
-15
@@ -5,40 +5,40 @@ import { type ValidateFlatPageLayoutWidgetTypeSpecificitiesForCreationArgs } fro
|
||||
import { type FlatPageLayoutWidgetValidationError } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-validation-error.type';
|
||||
import { validateStandaloneRichTextBody } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-standalone-rich-text-body.util';
|
||||
import { validateStandaloneRichTextConfigurationType } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-standalone-rich-text-configuration-type.util';
|
||||
import { type StandaloneRichTextConfigurationDTO } from 'src/engine/metadata-modules/page-layout-widget/dtos/standalone-rich-text-configuration.dto';
|
||||
import { PageLayoutWidgetExceptionCode } from 'src/engine/metadata-modules/page-layout-widget/exceptions/page-layout-widget.exception';
|
||||
|
||||
export const validateStandaloneRichTextFlatPageLayoutWidgetForCreation = (
|
||||
args: ValidateFlatPageLayoutWidgetTypeSpecificitiesForCreationArgs,
|
||||
): FlatPageLayoutWidgetValidationError[] => {
|
||||
const { flatEntityToValidate } = args;
|
||||
const { configuration, title } = flatEntityToValidate;
|
||||
const { universalConfiguration, title: widgetTitle } = flatEntityToValidate;
|
||||
const errors: FlatPageLayoutWidgetValidationError[] = [];
|
||||
|
||||
if (!isDefined(configuration)) {
|
||||
if (!isDefined(universalConfiguration)) {
|
||||
errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA,
|
||||
message: t`Configuration is required for standalone rich text widget "${title}"`,
|
||||
message: t`Configuration is required for standalone rich text widget "${widgetTitle}"`,
|
||||
userFriendlyMessage: msg`Configuration is required for standalone rich text widget`,
|
||||
});
|
||||
|
||||
return errors;
|
||||
}
|
||||
|
||||
const standaloneRichTextConfiguration =
|
||||
configuration as StandaloneRichTextConfigurationDTO;
|
||||
const result = validateStandaloneRichTextConfigurationType({
|
||||
universalConfiguration,
|
||||
widgetTitle,
|
||||
});
|
||||
|
||||
const configurationTypeErrors = validateStandaloneRichTextConfigurationType(
|
||||
standaloneRichTextConfiguration,
|
||||
title,
|
||||
);
|
||||
if (result.status === 'fail') {
|
||||
return [...errors, ...result.errors];
|
||||
}
|
||||
|
||||
errors.push(...configurationTypeErrors);
|
||||
const { standaloneRichTextUniversalConfiguration } = result;
|
||||
|
||||
const bodyErrors = validateStandaloneRichTextBody(
|
||||
standaloneRichTextConfiguration,
|
||||
title,
|
||||
);
|
||||
const bodyErrors = validateStandaloneRichTextBody({
|
||||
standaloneRichTextUniversalConfiguration,
|
||||
widgetTitle,
|
||||
});
|
||||
|
||||
errors.push(...bodyErrors);
|
||||
|
||||
|
||||
+14
-14
@@ -4,33 +4,33 @@ import { type ValidateFlatPageLayoutWidgetTypeSpecificitiesForUpdateArgs } from
|
||||
import { type FlatPageLayoutWidgetValidationError } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-validation-error.type';
|
||||
import { validateStandaloneRichTextBody } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-standalone-rich-text-body.util';
|
||||
import { validateStandaloneRichTextConfigurationType } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-standalone-rich-text-configuration-type.util';
|
||||
import { type StandaloneRichTextConfigurationDTO } from 'src/engine/metadata-modules/page-layout-widget/dtos/standalone-rich-text-configuration.dto';
|
||||
|
||||
export const validateStandaloneRichTextFlatPageLayoutWidgetForUpdate = (
|
||||
args: ValidateFlatPageLayoutWidgetTypeSpecificitiesForUpdateArgs,
|
||||
): FlatPageLayoutWidgetValidationError[] => {
|
||||
const { flatEntityToValidate } = args;
|
||||
const { configuration, title } = flatEntityToValidate;
|
||||
const { universalConfiguration, title: widgetTitle } = flatEntityToValidate;
|
||||
const errors: FlatPageLayoutWidgetValidationError[] = [];
|
||||
|
||||
if (!isDefined(configuration)) {
|
||||
if (!isDefined(universalConfiguration)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const standaloneRichTextConfiguration =
|
||||
configuration as StandaloneRichTextConfigurationDTO;
|
||||
const result = validateStandaloneRichTextConfigurationType({
|
||||
universalConfiguration,
|
||||
widgetTitle,
|
||||
});
|
||||
|
||||
const configurationTypeErrors = validateStandaloneRichTextConfigurationType(
|
||||
standaloneRichTextConfiguration,
|
||||
title,
|
||||
);
|
||||
if (result.status === 'fail') {
|
||||
return result.errors;
|
||||
}
|
||||
|
||||
errors.push(...configurationTypeErrors);
|
||||
const { standaloneRichTextUniversalConfiguration } = result;
|
||||
|
||||
const bodyErrors = validateStandaloneRichTextBody(
|
||||
standaloneRichTextConfiguration,
|
||||
title,
|
||||
);
|
||||
const bodyErrors = validateStandaloneRichTextBody({
|
||||
standaloneRichTextUniversalConfiguration,
|
||||
widgetTitle,
|
||||
});
|
||||
|
||||
errors.push(...bodyErrors);
|
||||
|
||||
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
import { type FlatRole } from 'src/engine/metadata-modules/flat-role/types/flat-role.type';
|
||||
import { type UniversalFlatRole } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-role.type';
|
||||
|
||||
export const FLAT_ROLE_REQUIRED_PROPERTIES = [
|
||||
'label',
|
||||
@@ -8,4 +8,4 @@ export const FLAT_ROLE_REQUIRED_PROPERTIES = [
|
||||
'canUpdateAllObjectRecords',
|
||||
'canSoftDeleteAllObjectRecords',
|
||||
'canDestroyAllObjectRecords',
|
||||
] as const satisfies (keyof FlatRole)[];
|
||||
] as const satisfies (keyof UniversalFlatRole)[];
|
||||
|
||||
+6
@@ -27,6 +27,12 @@ export enum WidgetConfigurationType {
|
||||
WORKFLOW_RUN = 'WORKFLOW_RUN',
|
||||
FRONT_COMPONENT = 'FRONT_COMPONENT',
|
||||
}
|
||||
export type AllGraphWidgetConfigurationType =
|
||||
| WidgetConfigurationType.AGGREGATE_CHART
|
||||
| WidgetConfigurationType.GAUGE_CHART
|
||||
| WidgetConfigurationType.PIE_CHART
|
||||
| WidgetConfigurationType.BAR_CHART
|
||||
| WidgetConfigurationType.LINE_CHART;
|
||||
|
||||
registerEnumType(WidgetConfigurationType, {
|
||||
name: 'WidgetConfigurationType',
|
||||
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
import { type AgentEntity } from 'src/engine/metadata-modules/ai/ai-agent/entities/agent.entity';
|
||||
import { type UniversalFlatEntityFrom } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-entity-from.type';
|
||||
|
||||
export type UniversalFlatAgent = UniversalFlatEntityFrom<AgentEntity, 'agent'>;
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import { type CommandMenuItemEntity } from 'src/engine/metadata-modules/command-menu-item/entities/command-menu-item.entity';
|
||||
import { type UniversalFlatEntityFrom } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-entity-from.type';
|
||||
|
||||
export type UniversalFlatCommandMenuItem = UniversalFlatEntityFrom<
|
||||
CommandMenuItemEntity,
|
||||
'commandMenuItem'
|
||||
>;
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import { type FrontComponentEntity } from 'src/engine/metadata-modules/front-component/entities/front-component.entity';
|
||||
import { type UniversalFlatEntityFrom } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-entity-from.type';
|
||||
|
||||
export type UniversalFlatFrontComponent = UniversalFlatEntityFrom<
|
||||
FrontComponentEntity,
|
||||
'frontComponent'
|
||||
>;
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import { type Sources } from 'twenty-shared/types';
|
||||
|
||||
import { type LogicFunctionEntity } from 'src/engine/metadata-modules/logic-function/logic-function.entity';
|
||||
import { type UniversalFlatEntityFrom } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-entity-from.type';
|
||||
|
||||
export type UniversalFlatLogicFunction = UniversalFlatEntityFrom<
|
||||
LogicFunctionEntity,
|
||||
'logicFunction'
|
||||
> & {
|
||||
code?: Sources;
|
||||
};
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import { type NavigationMenuItemEntity } from 'src/engine/metadata-modules/navigation-menu-item/entities/navigation-menu-item.entity';
|
||||
import { type UniversalFlatEntityFrom } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-entity-from.type';
|
||||
|
||||
export type UniversalFlatNavigationMenuItem = UniversalFlatEntityFrom<
|
||||
NavigationMenuItemEntity,
|
||||
'navigationMenuItem'
|
||||
>;
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import { type PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout-tab/entities/page-layout-tab.entity';
|
||||
import { type UniversalFlatEntityFrom } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-entity-from.type';
|
||||
|
||||
export type UniversalFlatPageLayoutTab = UniversalFlatEntityFrom<
|
||||
PageLayoutTabEntity,
|
||||
'pageLayoutTab'
|
||||
>;
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import { type PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout-widget/entities/page-layout-widget.entity';
|
||||
import { type WidgetConfigurationType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-configuration-type.type';
|
||||
import { type UniversalFlatEntityFrom } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-entity-from.type';
|
||||
|
||||
export type UniversalFlatPageLayoutWidget<
|
||||
TWidgetConfigurationType extends
|
||||
WidgetConfigurationType = WidgetConfigurationType,
|
||||
> = UniversalFlatEntityFrom<
|
||||
PageLayoutWidgetEntity<TWidgetConfigurationType>,
|
||||
'pageLayoutWidget'
|
||||
>;
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import { type PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity';
|
||||
import { type UniversalFlatEntityFrom } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-entity-from.type';
|
||||
|
||||
export type UniversalFlatPageLayout = UniversalFlatEntityFrom<
|
||||
PageLayoutEntity,
|
||||
'pageLayout'
|
||||
>;
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import { type RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-target.entity';
|
||||
import { type UniversalFlatEntityFrom } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-entity-from.type';
|
||||
|
||||
export type UniversalFlatRoleTarget = UniversalFlatEntityFrom<
|
||||
RoleTargetEntity,
|
||||
'roleTarget'
|
||||
>;
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
import { type RowLevelPermissionPredicateGroupEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate-group.entity';
|
||||
import { type UniversalFlatEntityFrom } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-entity-from.type';
|
||||
|
||||
export type UniversalFlatRowLevelPermissionPredicateGroup =
|
||||
UniversalFlatEntityFrom<
|
||||
RowLevelPermissionPredicateGroupEntity,
|
||||
'rowLevelPermissionPredicateGroup'
|
||||
>;
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import { type RowLevelPermissionPredicateEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate.entity';
|
||||
import { type UniversalFlatEntityFrom } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-entity-from.type';
|
||||
|
||||
export type UniversalFlatRowLevelPermissionPredicate = UniversalFlatEntityFrom<
|
||||
RowLevelPermissionPredicateEntity,
|
||||
'rowLevelPermissionPredicate'
|
||||
>;
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import { type WebhookEntity } from 'src/engine/metadata-modules/webhook/entities/webhook.entity';
|
||||
import { type UniversalFlatEntityFrom } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-entity-from.type';
|
||||
|
||||
export type UniversalFlatWebhook = UniversalFlatEntityFrom<
|
||||
WebhookEntity,
|
||||
'webhook'
|
||||
>;
|
||||
+4
@@ -1,12 +1,16 @@
|
||||
import { type BaseFlatCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-create-workspace-migration-action.type';
|
||||
import { type BaseFlatDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-delete-workspace-migration-action.type';
|
||||
import { type BaseFlatUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-update-workspace-migration-action.type';
|
||||
import { type BaseUniversalCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-create-workspace-migration-action.type';
|
||||
import { type BaseUniversalDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-delete-workspace-migration-action.type';
|
||||
import { type BaseUniversalUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-update-workspace-migration-action.type';
|
||||
|
||||
export type FlatCreateAgentAction =
|
||||
BaseFlatCreateWorkspaceMigrationAction<'agent'>;
|
||||
|
||||
export type UniversalCreateAgentAction =
|
||||
BaseUniversalCreateWorkspaceMigrationAction<'agent'>;
|
||||
|
||||
export type FlatUpdateAgentAction =
|
||||
BaseFlatUpdateWorkspaceMigrationAction<'agent'>;
|
||||
|
||||
|
||||
+4
@@ -1,12 +1,16 @@
|
||||
import { type BaseFlatCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-create-workspace-migration-action.type';
|
||||
import { type BaseFlatDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-delete-workspace-migration-action.type';
|
||||
import { type BaseFlatUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-update-workspace-migration-action.type';
|
||||
import { type BaseUniversalCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-create-workspace-migration-action.type';
|
||||
import { type BaseUniversalDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-delete-workspace-migration-action.type';
|
||||
import { type BaseUniversalUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-update-workspace-migration-action.type';
|
||||
|
||||
export type FlatCreateCommandMenuItemAction =
|
||||
BaseFlatCreateWorkspaceMigrationAction<'commandMenuItem'>;
|
||||
|
||||
export type UniversalCreateCommandMenuItemAction =
|
||||
BaseUniversalCreateWorkspaceMigrationAction<'commandMenuItem'>;
|
||||
|
||||
export type FlatUpdateCommandMenuItemAction =
|
||||
BaseFlatUpdateWorkspaceMigrationAction<'commandMenuItem'>;
|
||||
|
||||
|
||||
+4
@@ -1,12 +1,16 @@
|
||||
import { type BaseFlatCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-create-workspace-migration-action.type';
|
||||
import { type BaseFlatDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-delete-workspace-migration-action.type';
|
||||
import { type BaseFlatUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-update-workspace-migration-action.type';
|
||||
import { type BaseUniversalCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-create-workspace-migration-action.type';
|
||||
import { type BaseUniversalDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-delete-workspace-migration-action.type';
|
||||
import { type BaseUniversalUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-update-workspace-migration-action.type';
|
||||
|
||||
export type FlatCreateFrontComponentAction =
|
||||
BaseFlatCreateWorkspaceMigrationAction<'frontComponent'>;
|
||||
|
||||
export type UniversalCreateFrontComponentAction =
|
||||
BaseUniversalCreateWorkspaceMigrationAction<'frontComponent'>;
|
||||
|
||||
export type FlatUpdateFrontComponentAction =
|
||||
BaseFlatUpdateWorkspaceMigrationAction<'frontComponent'>;
|
||||
|
||||
|
||||
+4
@@ -3,12 +3,16 @@ import { type Sources } from 'twenty-shared/types';
|
||||
import { type BaseFlatCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-create-workspace-migration-action.type';
|
||||
import { type BaseFlatDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-delete-workspace-migration-action.type';
|
||||
import { type BaseFlatUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-update-workspace-migration-action.type';
|
||||
import { type BaseUniversalCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-create-workspace-migration-action.type';
|
||||
import { type BaseUniversalDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-delete-workspace-migration-action.type';
|
||||
import { type BaseUniversalUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-update-workspace-migration-action.type';
|
||||
|
||||
export type FlatCreateLogicFunctionAction =
|
||||
BaseFlatCreateWorkspaceMigrationAction<'logicFunction'>;
|
||||
|
||||
export type UniversalCreateLogicFunctionAction =
|
||||
BaseUniversalCreateWorkspaceMigrationAction<'logicFunction'>;
|
||||
|
||||
export type FlatUpdateLogicFunctionAction =
|
||||
BaseFlatUpdateWorkspaceMigrationAction<'logicFunction'> & {
|
||||
code?: Sources;
|
||||
|
||||
+4
@@ -1,12 +1,16 @@
|
||||
import { type BaseFlatCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-create-workspace-migration-action.type';
|
||||
import { type BaseFlatDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-delete-workspace-migration-action.type';
|
||||
import { type BaseFlatUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-update-workspace-migration-action.type';
|
||||
import { type BaseUniversalCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-create-workspace-migration-action.type';
|
||||
import { type BaseUniversalDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-delete-workspace-migration-action.type';
|
||||
import { type BaseUniversalUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-update-workspace-migration-action.type';
|
||||
|
||||
export type FlatCreateNavigationMenuItemAction =
|
||||
BaseFlatCreateWorkspaceMigrationAction<'navigationMenuItem'>;
|
||||
|
||||
export type UniversalCreateNavigationMenuItemAction =
|
||||
BaseUniversalCreateWorkspaceMigrationAction<'navigationMenuItem'>;
|
||||
|
||||
export type FlatUpdateNavigationMenuItemAction =
|
||||
BaseFlatUpdateWorkspaceMigrationAction<'navigationMenuItem'>;
|
||||
|
||||
|
||||
+4
@@ -1,12 +1,16 @@
|
||||
import { type BaseFlatCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-create-workspace-migration-action.type';
|
||||
import { type BaseFlatDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-delete-workspace-migration-action.type';
|
||||
import { type BaseFlatUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-update-workspace-migration-action.type';
|
||||
import { type BaseUniversalCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-create-workspace-migration-action.type';
|
||||
import { type BaseUniversalDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-delete-workspace-migration-action.type';
|
||||
import { type BaseUniversalUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-update-workspace-migration-action.type';
|
||||
|
||||
export type FlatCreatePageLayoutTabAction =
|
||||
BaseFlatCreateWorkspaceMigrationAction<'pageLayoutTab'>;
|
||||
|
||||
export type UniversalCreatePageLayoutTabAction =
|
||||
BaseUniversalCreateWorkspaceMigrationAction<'pageLayoutTab'>;
|
||||
|
||||
export type FlatUpdatePageLayoutTabAction =
|
||||
BaseFlatUpdateWorkspaceMigrationAction<'pageLayoutTab'>;
|
||||
|
||||
|
||||
+4
@@ -1,12 +1,16 @@
|
||||
import { type BaseFlatCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-create-workspace-migration-action.type';
|
||||
import { type BaseFlatDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-delete-workspace-migration-action.type';
|
||||
import { type BaseFlatUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-update-workspace-migration-action.type';
|
||||
import { type BaseUniversalCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-create-workspace-migration-action.type';
|
||||
import { type BaseUniversalDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-delete-workspace-migration-action.type';
|
||||
import { type BaseUniversalUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-update-workspace-migration-action.type';
|
||||
|
||||
export type FlatCreatePageLayoutWidgetAction =
|
||||
BaseFlatCreateWorkspaceMigrationAction<'pageLayoutWidget'>;
|
||||
|
||||
export type UniversalCreatePageLayoutWidgetAction =
|
||||
BaseUniversalCreateWorkspaceMigrationAction<'pageLayoutWidget'>;
|
||||
|
||||
export type FlatUpdatePageLayoutWidgetAction =
|
||||
BaseFlatUpdateWorkspaceMigrationAction<'pageLayoutWidget'>;
|
||||
|
||||
|
||||
+4
@@ -1,12 +1,16 @@
|
||||
import { type BaseFlatCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-create-workspace-migration-action.type';
|
||||
import { type BaseFlatDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-delete-workspace-migration-action.type';
|
||||
import { type BaseFlatUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-update-workspace-migration-action.type';
|
||||
import { type BaseUniversalCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-create-workspace-migration-action.type';
|
||||
import { type BaseUniversalDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-delete-workspace-migration-action.type';
|
||||
import { type BaseUniversalUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-update-workspace-migration-action.type';
|
||||
|
||||
export type FlatCreatePageLayoutAction =
|
||||
BaseFlatCreateWorkspaceMigrationAction<'pageLayout'>;
|
||||
|
||||
export type UniversalCreatePageLayoutAction =
|
||||
BaseUniversalCreateWorkspaceMigrationAction<'pageLayout'>;
|
||||
|
||||
export type FlatUpdatePageLayoutAction =
|
||||
BaseFlatUpdateWorkspaceMigrationAction<'pageLayout'>;
|
||||
|
||||
|
||||
+4
@@ -1,12 +1,16 @@
|
||||
import { type BaseFlatCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-create-workspace-migration-action.type';
|
||||
import { type BaseFlatDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-delete-workspace-migration-action.type';
|
||||
import { type BaseFlatUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-update-workspace-migration-action.type';
|
||||
import { type BaseUniversalCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-create-workspace-migration-action.type';
|
||||
import { type BaseUniversalDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-delete-workspace-migration-action.type';
|
||||
import { type BaseUniversalUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-update-workspace-migration-action.type';
|
||||
|
||||
export type FlatCreateRoleTargetAction =
|
||||
BaseFlatCreateWorkspaceMigrationAction<'roleTarget'>;
|
||||
|
||||
export type UniversalCreateRoleTargetAction =
|
||||
BaseUniversalCreateWorkspaceMigrationAction<'roleTarget'>;
|
||||
|
||||
export type FlatUpdateRoleTargetAction =
|
||||
BaseFlatUpdateWorkspaceMigrationAction<'roleTarget'>;
|
||||
|
||||
|
||||
+4
@@ -1,12 +1,16 @@
|
||||
import { type BaseFlatCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-create-workspace-migration-action.type';
|
||||
import { type BaseFlatDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-delete-workspace-migration-action.type';
|
||||
import { type BaseFlatUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-update-workspace-migration-action.type';
|
||||
import { type BaseUniversalCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-create-workspace-migration-action.type';
|
||||
import { type BaseUniversalDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-delete-workspace-migration-action.type';
|
||||
import { type BaseUniversalUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-update-workspace-migration-action.type';
|
||||
|
||||
export type FlatCreateRoleAction =
|
||||
BaseFlatCreateWorkspaceMigrationAction<'role'>;
|
||||
|
||||
export type UniversalCreateRoleAction =
|
||||
BaseUniversalCreateWorkspaceMigrationAction<'role'>;
|
||||
|
||||
export type FlatUpdateRoleAction =
|
||||
BaseFlatUpdateWorkspaceMigrationAction<'role'>;
|
||||
|
||||
|
||||
+4
@@ -3,12 +3,16 @@
|
||||
import { type BaseFlatCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-create-workspace-migration-action.type';
|
||||
import { type BaseFlatDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-delete-workspace-migration-action.type';
|
||||
import { type BaseFlatUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-update-workspace-migration-action.type';
|
||||
import { type BaseUniversalCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-create-workspace-migration-action.type';
|
||||
import { type BaseUniversalDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-delete-workspace-migration-action.type';
|
||||
import { type BaseUniversalUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-update-workspace-migration-action.type';
|
||||
|
||||
export type FlatCreateRowLevelPermissionPredicateGroupAction =
|
||||
BaseFlatCreateWorkspaceMigrationAction<'rowLevelPermissionPredicateGroup'>;
|
||||
|
||||
export type UniversalCreateRowLevelPermissionPredicateGroupAction =
|
||||
BaseUniversalCreateWorkspaceMigrationAction<'rowLevelPermissionPredicateGroup'>;
|
||||
|
||||
export type FlatUpdateRowLevelPermissionPredicateGroupAction =
|
||||
BaseFlatUpdateWorkspaceMigrationAction<'rowLevelPermissionPredicateGroup'>;
|
||||
|
||||
|
||||
+4
@@ -3,12 +3,16 @@
|
||||
import { type BaseFlatCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-create-workspace-migration-action.type';
|
||||
import { type BaseFlatDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-delete-workspace-migration-action.type';
|
||||
import { type BaseFlatUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-update-workspace-migration-action.type';
|
||||
import { type BaseUniversalCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-create-workspace-migration-action.type';
|
||||
import { type BaseUniversalDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-delete-workspace-migration-action.type';
|
||||
import { type BaseUniversalUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-update-workspace-migration-action.type';
|
||||
|
||||
export type FlatCreateRowLevelPermissionPredicateAction =
|
||||
BaseFlatCreateWorkspaceMigrationAction<'rowLevelPermissionPredicate'>;
|
||||
|
||||
export type UniversalCreateRowLevelPermissionPredicateAction =
|
||||
BaseUniversalCreateWorkspaceMigrationAction<'rowLevelPermissionPredicate'>;
|
||||
|
||||
export type FlatUpdateRowLevelPermissionPredicateAction =
|
||||
BaseFlatUpdateWorkspaceMigrationAction<'rowLevelPermissionPredicate'>;
|
||||
|
||||
|
||||
+4
@@ -1,12 +1,16 @@
|
||||
import { type BaseFlatCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-create-workspace-migration-action.type';
|
||||
import { type BaseFlatDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-delete-workspace-migration-action.type';
|
||||
import { type BaseFlatUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-update-workspace-migration-action.type';
|
||||
import { type BaseUniversalCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-create-workspace-migration-action.type';
|
||||
import { type BaseUniversalDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-delete-workspace-migration-action.type';
|
||||
import { type BaseUniversalUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-universal-update-workspace-migration-action.type';
|
||||
|
||||
export type FlatCreateWebhookAction =
|
||||
BaseFlatCreateWorkspaceMigrationAction<'webhook'>;
|
||||
|
||||
export type UniversalCreateWebhookAction =
|
||||
BaseUniversalCreateWorkspaceMigrationAction<'webhook'>;
|
||||
|
||||
export type FlatUpdateWebhookAction =
|
||||
BaseFlatUpdateWorkspaceMigrationAction<'webhook'>;
|
||||
|
||||
|
||||
+2
-2
@@ -5,8 +5,8 @@ import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { AgentExceptionCode } from 'src/engine/metadata-modules/ai/ai-agent/agent.exception';
|
||||
import { type FlatAgent } from 'src/engine/metadata-modules/flat-agent/types/flat-agent.type';
|
||||
import { findFlatEntityByUniversalIdentifier } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier.util';
|
||||
import { type UniversalFlatAgent } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-agent.type';
|
||||
import { belongsToTwentyStandardApp } from 'src/engine/metadata-modules/utils/belongs-to-twenty-standard-app.util';
|
||||
import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util';
|
||||
@@ -162,7 +162,7 @@ export class FlatAgentValidatorService {
|
||||
});
|
||||
}
|
||||
|
||||
const optimisticFlatAgent: FlatAgent = {
|
||||
const optimisticFlatAgent: UniversalFlatAgent = {
|
||||
...fromFlatAgent,
|
||||
...flatEntityUpdate,
|
||||
};
|
||||
|
||||
+5
-3
@@ -38,12 +38,14 @@ export class FlatCommandMenuItemValidatorService {
|
||||
const hasWorkflowVersionId = isDefined(
|
||||
flatCommandMenuItem.workflowVersionId,
|
||||
);
|
||||
const hasFrontComponentId = isDefined(flatCommandMenuItem.frontComponentId);
|
||||
const hasFrontComponentUniversalIdentifier = isDefined(
|
||||
flatCommandMenuItem.frontComponentUniversalIdentifier,
|
||||
);
|
||||
|
||||
if (hasWorkflowVersionId === hasFrontComponentId) {
|
||||
if (hasWorkflowVersionId === hasFrontComponentUniversalIdentifier) {
|
||||
validationResult.errors.push({
|
||||
code: CommandMenuItemExceptionCode.WORKFLOW_OR_FRONT_COMPONENT_REQUIRED,
|
||||
message: t`Exactly one of workflowVersionId or frontComponentId is required`,
|
||||
message: t`Exactly one of workflowVersionId or frontComponentUniversalIdentifier is required`,
|
||||
userFriendlyMessage: msg`Exactly one of workflow version or front component is required`,
|
||||
});
|
||||
}
|
||||
|
||||
+6
-7
@@ -10,13 +10,12 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
||||
import { findFlatEntityByUniversalIdentifier } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier.util';
|
||||
import { type FlatPageLayoutTab } from 'src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type';
|
||||
import { type UniversalFlatPageLayoutTab } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-page-layout-tab.type';
|
||||
import { FlatPageLayoutWidgetTypeValidatorService } from 'src/engine/metadata-modules/flat-page-layout-widget/services/flat-page-layout-widget-type-validator.service';
|
||||
import { PageLayoutTabExceptionCode } from 'src/engine/metadata-modules/page-layout-tab/exceptions/page-layout-tab.exception';
|
||||
import { GraphType } from 'src/engine/metadata-modules/page-layout-widget/enums/graph-type.enum';
|
||||
import { WidgetType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-type.enum';
|
||||
import { PageLayoutWidgetExceptionCode } from 'src/engine/metadata-modules/page-layout-widget/exceptions/page-layout-widget.exception';
|
||||
import { AllPageLayoutWidgetConfiguration } from 'src/engine/metadata-modules/page-layout-widget/types/all-page-layout-widget-configuration.type';
|
||||
import { GridPosition } from 'src/engine/metadata-modules/page-layout-widget/types/grid-position.type';
|
||||
import { validatePageLayoutWidgetGridPosition } from 'src/engine/metadata-modules/page-layout-widget/utils/validate-page-layout-widget-grid-position.util';
|
||||
import { validatePageLayoutWidgetVerticalListPosition } from 'src/engine/metadata-modules/page-layout-widget/utils/validate-page-layout-widget-vertical-list-position.util';
|
||||
@@ -107,7 +106,7 @@ export class FlatPageLayoutWidgetValidatorService {
|
||||
|
||||
const featureFlagErrors = this.validateFeatureFlags({
|
||||
type: updatedFlatPageLayoutWidget.type,
|
||||
configuration: updatedFlatPageLayoutWidget.configuration,
|
||||
configuration: updatedFlatPageLayoutWidget.universalConfiguration,
|
||||
widgetTitle: updatedFlatPageLayoutWidget.title,
|
||||
isDashboardV2Enabled,
|
||||
});
|
||||
@@ -239,7 +238,7 @@ export class FlatPageLayoutWidgetValidatorService {
|
||||
|
||||
const featureFlagErrors = this.validateFeatureFlags({
|
||||
type: flatPageLayoutWidgetToValidate.type,
|
||||
configuration: flatPageLayoutWidgetToValidate.configuration,
|
||||
configuration: flatPageLayoutWidgetToValidate.universalConfiguration,
|
||||
widgetTitle: flatPageLayoutWidgetToValidate.title,
|
||||
isDashboardV2Enabled,
|
||||
});
|
||||
@@ -290,7 +289,7 @@ export class FlatPageLayoutWidgetValidatorService {
|
||||
isDashboardV2Enabled,
|
||||
}: {
|
||||
type: WidgetType | undefined;
|
||||
configuration: AllPageLayoutWidgetConfiguration | null | undefined;
|
||||
configuration: { configurationType?: unknown } | null | undefined;
|
||||
widgetTitle: string;
|
||||
isDashboardV2Enabled: boolean;
|
||||
}): FlatEntityValidationError[] {
|
||||
@@ -302,7 +301,7 @@ export class FlatPageLayoutWidgetValidatorService {
|
||||
return [];
|
||||
}
|
||||
|
||||
const graphConfiguration = configuration as unknown as {
|
||||
const graphConfiguration = configuration as {
|
||||
configurationType?: GraphType;
|
||||
};
|
||||
|
||||
@@ -330,7 +329,7 @@ export class FlatPageLayoutWidgetValidatorService {
|
||||
widgetTitle,
|
||||
}: {
|
||||
position: PageLayoutWidgetPosition | null | undefined;
|
||||
pageLayoutTab: FlatPageLayoutTab | undefined;
|
||||
pageLayoutTab: UniversalFlatPageLayoutTab | undefined;
|
||||
widgetTitle: string;
|
||||
}): FlatEntityValidationError[] {
|
||||
if (!isDefined(position)) {
|
||||
|
||||
+16
-9
@@ -180,27 +180,34 @@ export class FlatRowLevelPermissionPredicateGroupValidatorService {
|
||||
...flatEntityUpdate,
|
||||
};
|
||||
|
||||
if (updatedPredicateGroup.roleId !== existingPredicateGroup.roleId) {
|
||||
const existingRoleId = existingPredicateGroup.roleId;
|
||||
const updatedRoleId = updatedPredicateGroup.roleId;
|
||||
if (
|
||||
updatedPredicateGroup.roleUniversalIdentifier !==
|
||||
existingPredicateGroup.roleUniversalIdentifier
|
||||
) {
|
||||
const existingRoleIdentifier =
|
||||
existingPredicateGroup.roleUniversalIdentifier;
|
||||
const updatedRoleIdentifier =
|
||||
updatedPredicateGroup.roleUniversalIdentifier;
|
||||
|
||||
validationResult.errors.push({
|
||||
code: RowLevelPermissionPredicateGroupExceptionCode.UNAUTHORIZED_ROLE_MODIFICATION,
|
||||
message: t`Cannot modify predicate group to change its role from ${existingRoleId} to ${updatedRoleId}`,
|
||||
message: t`Cannot modify predicate group to change its role from ${existingRoleIdentifier} to ${updatedRoleIdentifier}`,
|
||||
userFriendlyMessage: msg`Cannot modify predicate group to change its role`,
|
||||
});
|
||||
}
|
||||
|
||||
if (
|
||||
updatedPredicateGroup.objectMetadataId !==
|
||||
existingPredicateGroup.objectMetadataId
|
||||
updatedPredicateGroup.objectMetadataUniversalIdentifier !==
|
||||
existingPredicateGroup.objectMetadataUniversalIdentifier
|
||||
) {
|
||||
const existingObjectMetadataId = existingPredicateGroup.objectMetadataId;
|
||||
const updatedObjectMetadataId = updatedPredicateGroup.objectMetadataId;
|
||||
const existingObjectMetadataIdentifier =
|
||||
existingPredicateGroup.objectMetadataUniversalIdentifier;
|
||||
const updatedObjectMetadataIdentifier =
|
||||
updatedPredicateGroup.objectMetadataUniversalIdentifier;
|
||||
|
||||
validationResult.errors.push({
|
||||
code: RowLevelPermissionPredicateGroupExceptionCode.UNAUTHORIZED_OBJECT_MODIFICATION,
|
||||
message: t`Cannot modify predicate group to change its object from ${existingObjectMetadataId} to ${updatedObjectMetadataId}`,
|
||||
message: t`Cannot modify predicate group to change its object from ${existingObjectMetadataIdentifier} to ${updatedObjectMetadataIdentifier}`,
|
||||
userFriendlyMessage: msg`Cannot modify predicate group to change its object`,
|
||||
});
|
||||
}
|
||||
|
||||
+14
-8
@@ -196,26 +196,32 @@ export class FlatRowLevelPermissionPredicateValidatorService {
|
||||
...flatEntityUpdate,
|
||||
};
|
||||
|
||||
if (updatedPredicate.roleId !== existingPredicate.roleId) {
|
||||
const existingRoleId = existingPredicate.roleId;
|
||||
const updatedRoleId = updatedPredicate.roleId;
|
||||
if (
|
||||
updatedPredicate.roleUniversalIdentifier !==
|
||||
existingPredicate.roleUniversalIdentifier
|
||||
) {
|
||||
const existingRoleIdentifier = existingPredicate.roleUniversalIdentifier;
|
||||
const updatedRoleIdentifier = updatedPredicate.roleUniversalIdentifier;
|
||||
|
||||
validationResult.errors.push({
|
||||
code: RowLevelPermissionPredicateExceptionCode.UNAUTHORIZED_ROLE_MODIFICATION,
|
||||
message: t`Cannot modify predicate to change its role from ${existingRoleId} to ${updatedRoleId}`,
|
||||
message: t`Cannot modify predicate to change its role from ${existingRoleIdentifier} to ${updatedRoleIdentifier}`,
|
||||
userFriendlyMessage: msg`Cannot modify predicate to change its role`,
|
||||
});
|
||||
}
|
||||
|
||||
if (
|
||||
updatedPredicate.objectMetadataId !== existingPredicate.objectMetadataId
|
||||
updatedPredicate.objectMetadataUniversalIdentifier !==
|
||||
existingPredicate.objectMetadataUniversalIdentifier
|
||||
) {
|
||||
const existingObjectMetadataId = existingPredicate.objectMetadataId;
|
||||
const updatedObjectMetadataId = updatedPredicate.objectMetadataId;
|
||||
const existingObjectMetadataIdentifier =
|
||||
existingPredicate.objectMetadataUniversalIdentifier;
|
||||
const updatedObjectMetadataIdentifier =
|
||||
updatedPredicate.objectMetadataUniversalIdentifier;
|
||||
|
||||
validationResult.errors.push({
|
||||
code: RowLevelPermissionPredicateExceptionCode.UNAUTHORIZED_OBJECT_MODIFICATION,
|
||||
message: t`Cannot modify predicate to change its object from ${existingObjectMetadataId} to ${updatedObjectMetadataId}`,
|
||||
message: t`Cannot modify predicate to change its object from ${existingObjectMetadataIdentifier} to ${updatedObjectMetadataIdentifier}`,
|
||||
userFriendlyMessage: msg`Cannot modify predicate to change its object`,
|
||||
});
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
import { msg, t } from '@lingui/core/macro';
|
||||
|
||||
import { AgentExceptionCode } from 'src/engine/metadata-modules/ai/ai-agent/agent.exception';
|
||||
import { type FlatAgent } from 'src/engine/metadata-modules/flat-agent/types/flat-agent.type';
|
||||
import { type UniversalFlatAgent } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-agent.type';
|
||||
import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type';
|
||||
|
||||
export const validateAgentNameUniqueness = ({
|
||||
@@ -9,7 +9,7 @@ export const validateAgentNameUniqueness = ({
|
||||
existingFlatAgents,
|
||||
}: {
|
||||
name: string;
|
||||
existingFlatAgents: FlatAgent[];
|
||||
existingFlatAgents: UniversalFlatAgent[];
|
||||
}): FlatEntityValidationError<AgentExceptionCode>[] => {
|
||||
const errors: FlatEntityValidationError<AgentExceptionCode>[] = [];
|
||||
|
||||
|
||||
+3
-3
@@ -2,12 +2,12 @@ import { msg, t } from '@lingui/core/macro';
|
||||
import { isNonEmptyString } from '@sniptt/guards';
|
||||
|
||||
import { AgentExceptionCode } from 'src/engine/metadata-modules/ai/ai-agent/agent.exception';
|
||||
import { type FlatAgent } from 'src/engine/metadata-modules/flat-agent/types/flat-agent.type';
|
||||
import { type UniversalFlatAgent } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-agent.type';
|
||||
import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type';
|
||||
|
||||
type ValidateAgentRequiredPropertiesArgs = {
|
||||
flatAgent: FlatAgent;
|
||||
updatedProperties?: Partial<FlatAgent>;
|
||||
flatAgent: UniversalFlatAgent;
|
||||
updatedProperties?: Partial<UniversalFlatAgent>;
|
||||
};
|
||||
|
||||
export const validateAgentRequiredProperties = ({
|
||||
|
||||
+4
-4
@@ -1,14 +1,14 @@
|
||||
import { msg, t } from '@lingui/core/macro';
|
||||
import { isDefined } from 'class-validator';
|
||||
|
||||
import { type FlatRoleTarget } from 'src/engine/metadata-modules/flat-role-target/types/flat-role-target.type';
|
||||
import { type FlatRole } from 'src/engine/metadata-modules/flat-role/types/flat-role.type';
|
||||
import { RoleTargetExceptionCode } from 'src/engine/metadata-modules/role/exceptions/role-target.exception';
|
||||
import { type UniversalFlatRole } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-role.type';
|
||||
import { type UniversalFlatRoleTarget } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-role-target.type';
|
||||
import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type';
|
||||
|
||||
type ValidateFlatRoleTargetAssignationAvailabilityArgs = {
|
||||
flatRole: FlatRole;
|
||||
flatRoleTarget: FlatRoleTarget;
|
||||
flatRole: UniversalFlatRole;
|
||||
flatRoleTarget: UniversalFlatRoleTarget;
|
||||
};
|
||||
export const validateFlatRoleTargetAssignationAvailability = ({
|
||||
flatRole,
|
||||
|
||||
+2
-2
@@ -1,14 +1,14 @@
|
||||
import { msg, t } from '@lingui/core/macro';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type FlatRoleTarget } from 'src/engine/metadata-modules/flat-role-target/types/flat-role-target.type';
|
||||
import { RoleTargetExceptionCode } from 'src/engine/metadata-modules/role/exceptions/role-target.exception';
|
||||
import { type UniversalFlatRoleTarget } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-role-target.type';
|
||||
import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type';
|
||||
|
||||
export const validateFlatRoleTargetTargetsOnlyOneEntity = ({
|
||||
flatRoleTarget,
|
||||
}: {
|
||||
flatRoleTarget: FlatRoleTarget;
|
||||
flatRoleTarget: UniversalFlatRoleTarget;
|
||||
}) => {
|
||||
const errors: FlatEntityValidationError[] = [];
|
||||
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
import { msg } from '@lingui/core/macro';
|
||||
|
||||
import { type FlatRole } from 'src/engine/metadata-modules/flat-role/types/flat-role.type';
|
||||
import {
|
||||
PermissionsExceptionCode,
|
||||
PermissionsExceptionMessage,
|
||||
} from 'src/engine/metadata-modules/permissions/permissions.exception';
|
||||
import { type UniversalFlatRole } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-role.type';
|
||||
import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type';
|
||||
import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-builder-options.type';
|
||||
|
||||
@@ -12,7 +12,7 @@ export const validateRoleIsEditable = ({
|
||||
flatRole,
|
||||
buildOptions,
|
||||
}: {
|
||||
flatRole: FlatRole;
|
||||
flatRole: UniversalFlatRole;
|
||||
buildOptions: WorkspaceMigrationBuilderOptions;
|
||||
}): FlatEntityValidationError[] => {
|
||||
const errors: FlatEntityValidationError[] = [];
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
import { msg } from '@lingui/core/macro';
|
||||
|
||||
import { type FlatRole } from 'src/engine/metadata-modules/flat-role/types/flat-role.type';
|
||||
import {
|
||||
PermissionsExceptionCode,
|
||||
PermissionsExceptionMessage,
|
||||
} from 'src/engine/metadata-modules/permissions/permissions.exception';
|
||||
import { type UniversalFlatRole } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-role.type';
|
||||
import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type';
|
||||
|
||||
export const validateRoleLabelUniqueness = ({
|
||||
@@ -12,7 +12,7 @@ export const validateRoleLabelUniqueness = ({
|
||||
existingFlatRoles,
|
||||
}: {
|
||||
label: string;
|
||||
existingFlatRoles: FlatRole[];
|
||||
existingFlatRoles: UniversalFlatRole[];
|
||||
}): FlatEntityValidationError[] => {
|
||||
const errors: FlatEntityValidationError[] = [];
|
||||
|
||||
|
||||
+2
-2
@@ -1,16 +1,16 @@
|
||||
import { msg } from '@lingui/core/macro';
|
||||
|
||||
import { type FlatRole } from 'src/engine/metadata-modules/flat-role/types/flat-role.type';
|
||||
import {
|
||||
PermissionsExceptionCode,
|
||||
PermissionsExceptionMessage,
|
||||
} from 'src/engine/metadata-modules/permissions/permissions.exception';
|
||||
import { type UniversalFlatRole } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-role.type';
|
||||
import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type';
|
||||
|
||||
export const validateRoleReadWritePermissionsConsistency = ({
|
||||
flatRole,
|
||||
}: {
|
||||
flatRole: FlatRole;
|
||||
flatRole: UniversalFlatRole;
|
||||
}): FlatEntityValidationError[] => {
|
||||
const errors: FlatEntityValidationError[] = [];
|
||||
|
||||
|
||||
+2
-2
@@ -2,14 +2,14 @@ import { msg, t } from '@lingui/core/macro';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { FLAT_ROLE_REQUIRED_PROPERTIES } from 'src/engine/metadata-modules/flat-role/constants/flat-role-required-properties.constants';
|
||||
import { type FlatRole } from 'src/engine/metadata-modules/flat-role/types/flat-role.type';
|
||||
import { PermissionsExceptionCode } from 'src/engine/metadata-modules/permissions/permissions.exception';
|
||||
import { type UniversalFlatRole } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-role.type';
|
||||
import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type';
|
||||
|
||||
export const validateRoleRequiredPropertiesAreDefined = ({
|
||||
flatRole,
|
||||
}: {
|
||||
flatRole: FlatRole;
|
||||
flatRole: UniversalFlatRole;
|
||||
}): FlatEntityValidationError[] =>
|
||||
FLAT_ROLE_REQUIRED_PROPERTIES.flatMap<FlatEntityValidationError>(
|
||||
(property) => {
|
||||
|
||||
+20
-5
@@ -1,9 +1,14 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
import { AgentEntity } from 'src/engine/metadata-modules/ai/ai-agent/entities/agent.entity';
|
||||
import { FlatCreateAgentAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/agent/types/workspace-migration-agent-action-builder.service';
|
||||
import {
|
||||
FlatCreateAgentAction,
|
||||
UniversalCreateAgentAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/agent/types/workspace-migration-agent-action-builder.service';
|
||||
import {
|
||||
WorkspaceMigrationActionRunnerArgs,
|
||||
WorkspaceMigrationActionRunnerContext,
|
||||
@@ -18,10 +23,20 @@ export class CreateAgentActionHandlerService extends WorkspaceMigrationRunnerAct
|
||||
super();
|
||||
}
|
||||
|
||||
override async transpileUniversalActionToFlatAction(
|
||||
context: WorkspaceMigrationActionRunnerArgs<FlatCreateAgentAction>,
|
||||
): Promise<FlatCreateAgentAction> {
|
||||
return context.action;
|
||||
override async transpileUniversalActionToFlatAction({
|
||||
action,
|
||||
flatApplication,
|
||||
workspaceId,
|
||||
}: WorkspaceMigrationActionRunnerArgs<UniversalCreateAgentAction>): Promise<FlatCreateAgentAction> {
|
||||
return {
|
||||
...action,
|
||||
flatEntity: {
|
||||
...action.flatEntity,
|
||||
applicationId: flatApplication.id,
|
||||
id: action.id ?? v4(),
|
||||
workspaceId,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
async executeForMetadata(
|
||||
|
||||
+31
-5
@@ -1,9 +1,15 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
import { CommandMenuItemEntity } from 'src/engine/metadata-modules/command-menu-item/entities/command-menu-item.entity';
|
||||
import { FlatCreateCommandMenuItemAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/command-menu-item/types/workspace-migration-command-menu-item-action.type';
|
||||
import { resolveUniversalRelationIdentifiersToIds } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/utils/resolve-universal-relation-identifiers-to-ids.util';
|
||||
import {
|
||||
FlatCreateCommandMenuItemAction,
|
||||
UniversalCreateCommandMenuItemAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/command-menu-item/types/workspace-migration-command-menu-item-action.type';
|
||||
import {
|
||||
WorkspaceMigrationActionRunnerArgs,
|
||||
WorkspaceMigrationActionRunnerContext,
|
||||
@@ -18,10 +24,30 @@ export class CreateCommandMenuItemActionHandlerService extends WorkspaceMigratio
|
||||
super();
|
||||
}
|
||||
|
||||
override async transpileUniversalActionToFlatAction(
|
||||
context: WorkspaceMigrationActionRunnerArgs<FlatCreateCommandMenuItemAction>,
|
||||
): Promise<FlatCreateCommandMenuItemAction> {
|
||||
return context.action;
|
||||
override async transpileUniversalActionToFlatAction({
|
||||
action,
|
||||
allFlatEntityMaps,
|
||||
flatApplication,
|
||||
workspaceId,
|
||||
}: WorkspaceMigrationActionRunnerArgs<UniversalCreateCommandMenuItemAction>): Promise<FlatCreateCommandMenuItemAction> {
|
||||
const { availabilityObjectMetadataId, frontComponentId } =
|
||||
resolveUniversalRelationIdentifiersToIds({
|
||||
flatEntityMaps: allFlatEntityMaps,
|
||||
metadataName: action.metadataName,
|
||||
universalForeignKeyValues: action.flatEntity,
|
||||
});
|
||||
|
||||
return {
|
||||
...action,
|
||||
flatEntity: {
|
||||
...action.flatEntity,
|
||||
availabilityObjectMetadataId,
|
||||
frontComponentId,
|
||||
applicationId: flatApplication.id,
|
||||
id: action.id ?? v4(),
|
||||
workspaceId,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
async executeForMetadata(
|
||||
|
||||
+19
-5
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { FileFolder } from 'twenty-shared/types';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
@@ -11,7 +12,10 @@ import {
|
||||
FrontComponentException,
|
||||
FrontComponentExceptionCode,
|
||||
} from 'src/engine/metadata-modules/front-component/front-component.exception';
|
||||
import { FlatCreateFrontComponentAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/front-component/types/workspace-migration-front-component-action.type';
|
||||
import {
|
||||
FlatCreateFrontComponentAction,
|
||||
UniversalCreateFrontComponentAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/front-component/types/workspace-migration-front-component-action.type';
|
||||
import {
|
||||
WorkspaceMigrationActionRunnerArgs,
|
||||
WorkspaceMigrationActionRunnerContext,
|
||||
@@ -26,10 +30,20 @@ export class CreateFrontComponentActionHandlerService extends WorkspaceMigration
|
||||
super();
|
||||
}
|
||||
|
||||
override async transpileUniversalActionToFlatAction(
|
||||
context: WorkspaceMigrationActionRunnerArgs<FlatCreateFrontComponentAction>,
|
||||
): Promise<FlatCreateFrontComponentAction> {
|
||||
return context.action;
|
||||
override async transpileUniversalActionToFlatAction({
|
||||
action,
|
||||
flatApplication,
|
||||
workspaceId,
|
||||
}: WorkspaceMigrationActionRunnerArgs<UniversalCreateFrontComponentAction>): Promise<FlatCreateFrontComponentAction> {
|
||||
return {
|
||||
...action,
|
||||
flatEntity: {
|
||||
...action.flatEntity,
|
||||
applicationId: flatApplication.id,
|
||||
id: action.id ?? v4(),
|
||||
workspaceId,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
async executeForMetadata(
|
||||
|
||||
+19
-5
@@ -1,6 +1,7 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { FileFolder } from 'twenty-shared/types';
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
@@ -10,7 +11,10 @@ import {
|
||||
LogicFunctionException,
|
||||
LogicFunctionExceptionCode,
|
||||
} from 'src/engine/metadata-modules/logic-function/logic-function.exception';
|
||||
import { FlatCreateLogicFunctionAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/logic-function/types/workspace-migration-logic-function-action.type';
|
||||
import {
|
||||
FlatCreateLogicFunctionAction,
|
||||
UniversalCreateLogicFunctionAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/logic-function/types/workspace-migration-logic-function-action.type';
|
||||
import {
|
||||
WorkspaceMigrationActionRunnerArgs,
|
||||
WorkspaceMigrationActionRunnerContext,
|
||||
@@ -25,10 +29,20 @@ export class CreateLogicFunctionActionHandlerService extends WorkspaceMigrationR
|
||||
super();
|
||||
}
|
||||
|
||||
override async transpileUniversalActionToFlatAction(
|
||||
context: WorkspaceMigrationActionRunnerArgs<FlatCreateLogicFunctionAction>,
|
||||
): Promise<FlatCreateLogicFunctionAction> {
|
||||
return context.action;
|
||||
override async transpileUniversalActionToFlatAction({
|
||||
action,
|
||||
flatApplication,
|
||||
workspaceId,
|
||||
}: WorkspaceMigrationActionRunnerArgs<UniversalCreateLogicFunctionAction>): Promise<FlatCreateLogicFunctionAction> {
|
||||
return {
|
||||
...action,
|
||||
flatEntity: {
|
||||
...action.flatEntity,
|
||||
applicationId: flatApplication.id,
|
||||
id: action.id ?? v4(),
|
||||
workspaceId,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
async executeForMetadata(
|
||||
|
||||
+32
-5
@@ -1,9 +1,15 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
import { NavigationMenuItemEntity } from 'src/engine/metadata-modules/navigation-menu-item/entities/navigation-menu-item.entity';
|
||||
import { FlatCreateNavigationMenuItemAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/navigation-menu-item/types/workspace-migration-navigation-menu-item-action.type';
|
||||
import { resolveUniversalRelationIdentifiersToIds } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/utils/resolve-universal-relation-identifiers-to-ids.util';
|
||||
import {
|
||||
FlatCreateNavigationMenuItemAction,
|
||||
UniversalCreateNavigationMenuItemAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/navigation-menu-item/types/workspace-migration-navigation-menu-item-action.type';
|
||||
import {
|
||||
WorkspaceMigrationActionRunnerArgs,
|
||||
WorkspaceMigrationActionRunnerContext,
|
||||
@@ -18,10 +24,31 @@ export class CreateNavigationMenuItemActionHandlerService extends WorkspaceMigra
|
||||
super();
|
||||
}
|
||||
|
||||
override async transpileUniversalActionToFlatAction(
|
||||
context: WorkspaceMigrationActionRunnerArgs<FlatCreateNavigationMenuItemAction>,
|
||||
): Promise<FlatCreateNavigationMenuItemAction> {
|
||||
return context.action;
|
||||
override async transpileUniversalActionToFlatAction({
|
||||
action,
|
||||
allFlatEntityMaps,
|
||||
flatApplication,
|
||||
workspaceId,
|
||||
}: WorkspaceMigrationActionRunnerArgs<UniversalCreateNavigationMenuItemAction>): Promise<FlatCreateNavigationMenuItemAction> {
|
||||
const { targetObjectMetadataId, folderId, viewId } =
|
||||
resolveUniversalRelationIdentifiersToIds({
|
||||
flatEntityMaps: allFlatEntityMaps,
|
||||
metadataName: action.metadataName,
|
||||
universalForeignKeyValues: action.flatEntity,
|
||||
});
|
||||
|
||||
return {
|
||||
...action,
|
||||
flatEntity: {
|
||||
...action.flatEntity,
|
||||
targetObjectMetadataId,
|
||||
folderId,
|
||||
viewId,
|
||||
applicationId: flatApplication.id,
|
||||
id: action.id ?? v4(),
|
||||
workspaceId,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
async executeForMetadata(
|
||||
|
||||
+30
-5
@@ -1,9 +1,15 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout-tab/entities/page-layout-tab.entity';
|
||||
import { FlatCreatePageLayoutTabAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action.type';
|
||||
import { resolveUniversalRelationIdentifiersToIds } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/utils/resolve-universal-relation-identifiers-to-ids.util';
|
||||
import {
|
||||
FlatCreatePageLayoutTabAction,
|
||||
UniversalCreatePageLayoutTabAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action.type';
|
||||
import {
|
||||
WorkspaceMigrationActionRunnerArgs,
|
||||
WorkspaceMigrationActionRunnerContext,
|
||||
@@ -18,10 +24,29 @@ export class CreatePageLayoutTabActionHandlerService extends WorkspaceMigrationR
|
||||
super();
|
||||
}
|
||||
|
||||
override async transpileUniversalActionToFlatAction(
|
||||
context: WorkspaceMigrationActionRunnerArgs<FlatCreatePageLayoutTabAction>,
|
||||
): Promise<FlatCreatePageLayoutTabAction> {
|
||||
return context.action;
|
||||
override async transpileUniversalActionToFlatAction({
|
||||
action,
|
||||
allFlatEntityMaps,
|
||||
flatApplication,
|
||||
workspaceId,
|
||||
}: WorkspaceMigrationActionRunnerArgs<UniversalCreatePageLayoutTabAction>): Promise<FlatCreatePageLayoutTabAction> {
|
||||
const { pageLayoutId } = resolveUniversalRelationIdentifiersToIds({
|
||||
flatEntityMaps: allFlatEntityMaps,
|
||||
metadataName: action.metadataName,
|
||||
universalForeignKeyValues: action.flatEntity,
|
||||
});
|
||||
|
||||
return {
|
||||
...action,
|
||||
flatEntity: {
|
||||
...action.flatEntity,
|
||||
pageLayoutId,
|
||||
applicationId: flatApplication.id,
|
||||
id: action.id ?? v4(),
|
||||
workspaceId,
|
||||
widgetIds: [],
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
async executeForMetadata(
|
||||
|
||||
+39
-5
@@ -1,9 +1,16 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout-widget/entities/page-layout-widget.entity';
|
||||
import { FlatCreatePageLayoutWidgetAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action.type';
|
||||
import { resolveUniversalRelationIdentifiersToIds } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/utils/resolve-universal-relation-identifiers-to-ids.util';
|
||||
import {
|
||||
FlatCreatePageLayoutWidgetAction,
|
||||
UniversalCreatePageLayoutWidgetAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action.type';
|
||||
import { fromUniversalConfigurationToFlatPageLayoutWidgetConfiguration } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-widget/services/utils/from-universal-configuration-to-flat-page-layout-widget-configuration.util';
|
||||
import {
|
||||
WorkspaceMigrationActionRunnerArgs,
|
||||
WorkspaceMigrationActionRunnerContext,
|
||||
@@ -18,10 +25,37 @@ export class CreatePageLayoutWidgetActionHandlerService extends WorkspaceMigrati
|
||||
super();
|
||||
}
|
||||
|
||||
override async transpileUniversalActionToFlatAction(
|
||||
context: WorkspaceMigrationActionRunnerArgs<FlatCreatePageLayoutWidgetAction>,
|
||||
): Promise<FlatCreatePageLayoutWidgetAction> {
|
||||
return context.action;
|
||||
override async transpileUniversalActionToFlatAction({
|
||||
action,
|
||||
allFlatEntityMaps,
|
||||
flatApplication,
|
||||
workspaceId,
|
||||
}: WorkspaceMigrationActionRunnerArgs<UniversalCreatePageLayoutWidgetAction>): Promise<FlatCreatePageLayoutWidgetAction> {
|
||||
const { pageLayoutTabId, objectMetadataId } =
|
||||
resolveUniversalRelationIdentifiersToIds({
|
||||
flatEntityMaps: allFlatEntityMaps,
|
||||
metadataName: action.metadataName,
|
||||
universalForeignKeyValues: action.flatEntity,
|
||||
});
|
||||
|
||||
const configuration =
|
||||
fromUniversalConfigurationToFlatPageLayoutWidgetConfiguration({
|
||||
universalConfiguration: action.flatEntity.universalConfiguration,
|
||||
flatFieldMetadataMaps: allFlatEntityMaps.flatFieldMetadataMaps,
|
||||
});
|
||||
|
||||
return {
|
||||
...action,
|
||||
flatEntity: {
|
||||
...action.flatEntity,
|
||||
configuration,
|
||||
pageLayoutTabId,
|
||||
objectMetadataId,
|
||||
applicationId: flatApplication.id,
|
||||
id: action.id ?? v4(),
|
||||
workspaceId,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
async executeForMetadata(
|
||||
|
||||
+32
-5
@@ -1,9 +1,15 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity';
|
||||
import { FlatCreatePageLayoutAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout/types/workspace-migration-page-layout-action.type';
|
||||
import { resolveUniversalRelationIdentifiersToIds } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/utils/resolve-universal-relation-identifiers-to-ids.util';
|
||||
import {
|
||||
FlatCreatePageLayoutAction,
|
||||
UniversalCreatePageLayoutAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout/types/workspace-migration-page-layout-action.type';
|
||||
import {
|
||||
WorkspaceMigrationActionRunnerArgs,
|
||||
WorkspaceMigrationActionRunnerContext,
|
||||
@@ -18,10 +24,31 @@ export class CreatePageLayoutActionHandlerService extends WorkspaceMigrationRunn
|
||||
super();
|
||||
}
|
||||
|
||||
override async transpileUniversalActionToFlatAction(
|
||||
context: WorkspaceMigrationActionRunnerArgs<FlatCreatePageLayoutAction>,
|
||||
): Promise<FlatCreatePageLayoutAction> {
|
||||
return context.action;
|
||||
override async transpileUniversalActionToFlatAction({
|
||||
action,
|
||||
allFlatEntityMaps,
|
||||
flatApplication,
|
||||
workspaceId,
|
||||
}: WorkspaceMigrationActionRunnerArgs<UniversalCreatePageLayoutAction>): Promise<FlatCreatePageLayoutAction> {
|
||||
const { objectMetadataId, defaultTabToFocusOnMobileAndSidePanelId } =
|
||||
resolveUniversalRelationIdentifiersToIds({
|
||||
flatEntityMaps: allFlatEntityMaps,
|
||||
metadataName: action.metadataName,
|
||||
universalForeignKeyValues: action.flatEntity,
|
||||
});
|
||||
|
||||
return {
|
||||
...action,
|
||||
flatEntity: {
|
||||
...action.flatEntity,
|
||||
objectMetadataId,
|
||||
defaultTabToFocusOnMobileAndSidePanelId,
|
||||
applicationId: flatApplication.id,
|
||||
id: action.id ?? v4(),
|
||||
workspaceId,
|
||||
tabIds: [],
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
async executeForMetadata(
|
||||
|
||||
+29
-5
@@ -1,9 +1,15 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
import { RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-target.entity';
|
||||
import { FlatCreateRoleTargetAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role-target/types/workspace-migration-role-target-action.type';
|
||||
import { resolveUniversalRelationIdentifiersToIds } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/utils/resolve-universal-relation-identifiers-to-ids.util';
|
||||
import {
|
||||
FlatCreateRoleTargetAction,
|
||||
UniversalCreateRoleTargetAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role-target/types/workspace-migration-role-target-action.type';
|
||||
import {
|
||||
WorkspaceMigrationActionRunnerArgs,
|
||||
WorkspaceMigrationActionRunnerContext,
|
||||
@@ -14,10 +20,28 @@ export class CreateRoleTargetActionHandlerService extends WorkspaceMigrationRunn
|
||||
'create',
|
||||
'roleTarget',
|
||||
) {
|
||||
override async transpileUniversalActionToFlatAction(
|
||||
context: WorkspaceMigrationActionRunnerArgs<FlatCreateRoleTargetAction>,
|
||||
): Promise<FlatCreateRoleTargetAction> {
|
||||
return context.action;
|
||||
override async transpileUniversalActionToFlatAction({
|
||||
action,
|
||||
allFlatEntityMaps,
|
||||
flatApplication,
|
||||
workspaceId,
|
||||
}: WorkspaceMigrationActionRunnerArgs<UniversalCreateRoleTargetAction>): Promise<FlatCreateRoleTargetAction> {
|
||||
const { roleId } = resolveUniversalRelationIdentifiersToIds({
|
||||
flatEntityMaps: allFlatEntityMaps,
|
||||
metadataName: action.metadataName,
|
||||
universalForeignKeyValues: action.flatEntity,
|
||||
});
|
||||
|
||||
return {
|
||||
...action,
|
||||
flatEntity: {
|
||||
...action.flatEntity,
|
||||
roleId,
|
||||
applicationId: flatApplication.id,
|
||||
id: action.id ?? v4(),
|
||||
workspaceId,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
async executeForMetadata(
|
||||
|
||||
+26
-5
@@ -1,9 +1,14 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity';
|
||||
import { FlatCreateRoleAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role/types/workspace-migration-role-action.type';
|
||||
import {
|
||||
FlatCreateRoleAction,
|
||||
UniversalCreateRoleAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role/types/workspace-migration-role-action.type';
|
||||
import {
|
||||
WorkspaceMigrationActionRunnerArgs,
|
||||
WorkspaceMigrationActionRunnerContext,
|
||||
@@ -18,10 +23,26 @@ export class CreateRoleActionHandlerService extends WorkspaceMigrationRunnerActi
|
||||
super();
|
||||
}
|
||||
|
||||
override async transpileUniversalActionToFlatAction(
|
||||
context: WorkspaceMigrationActionRunnerArgs<FlatCreateRoleAction>,
|
||||
): Promise<FlatCreateRoleAction> {
|
||||
return context.action;
|
||||
override async transpileUniversalActionToFlatAction({
|
||||
action,
|
||||
flatApplication,
|
||||
workspaceId,
|
||||
}: WorkspaceMigrationActionRunnerArgs<UniversalCreateRoleAction>): Promise<FlatCreateRoleAction> {
|
||||
return {
|
||||
...action,
|
||||
flatEntity: {
|
||||
...action.flatEntity,
|
||||
applicationId: flatApplication.id,
|
||||
id: action.id ?? v4(),
|
||||
workspaceId,
|
||||
roleTargetIds: [],
|
||||
rowLevelPermissionPredicateIds: [],
|
||||
rowLevelPermissionPredicateGroupIds: [],
|
||||
objectPermissionIds: [],
|
||||
permissionFlagIds: [],
|
||||
fieldPermissionIds: [],
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
async executeForMetadata(
|
||||
|
||||
+37
-5
@@ -2,10 +2,16 @@
|
||||
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
import { RowLevelPermissionPredicateGroupEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate-group.entity';
|
||||
import { FlatCreateRowLevelPermissionPredicateGroupAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-action.type';
|
||||
import { resolveUniversalRelationIdentifiersToIds } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/utils/resolve-universal-relation-identifiers-to-ids.util';
|
||||
import {
|
||||
FlatCreateRowLevelPermissionPredicateGroupAction,
|
||||
UniversalCreateRowLevelPermissionPredicateGroupAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-action.type';
|
||||
import {
|
||||
WorkspaceMigrationActionRunnerArgs,
|
||||
WorkspaceMigrationActionRunnerContext,
|
||||
@@ -16,10 +22,36 @@ export class CreateRowLevelPermissionPredicateGroupActionHandlerService extends
|
||||
'create',
|
||||
'rowLevelPermissionPredicateGroup',
|
||||
) {
|
||||
override async transpileUniversalActionToFlatAction(
|
||||
context: WorkspaceMigrationActionRunnerArgs<FlatCreateRowLevelPermissionPredicateGroupAction>,
|
||||
): Promise<FlatCreateRowLevelPermissionPredicateGroupAction> {
|
||||
return context.action;
|
||||
override async transpileUniversalActionToFlatAction({
|
||||
action,
|
||||
allFlatEntityMaps,
|
||||
flatApplication,
|
||||
workspaceId,
|
||||
}: WorkspaceMigrationActionRunnerArgs<UniversalCreateRowLevelPermissionPredicateGroupAction>): Promise<FlatCreateRowLevelPermissionPredicateGroupAction> {
|
||||
const {
|
||||
objectMetadataId,
|
||||
roleId,
|
||||
parentRowLevelPermissionPredicateGroupId,
|
||||
} = resolveUniversalRelationIdentifiersToIds({
|
||||
flatEntityMaps: allFlatEntityMaps,
|
||||
metadataName: action.metadataName,
|
||||
universalForeignKeyValues: action.flatEntity,
|
||||
});
|
||||
|
||||
return {
|
||||
...action,
|
||||
flatEntity: {
|
||||
...action.flatEntity,
|
||||
objectMetadataId,
|
||||
roleId,
|
||||
parentRowLevelPermissionPredicateGroupId,
|
||||
applicationId: flatApplication.id,
|
||||
id: action.id ?? v4(),
|
||||
workspaceId,
|
||||
rowLevelPermissionPredicateIds: [],
|
||||
childRowLevelPermissionPredicateGroupIds: [],
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
async executeForMetadata(
|
||||
|
||||
+39
-5
@@ -2,10 +2,16 @@
|
||||
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
import { RowLevelPermissionPredicateEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate.entity';
|
||||
import { FlatCreateRowLevelPermissionPredicateAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-action.type';
|
||||
import { resolveUniversalRelationIdentifiersToIds } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/utils/resolve-universal-relation-identifiers-to-ids.util';
|
||||
import {
|
||||
FlatCreateRowLevelPermissionPredicateAction,
|
||||
UniversalCreateRowLevelPermissionPredicateAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-action.type';
|
||||
import {
|
||||
WorkspaceMigrationActionRunnerArgs,
|
||||
WorkspaceMigrationActionRunnerContext,
|
||||
@@ -16,10 +22,38 @@ export class CreateRowLevelPermissionPredicateActionHandlerService extends Works
|
||||
'create',
|
||||
'rowLevelPermissionPredicate',
|
||||
) {
|
||||
override async transpileUniversalActionToFlatAction(
|
||||
context: WorkspaceMigrationActionRunnerArgs<FlatCreateRowLevelPermissionPredicateAction>,
|
||||
): Promise<FlatCreateRowLevelPermissionPredicateAction> {
|
||||
return context.action;
|
||||
override async transpileUniversalActionToFlatAction({
|
||||
action,
|
||||
allFlatEntityMaps,
|
||||
flatApplication,
|
||||
workspaceId,
|
||||
}: WorkspaceMigrationActionRunnerArgs<UniversalCreateRowLevelPermissionPredicateAction>): Promise<FlatCreateRowLevelPermissionPredicateAction> {
|
||||
const {
|
||||
roleId,
|
||||
fieldMetadataId,
|
||||
workspaceMemberFieldMetadataId,
|
||||
objectMetadataId,
|
||||
rowLevelPermissionPredicateGroupId,
|
||||
} = resolveUniversalRelationIdentifiersToIds({
|
||||
flatEntityMaps: allFlatEntityMaps,
|
||||
metadataName: action.metadataName,
|
||||
universalForeignKeyValues: action.flatEntity,
|
||||
});
|
||||
|
||||
return {
|
||||
...action,
|
||||
flatEntity: {
|
||||
...action.flatEntity,
|
||||
roleId,
|
||||
fieldMetadataId,
|
||||
workspaceMemberFieldMetadataId,
|
||||
objectMetadataId,
|
||||
rowLevelPermissionPredicateGroupId,
|
||||
applicationId: flatApplication.id,
|
||||
id: action.id ?? v4(),
|
||||
workspaceId,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
async executeForMetadata(
|
||||
|
||||
+20
-5
@@ -1,9 +1,14 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
import { WebhookEntity } from 'src/engine/metadata-modules/webhook/entities/webhook.entity';
|
||||
import { FlatCreateWebhookAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/webhook/types/workspace-migration-webhook-action.type';
|
||||
import {
|
||||
FlatCreateWebhookAction,
|
||||
UniversalCreateWebhookAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/webhook/types/workspace-migration-webhook-action.type';
|
||||
import {
|
||||
WorkspaceMigrationActionRunnerArgs,
|
||||
WorkspaceMigrationActionRunnerContext,
|
||||
@@ -18,10 +23,20 @@ export class CreateWebhookActionHandlerService extends WorkspaceMigrationRunnerA
|
||||
super();
|
||||
}
|
||||
|
||||
override async transpileUniversalActionToFlatAction(
|
||||
context: WorkspaceMigrationActionRunnerArgs<FlatCreateWebhookAction>,
|
||||
): Promise<FlatCreateWebhookAction> {
|
||||
return context.action;
|
||||
override async transpileUniversalActionToFlatAction({
|
||||
action,
|
||||
flatApplication,
|
||||
workspaceId,
|
||||
}: WorkspaceMigrationActionRunnerArgs<UniversalCreateWebhookAction>): Promise<FlatCreateWebhookAction> {
|
||||
return {
|
||||
...action,
|
||||
flatEntity: {
|
||||
...action.flatEntity,
|
||||
applicationId: flatApplication.id,
|
||||
id: action.id ?? v4(),
|
||||
workspaceId,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
async executeForMetadata(
|
||||
|
||||
Reference in New Issue
Block a user