Fix/enum bug (#4659)

* fix: sever not throwing when enum contains two identical values

* fix: enum column name cannot be change

* fix: put field create/update inside transactions

* fix: check for options duplicate values front-end

* fix: missing commit transaction
This commit is contained in:
Jérémy M
2024-03-26 16:16:29 +01:00
committed by GitHub
parent ab028b8c22
commit 3acec7731c
5 changed files with 329 additions and 206 deletions

View File

@ -13,6 +13,20 @@ export class WorkspaceMigrationEnumService {
tableName: string,
migrationColumn: WorkspaceMigrationColumnAlter,
) {
// Rename column name
if (
migrationColumn.currentColumnDefinition.columnName !==
migrationColumn.alteredColumnDefinition.columnName
) {
await this.renameColumn(
queryRunner,
schemaName,
tableName,
migrationColumn.currentColumnDefinition.columnName,
migrationColumn.alteredColumnDefinition.columnName,
);
}
const columnDefinition = migrationColumn.alteredColumnDefinition;
const oldEnumTypeName = `${tableName}_${columnDefinition.columnName}_enum`;
const newEnumTypeName = `${tableName}_${columnDefinition.columnName}_enum_new`;
@ -82,6 +96,19 @@ export class WorkspaceMigrationEnumService {
);
}
private async renameColumn(
queryRunner: QueryRunner,
schemaName: string,
tableName: string,
oldColumnName: string,
newColumnName: string,
) {
await queryRunner.query(`
ALTER TABLE "${schemaName}"."${tableName}"
RENAME COLUMN "${oldColumnName}" TO "${newColumnName}"
`);
}
private async createNewEnumType(
name: string,
queryRunner: QueryRunner,