Merge branch 'main' into feat/graphql-relation-traversal-filters-frontend

This commit is contained in:
Félix Malfait
2026-05-14 16:11:47 +02:00
committed by GitHub
3 changed files with 43 additions and 2 deletions

View File

@@ -0,0 +1,37 @@
import { QueryRunner } from 'typeorm';
import { RegisteredInstanceCommand } from 'src/engine/core-modules/upgrade/decorators/registered-instance-command.decorator';
import { FastInstanceCommand } from 'src/engine/core-modules/upgrade/interfaces/fast-instance-command.interface';
// The `subFieldName` column is officially introduced in 2.5
// (see `2-5-instance-command-fast-1778502963794-add-sub-field-name-to-view-sort.ts`),
// but cross-version upgrades from pre-2.3 fail before they ever reach a 2.5
// instance command: the 2.3 `DropMessageDirectionFieldCommand` builds a
// migration that deletes a `fieldMetadata`, and the workspace-migration runner
// pulls in `flatViewSortMaps` via the metadata cascade graph (`viewSort` →
// `fieldMetadata` is a many-to-one, so `viewSort` is in `fieldMetadata`'s
// inverse one-to-many set). That recomputes
// `WorkspaceFlatViewSortMapCacheService`, which does a `viewSortRepository.find()`
// — TypeORM emits a SELECT that includes `subFieldName`, the column doesn't
// exist in DB yet, and the upgrade aborts.
//
// Adding the column here ensures it exists before any 2.3 workspace command
// can trigger that cascade. The 2.5 instance command is idempotent (uses
// `IF NOT EXISTS`), so cross-upgrade callers see it as a no-op while
// fresh-from-2.5 install paths still create the column there as before.
@RegisteredInstanceCommand('2.3.0', 1747234200000)
export class AddSubFieldNameToViewSortEarlyFastInstanceCommand
implements FastInstanceCommand
{
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "core"."viewSort" ADD COLUMN IF NOT EXISTS "subFieldName" character varying`,
);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "core"."viewSort" DROP COLUMN IF EXISTS "subFieldName"`,
);
}
}

View File

@@ -7,15 +7,17 @@ import { FastInstanceCommand } from 'src/engine/core-modules/upgrade/interfaces/
export class AddSubFieldNameToViewSortFastInstanceCommand
implements FastInstanceCommand
{
// Idempotent so it can coexist with the early 2.3 instance command
// `1747234200000-add-sub-field-name-to-view-sort` (see that file for context).
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "core"."viewSort" ADD "subFieldName" character varying`,
`ALTER TABLE "core"."viewSort" ADD COLUMN IF NOT EXISTS "subFieldName" character varying`,
);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "core"."viewSort" DROP COLUMN "subFieldName"`,
`ALTER TABLE "core"."viewSort" DROP COLUMN IF EXISTS "subFieldName"`,
);
}
}

View File

@@ -20,6 +20,7 @@ import { AddProviderExecutedToAgentMessagePartFastInstanceCommand } from 'src/da
import { BackfillPageLayoutWidgetPositionSlowInstanceCommand } from 'src/database/commands/upgrade-version-command/2-1/2-1-instance-command-slow-1795000002000-backfill-page-layout-widget-position';
import { AddCacheTokensToAgentChatThreadFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-2/2-2-instance-command-fast-1777455269302-add-cache-tokens-to-agent-chat-thread';
import { AddLogoToApplicationFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-2/2-2-instance-command-fast-1777539664664-add-logo-to-application';
import { AddSubFieldNameToViewSortEarlyFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-3/2-3-instance-command-fast-1747234200000-add-sub-field-name-to-view-sort';
import { AddUpgradeMigrationWorkspaceIdIndexFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-3/2-3-instance-command-fast-1777308014234-add-upgrade-migration-workspace-id-index';
import { AddDeletedAtToAgentChatThreadFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-3/2-3-instance-command-fast-1777682000000-add-deleted-at-to-agent-chat-thread';
import { ConnectionProviderSyncableEntityFastInstanceCommand } from 'src/database/commands/upgrade-version-command/2-3/2-3-instance-command-fast-1777896012579-connection-provider-syncable-entity';
@@ -59,6 +60,7 @@ export const INSTANCE_COMMANDS = [
AddGlobalObjectContextToCommandMenuItemAvailabilityTypeFastInstanceCommand,
AddPageLayoutIdToCommandMenuItemFastInstanceCommand,
AddConditionalAvailabilityExpressionToPageLayoutWidgetFastInstanceCommand,
AddSubFieldNameToViewSortEarlyFastInstanceCommand,
AddUpgradeMigrationWorkspaceIdIndexFastInstanceCommand,
AddIsPreInstalledToApplicationRegistrationFastInstanceCommand,
AddProviderExecutedToAgentMessagePartFastInstanceCommand,