feat: sync command missing ability to rename standard object (#4819)

We've introduced in PR #4373 standard ids to be able to rename standard
fields and objects.
Fields part was working properly, but objects part was not yet
implemented.
This PR is adding the missing parts to make it work.
This commit is contained in:
Jérémy M
2024-04-09 10:20:34 +02:00
committed by GitHub
parent b1242bb850
commit 35717fce8b
16 changed files with 322 additions and 148 deletions

View File

@ -18,6 +18,7 @@ import {
WorkspaceMigrationColumnCreateRelation,
WorkspaceMigrationColumnAlter,
WorkspaceMigrationColumnDropRelation,
WorkspaceMigrationTableActionType,
WorkspaceMigrationForeignTable,
} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity';
import { WorkspaceCacheVersionService } from 'src/engine/metadata-modules/workspace-cache-version/workspace-cache-version.service';
@ -118,18 +119,30 @@ export class WorkspaceMigrationRunnerService {
tableMigration: WorkspaceMigrationTableAction,
) {
switch (tableMigration.action) {
case 'create':
case WorkspaceMigrationTableActionType.CREATE:
await this.createTable(queryRunner, schemaName, tableMigration.name);
break;
case 'alter':
await this.handleColumnChanges(
queryRunner,
schemaName,
tableMigration.name,
tableMigration?.columns,
);
case WorkspaceMigrationTableActionType.ALTER: {
if (tableMigration.newName) {
await this.renameTable(
queryRunner,
schemaName,
tableMigration.name,
tableMigration.newName,
);
}
if (tableMigration.columns && tableMigration.columns.length > 0) {
await this.handleColumnChanges(
queryRunner,
schemaName,
tableMigration.newName ?? tableMigration.name,
tableMigration.columns,
);
}
break;
case 'drop':
}
case WorkspaceMigrationTableActionType.DROP:
await queryRunner.dropTable(`${schemaName}.${tableMigration.name}`);
break;
case 'create_foreign_table':
@ -179,6 +192,25 @@ export class WorkspaceMigrationRunnerService {
`);
}
/**
* Rename a table
* @param queryRunner QueryRunner
* @param schemaName string
* @param oldTableName string
* @param newTableName string
*/
private async renameTable(
queryRunner: QueryRunner,
schemaName: string,
oldTableName: string,
newTableName: string,
) {
await queryRunner.renameTable(
`${schemaName}.${oldTableName}`,
newTableName,
);
}
/**
* Handles column changes for a given migration
*