Fix enum defaultValue broken (#4251)

* Fix enum defaultValue broken

* Fix

* Fix
This commit is contained in:
Charles Bochet
2024-02-29 19:35:00 +01:00
committed by GitHub
parent 72ae6e44b3
commit ad4b3d0d59
5 changed files with 15 additions and 9 deletions

View File

@ -3,6 +3,7 @@ import { Injectable } from '@nestjs/common';
import { QueryRunner } from 'typeorm';
import { WorkspaceMigrationColumnAlter } from 'src/metadata/workspace-migration/workspace-migration.entity';
import { serializeDefaultValue } from 'src/metadata/field-metadata/utils/serialize-default-value';
@Injectable()
export class WorkspaceMigrationEnumService {
@ -25,7 +26,7 @@ export class WorkspaceMigrationEnumService {
}) ?? [];
if (!columnDefinition.isNullable && !columnDefinition.defaultValue) {
columnDefinition.defaultValue = columnDefinition.enum?.[0];
columnDefinition.defaultValue = serializeDefaultValue(enumValues[0]);
}
// Create new enum type with new values
@ -66,6 +67,7 @@ export class WorkspaceMigrationEnumService {
tableName,
columnDefinition.columnName,
newEnumTypeName,
columnDefinition.defaultValue,
);
// Drop old enum type
@ -138,7 +140,7 @@ export class WorkspaceMigrationEnumService {
.map((e) => `'${e}'`)
.join(', ')}]`;
} else {
defaultValue = this.getStringifyValue(columnDefinition.defaultValue);
defaultValue = columnDefinition.defaultValue;
}
}
@ -157,9 +159,12 @@ export class WorkspaceMigrationEnumService {
tableName: string,
columnName: string,
newEnumTypeName: string,
newDefaultValue: string,
) {
await queryRunner.query(
`ALTER TABLE "${schemaName}"."${tableName}" ALTER COLUMN "${columnName}" DROP DEFAULT, ALTER COLUMN "${columnName}" TYPE "${schemaName}"."${newEnumTypeName}" USING ("${columnName}"::text::"${schemaName}"."${newEnumTypeName}")`,
`ALTER TABLE "${schemaName}"."${tableName}" ALTER COLUMN "${columnName}" DROP DEFAULT,
ALTER COLUMN "${columnName}" TYPE "${schemaName}"."${newEnumTypeName}" USING ("${columnName}"::text::"${schemaName}"."${newEnumTypeName}"),
ALTER COLUMN "${columnName}" SET DEFAULT ${newDefaultValue}`,
);
}
@ -184,8 +189,4 @@ export class WorkspaceMigrationEnumService {
RENAME TO "${oldEnumTypeName}"
`);
}
private getStringifyValue(value: any) {
return `'${value}'`;
}
}