feat: CommandMenuItem entity and FrontComponent support in command menu (#17555)

https://github.com/user-attachments/assets/6f172ffc-d43d-42fd-a26b-94f591fb767e
This commit is contained in:
Abdul Rahman
2026-01-30 22:05:06 +05:30
committed by GitHub
parent 6462ff6c5f
commit 51a2a90b0a
45 changed files with 899 additions and 34 deletions
@@ -0,0 +1,55 @@
import { type MigrationInterface, type QueryRunner } from 'typeorm';
export class AddFrontComponentIdToCommandMenuItem1769654418252
implements MigrationInterface
{
name = 'AddFrontComponentIdToCommandMenuItem1769654418252';
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "core"."commandMenuItem" ADD "frontComponentId" uuid`,
);
await queryRunner.query(
`DROP INDEX "core"."IDX_COMMAND_MENU_ITEM_WORKFLOW_VERSION_ID_WORKSPACE_ID"`,
);
await queryRunner.query(
`ALTER TABLE "core"."commandMenuItem" ALTER COLUMN "workflowVersionId" DROP NOT NULL`,
);
await queryRunner.query(
`CREATE INDEX "IDX_COMMAND_MENU_ITEM_FRONT_COMPONENT_ID_WORKSPACE_ID" ON "core"."commandMenuItem" ("frontComponentId", "workspaceId") `,
);
await queryRunner.query(
`CREATE INDEX "IDX_COMMAND_MENU_ITEM_WORKFLOW_VERSION_ID_WORKSPACE_ID" ON "core"."commandMenuItem" ("workflowVersionId", "workspaceId") `,
);
await queryRunner.query(
`ALTER TABLE "core"."commandMenuItem" ADD CONSTRAINT "CHK_command_menu_item_workflow_or_front_component" CHECK (("workflowVersionId" IS NOT NULL AND "frontComponentId" IS NULL) OR ("workflowVersionId" IS NULL AND "frontComponentId" IS NOT NULL))`,
);
await queryRunner.query(
`ALTER TABLE "core"."commandMenuItem" ADD CONSTRAINT "FK_342086f37d44e726a359ed6fd7d" FOREIGN KEY ("frontComponentId") REFERENCES "core"."frontComponent"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "core"."commandMenuItem" DROP CONSTRAINT "FK_342086f37d44e726a359ed6fd7d"`,
);
await queryRunner.query(
`ALTER TABLE "core"."commandMenuItem" DROP CONSTRAINT "CHK_command_menu_item_workflow_or_front_component"`,
);
await queryRunner.query(
`DROP INDEX "core"."IDX_COMMAND_MENU_ITEM_WORKFLOW_VERSION_ID_WORKSPACE_ID"`,
);
await queryRunner.query(
`DROP INDEX "core"."IDX_COMMAND_MENU_ITEM_FRONT_COMPONENT_ID_WORKSPACE_ID"`,
);
await queryRunner.query(
`ALTER TABLE "core"."commandMenuItem" ALTER COLUMN "workflowVersionId" SET NOT NULL`,
);
await queryRunner.query(
`CREATE INDEX "IDX_COMMAND_MENU_ITEM_WORKFLOW_VERSION_ID_WORKSPACE_ID" ON "core"."commandMenuItem" ("workflowVersionId", "workspaceId")`,
);
await queryRunner.query(
`ALTER TABLE "core"."commandMenuItem" DROP COLUMN "frontComponentId"`,
);
}
}