Add command menu item entity (#17181)

This commit is contained in:
Abdul Rahman
2026-01-17 00:32:07 +05:30
committed by GitHub
parent b7fbe1c49e
commit 5a617e4718
66 changed files with 2960 additions and 15 deletions
@@ -15,6 +15,7 @@ import {
} from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-orchestrator.type';
import { aggregateOrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report.util';
import { WorkspaceMigrationAgentActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/agent/workspace-migration-agent-actions-builder.service';
import { WorkspaceMigrationCommandMenuItemActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/command-menu-item/workspace-migration-command-menu-item-actions-builder.service';
import { WorkspaceMigrationCronTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/cron-trigger/workspace-migration-cron-trigger-action-builder.service';
import { WorkspaceMigrationDatabaseEventTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/database-event-trigger/workspace-migration-database-event-trigger-actions-builder.service';
import { WorkspaceMigrationFieldActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/workspace-migration-field-actions-builder.service';
@@ -56,6 +57,7 @@ export class WorkspaceMigrationBuildOrchestratorService {
private readonly workspaceMigrationRoleActionsBuilderService: WorkspaceMigrationRoleActionsBuilderService,
private readonly workspaceMigrationAgentActionsBuilderService: WorkspaceMigrationAgentActionsBuilderService,
private readonly workspaceMigrationSkillActionsBuilderService: WorkspaceMigrationSkillActionsBuilderService,
private readonly workspaceMigrationCommandMenuItemActionsBuilderService: WorkspaceMigrationCommandMenuItemActionsBuilderService,
private readonly workspaceMigrationPageLayoutActionsBuilderService: WorkspaceMigrationPageLayoutActionsBuilderService,
private readonly workspaceMigrationPageLayoutWidgetActionsBuilderService: WorkspaceMigrationPageLayoutWidgetActionsBuilderService,
private readonly workspaceMigrationPageLayoutTabActionsBuilderService: WorkspaceMigrationPageLayoutTabActionsBuilderService,
@@ -158,6 +160,7 @@ export class WorkspaceMigrationBuildOrchestratorService {
flatRoleTargetMaps,
flatAgentMaps,
flatSkillMaps,
flatCommandMenuItemMaps,
flatPageLayoutMaps,
flatPageLayoutWidgetMaps,
flatPageLayoutTabMaps,
@@ -817,6 +820,45 @@ export class WorkspaceMigrationBuildOrchestratorService {
}
}
if (isDefined(flatCommandMenuItemMaps)) {
const {
from: fromFlatCommandMenuItemMaps,
to: toFlatCommandMenuItemMaps,
} = flatCommandMenuItemMaps;
const commandMenuItemResult =
await this.workspaceMigrationCommandMenuItemActionsBuilderService.validateAndBuild(
{
additionalCacheDataMaps,
from: fromFlatCommandMenuItemMaps,
to: toFlatCommandMenuItemMaps,
buildOptions,
dependencyOptimisticFlatEntityMaps: {
flatObjectMetadataMaps:
optimisticAllFlatEntityMaps.flatObjectMetadataMaps,
},
workspaceId,
},
);
this.mergeFlatEntityMapsAndRelatedFlatEntityMapsInAllFlatEntityMapsThroughMutation(
{
allFlatEntityMaps: optimisticAllFlatEntityMaps,
flatEntityMapsAndRelatedFlatEntityMaps:
commandMenuItemResult.optimisticFlatEntityMapsAndRelatedFlatEntityMaps,
},
);
if (commandMenuItemResult.status === 'fail') {
orchestratorFailureReport.commandMenuItem.push(
...commandMenuItemResult.errors,
);
} else {
orchestratorActionsReport.commandMenuItem =
commandMenuItemResult.actions;
}
}
if (isDefined(flatPageLayoutMaps)) {
const { from: fromFlatPageLayoutMaps, to: toFlatPageLayoutMaps } =
flatPageLayoutMaps;
@@ -1070,6 +1112,12 @@ export class WorkspaceMigrationBuildOrchestratorService {
...aggregatedOrchestratorActionsReport.skill.update,
///
// Command Menu Items
...aggregatedOrchestratorActionsReport.commandMenuItem.delete,
...aggregatedOrchestratorActionsReport.commandMenuItem.create,
...aggregatedOrchestratorActionsReport.commandMenuItem.update,
///
// Page layouts
...aggregatedOrchestratorActionsReport.pageLayout.delete,
...aggregatedOrchestratorActionsReport.pageLayout.create,
@@ -0,0 +1,12 @@
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type';
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type';
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type';
export type CreateCommandMenuItemAction =
BaseCreateWorkspaceMigrationAction<'commandMenuItem'>;
export type UpdateCommandMenuItemAction =
BaseUpdateWorkspaceMigrationAction<'commandMenuItem'>;
export type DeleteCommandMenuItemAction =
BaseDeleteWorkspaceMigrationAction<'commandMenuItem'>;
@@ -0,0 +1,116 @@
import { Injectable } from '@nestjs/common';
import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
import { UpdateCommandMenuItemAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/command-menu-item/types/workspace-migration-command-menu-item-action.type';
import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service';
import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type';
import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type';
import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type';
import { FlatCommandMenuItemValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-command-menu-item-validator.service';
@Injectable()
export class WorkspaceMigrationCommandMenuItemActionsBuilderService extends WorkspaceEntityMigrationBuilderService<
typeof ALL_METADATA_NAME.commandMenuItem
> {
constructor(
private readonly flatCommandMenuItemValidatorService: FlatCommandMenuItemValidatorService,
) {
super(ALL_METADATA_NAME.commandMenuItem);
}
protected validateFlatEntityCreation(
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.commandMenuItem>,
): FlatEntityValidationReturnType<
typeof ALL_METADATA_NAME.commandMenuItem,
'create'
> {
const validationResult =
this.flatCommandMenuItemValidatorService.validateFlatCommandMenuItemCreation(
args,
);
if (validationResult.errors.length > 0) {
return {
status: 'fail',
...validationResult,
};
}
const { flatEntityToValidate: flatCommandMenuItemToValidate } = args;
return {
status: 'success',
action: {
type: 'create',
metadataName: 'commandMenuItem',
flatEntity: flatCommandMenuItemToValidate,
},
};
}
protected validateFlatEntityDeletion(
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.commandMenuItem>,
): FlatEntityValidationReturnType<
typeof ALL_METADATA_NAME.commandMenuItem,
'delete'
> {
const validationResult =
this.flatCommandMenuItemValidatorService.validateFlatCommandMenuItemDeletion(
args,
);
if (validationResult.errors.length > 0) {
return {
status: 'fail',
...validationResult,
};
}
const { flatEntityToValidate: flatCommandMenuItemToValidate } = args;
return {
status: 'success',
action: {
type: 'delete',
metadataName: 'commandMenuItem',
entityId: flatCommandMenuItemToValidate.id,
},
};
}
protected validateFlatEntityUpdate(
args: FlatEntityUpdateValidationArgs<
typeof ALL_METADATA_NAME.commandMenuItem
>,
): FlatEntityValidationReturnType<
typeof ALL_METADATA_NAME.commandMenuItem,
'update'
> {
const validationResult =
this.flatCommandMenuItemValidatorService.validateFlatCommandMenuItemUpdate(
args,
);
if (validationResult.errors.length > 0) {
return {
status: 'fail',
...validationResult,
};
}
const { flatEntityId, flatEntityUpdates } = args;
const updateCommandMenuItemAction: UpdateCommandMenuItemAction = {
type: 'update',
metadataName: 'commandMenuItem',
entityId: flatEntityId,
updates: flatEntityUpdates,
};
return {
status: 'success',
action: updateCommandMenuItemAction,
};
}
}
@@ -0,0 +1,124 @@
import { Injectable } from '@nestjs/common';
import { msg, t } from '@lingui/core/macro';
import { isNonEmptyString } from '@sniptt/guards';
import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
import { isDefined } from 'twenty-shared/utils';
import { CommandMenuItemExceptionCode } from 'src/engine/metadata-modules/command-menu-item/command-menu-item.exception';
import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration/utils/find-flat-entity-property-update.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';
import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type';
import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type';
@Injectable()
export class FlatCommandMenuItemValidatorService {
public validateFlatCommandMenuItemCreation({
flatEntityToValidate: flatCommandMenuItem,
}: FlatEntityValidationArgs<
typeof ALL_METADATA_NAME.commandMenuItem
>): FailedFlatEntityValidation<'commandMenuItem', 'create'> {
const validationResult = getEmptyFlatEntityValidationError({
flatEntityMinimalInformation: {
id: flatCommandMenuItem.id,
universalIdentifier: flatCommandMenuItem.universalIdentifier,
},
metadataName: 'commandMenuItem',
type: 'create',
});
if (!isNonEmptyString(flatCommandMenuItem.label)) {
validationResult.errors.push({
code: CommandMenuItemExceptionCode.INVALID_COMMAND_MENU_ITEM_INPUT,
message: t`Label is required`,
userFriendlyMessage: msg`Label is required`,
});
}
return validationResult;
}
public validateFlatCommandMenuItemDeletion({
flatEntityToValidate,
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
flatCommandMenuItemMaps: optimisticFlatCommandMenuItemMaps,
},
}: FlatEntityValidationArgs<
typeof ALL_METADATA_NAME.commandMenuItem
>): FailedFlatEntityValidation<'commandMenuItem', 'delete'> {
const validationResult = getEmptyFlatEntityValidationError({
flatEntityMinimalInformation: {
id: flatEntityToValidate.id,
universalIdentifier: flatEntityToValidate.universalIdentifier,
},
metadataName: 'commandMenuItem',
type: 'delete',
});
const existingCommandMenuItem = findFlatEntityByIdInFlatEntityMaps({
flatEntityId: flatEntityToValidate.id,
flatEntityMaps: optimisticFlatCommandMenuItemMaps,
});
if (!isDefined(existingCommandMenuItem)) {
validationResult.errors.push({
code: CommandMenuItemExceptionCode.COMMAND_MENU_ITEM_NOT_FOUND,
message: t`Command menu item not found`,
userFriendlyMessage: msg`Command menu item not found`,
});
}
return validationResult;
}
public validateFlatCommandMenuItemUpdate({
flatEntityId,
flatEntityUpdates,
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
flatCommandMenuItemMaps: optimisticFlatCommandMenuItemMaps,
},
}: FlatEntityUpdateValidationArgs<
typeof ALL_METADATA_NAME.commandMenuItem
>): FailedFlatEntityValidation<'commandMenuItem', 'update'> {
const fromFlatCommandMenuItem = findFlatEntityByIdInFlatEntityMaps({
flatEntityId,
flatEntityMaps: optimisticFlatCommandMenuItemMaps,
});
const validationResult = getEmptyFlatEntityValidationError({
flatEntityMinimalInformation: {
id: flatEntityId,
universalIdentifier: fromFlatCommandMenuItem?.universalIdentifier,
},
metadataName: 'commandMenuItem',
type: 'update',
});
if (!isDefined(fromFlatCommandMenuItem)) {
validationResult.errors.push({
code: CommandMenuItemExceptionCode.COMMAND_MENU_ITEM_NOT_FOUND,
message: t`Command menu item not found`,
userFriendlyMessage: msg`Command menu item not found`,
});
return validationResult;
}
const labelUpdate = findFlatEntityPropertyUpdate({
flatEntityUpdates,
property: 'label',
});
if (isDefined(labelUpdate) && !isNonEmptyString(labelUpdate.to)) {
validationResult.errors.push({
code: CommandMenuItemExceptionCode.INVALID_COMMAND_MENU_ITEM_INPUT,
message: t`Label is required`,
userFriendlyMessage: msg`Label is required`,
});
}
return validationResult;
}
}
@@ -18,6 +18,7 @@ import { FlatRouteTriggerValidatorService } from 'src/engine/workspace-manager/w
import { FlatRowLevelPermissionPredicateGroupValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-row-level-permission-predicate-group-validator.service';
import { FlatRowLevelPermissionPredicateValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-row-level-permission-predicate-validator.service';
import { FlatServerlessFunctionValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-serverless-function-validator.service';
import { FlatCommandMenuItemValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-command-menu-item-validator.service';
import { FlatSkillValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-skill-validator.service';
import { FlatFrontComponentValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-front-component-validator.service';
import { FlatViewFieldValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-field-validator.service';
@@ -47,6 +48,7 @@ import { FlatViewValidatorService } from 'src/engine/workspace-manager/workspace
FlatRoleTargetValidatorService,
FlatAgentValidatorService,
FlatSkillValidatorService,
FlatCommandMenuItemValidatorService,
FlatPageLayoutValidatorService,
FlatPageLayoutWidgetValidatorService,
FlatPageLayoutTabValidatorService,
@@ -72,6 +74,7 @@ import { FlatViewValidatorService } from 'src/engine/workspace-manager/workspace
FlatRoleTargetValidatorService,
FlatAgentValidatorService,
FlatSkillValidatorService,
FlatCommandMenuItemValidatorService,
FlatPageLayoutValidatorService,
FlatPageLayoutWidgetValidatorService,
FlatPageLayoutTabValidatorService,
@@ -3,6 +3,7 @@ import { Module } from '@nestjs/common';
import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module';
import { FlatFieldMetadataTypeValidatorService } from 'src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-type-validator.service';
import { WorkspaceMigrationAgentActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/agent/workspace-migration-agent-actions-builder.service';
import { WorkspaceMigrationCommandMenuItemActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/command-menu-item/workspace-migration-command-menu-item-actions-builder.service';
import { WorkspaceMigrationCronTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/cron-trigger/workspace-migration-cron-trigger-action-builder.service';
import { WorkspaceMigrationDatabaseEventTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/database-event-trigger/workspace-migration-database-event-trigger-actions-builder.service';
import { WorkspaceMigrationFieldActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/workspace-migration-field-actions-builder.service';
@@ -46,6 +47,7 @@ import { WorkspaceMigrationBuilderValidatorsModule } from 'src/engine/workspace-
WorkspaceMigrationRoleTargetActionsBuilderService,
WorkspaceMigrationAgentActionsBuilderService,
WorkspaceMigrationSkillActionsBuilderService,
WorkspaceMigrationCommandMenuItemActionsBuilderService,
WorkspaceMigrationPageLayoutActionsBuilderService,
WorkspaceMigrationPageLayoutWidgetActionsBuilderService,
WorkspaceMigrationPageLayoutTabActionsBuilderService,
@@ -70,6 +72,7 @@ import { WorkspaceMigrationBuilderValidatorsModule } from 'src/engine/workspace-
WorkspaceMigrationRoleTargetActionsBuilderService,
WorkspaceMigrationAgentActionsBuilderService,
WorkspaceMigrationSkillActionsBuilderService,
WorkspaceMigrationCommandMenuItemActionsBuilderService,
WorkspaceMigrationPageLayoutActionsBuilderService,
WorkspaceMigrationPageLayoutWidgetActionsBuilderService,
WorkspaceMigrationPageLayoutTabActionsBuilderService,
@@ -0,0 +1,40 @@
import { Injectable } from '@nestjs/common';
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 { CreateCommandMenuItemAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/command-menu-item/types/workspace-migration-command-menu-item-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@Injectable()
export class CreateCommandMenuItemActionHandlerService extends WorkspaceMigrationRunnerActionHandler(
'create',
'commandMenuItem',
) {
constructor() {
super();
}
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<CreateCommandMenuItemAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { flatEntity } = action;
const commandMenuItemRepository =
queryRunner.manager.getRepository<CommandMenuItemEntity>(
CommandMenuItemEntity,
);
await commandMenuItemRepository.insert({
...flatEntity,
workspaceId,
});
}
async executeForWorkspaceSchema(
_context: WorkspaceMigrationActionRunnerArgs<CreateCommandMenuItemAction>,
): Promise<void> {
return;
}
}
@@ -0,0 +1,37 @@
import { Injectable } from '@nestjs/common';
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 { DeleteCommandMenuItemAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/command-menu-item/types/workspace-migration-command-menu-item-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@Injectable()
export class DeleteCommandMenuItemActionHandlerService extends WorkspaceMigrationRunnerActionHandler(
'delete',
'commandMenuItem',
) {
constructor() {
super();
}
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<DeleteCommandMenuItemAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId } = action;
const commandMenuItemRepository =
queryRunner.manager.getRepository<CommandMenuItemEntity>(
CommandMenuItemEntity,
);
await commandMenuItemRepository.delete({ id: entityId, workspaceId });
}
async executeForWorkspaceSchema(
_context: WorkspaceMigrationActionRunnerArgs<DeleteCommandMenuItemAction>,
): Promise<void> {
return;
}
}
@@ -0,0 +1,39 @@
import { Injectable } from '@nestjs/common';
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 { UpdateCommandMenuItemAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/command-menu-item/types/workspace-migration-command-menu-item-action.type';
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity';
@Injectable()
export class UpdateCommandMenuItemActionHandlerService extends WorkspaceMigrationRunnerActionHandler(
'update',
'commandMenuItem',
) {
async executeForMetadata(
context: WorkspaceMigrationActionRunnerArgs<UpdateCommandMenuItemAction>,
): Promise<void> {
const { action, queryRunner, workspaceId } = context;
const { entityId, updates } = action;
const commandMenuItemRepository =
queryRunner.manager.getRepository<CommandMenuItemEntity>(
CommandMenuItemEntity,
);
await commandMenuItemRepository.update(
{ id: entityId, workspaceId },
fromFlatEntityPropertiesUpdatesToPartialFlatEntity({
updates,
}),
);
}
async executeForWorkspaceSchema(
_context: WorkspaceMigrationActionRunnerArgs<UpdateCommandMenuItemAction>,
): Promise<void> {
return;
}
}
@@ -4,6 +4,9 @@ import { WorkspaceSchemaManagerModule } from 'src/engine/twenty-orm/workspace-sc
import { CreateAgentActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/agent/services/create-agent-action-handler.service';
import { DeleteAgentActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/agent/services/delete-agent-action-handler.service';
import { UpdateAgentActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/agent/services/update-agent-action-handler.service';
import { CreateCommandMenuItemActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/command-menu-item/services/create-command-menu-item-action-handler.service';
import { DeleteCommandMenuItemActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/command-menu-item/services/delete-command-menu-item-action-handler.service';
import { UpdateCommandMenuItemActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/command-menu-item/services/update-command-menu-item-action-handler.service';
import { CreateCronTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/cron-trigger/services/create-cron-trigger-action-handler.service';
import { DeleteCronTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/cron-trigger/services/delete-cron-trigger-action-handler.service';
import { UpdateCronTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/cron-trigger/services/update-cron-trigger-action-handler.service';
@@ -135,6 +138,10 @@ import { UpdateViewActionHandlerService } from 'src/engine/workspace-manager/wor
UpdateSkillActionHandlerService,
DeleteSkillActionHandlerService,
CreateCommandMenuItemActionHandlerService,
UpdateCommandMenuItemActionHandlerService,
DeleteCommandMenuItemActionHandlerService,
CreatePageLayoutActionHandlerService,
UpdatePageLayoutActionHandlerService,
DeletePageLayoutActionHandlerService,
@@ -68,8 +68,9 @@ export const optimisticallyApplyCreateActionOnAllFlatEntityMaps = <
case 'skill':
case 'pageLayout':
case 'pageLayoutWidget':
case 'frontComponent':
case 'pageLayoutTab': {
case 'pageLayoutTab':
case 'commandMenuItem':
case 'frontComponent': {
addFlatEntityToFlatEntityAndRelatedEntityMapsThroughMutationOrThrow({
flatEntity: action.flatEntity,
flatEntityAndRelatedMapsToMutate: allFlatEntityMaps,
@@ -45,8 +45,9 @@ export const optimisticallyApplyDeleteActionOnAllFlatEntityMaps = <
case 'skill':
case 'pageLayout':
case 'pageLayoutWidget':
case 'frontComponent':
case 'pageLayoutTab': {
case 'pageLayoutTab':
case 'commandMenuItem':
case 'frontComponent': {
const flatEntityToDelete = findFlatEntityByIdInFlatEntityMapsOrThrow<
MetadataFlatEntity<typeof action.metadataName>
>({
@@ -68,6 +68,7 @@ export const optimisticallyApplyUpdateActionOnAllFlatEntityMaps = <
case 'pageLayout':
case 'pageLayoutWidget':
case 'pageLayoutTab':
case 'commandMenuItem':
case 'frontComponent': {
const flatEntityMapsKey = getMetadataFlatEntityMapsKey(
action.metadataName,