From bca84b588444510fb27a26ef78f2b39bac9d76d4 Mon Sep 17 00:00:00 2001 From: Charles Bochet Date: Thu, 29 Feb 2024 19:35:00 +0100 Subject: [PATCH] Fix enum defaultValue broken (#4251) * Fix enum defaultValue broken * Fix * Fix --- .../object-metadata/types/FieldMetadataItem.ts | 2 +- .../data-model/SettingsObjectFieldEdit.tsx | 2 +- .../field-metadata/field-metadata.service.ts | 4 ++++ .../factories/enum-column-action.factory.ts | 1 + .../services/workspace-migration-enum.service.ts | 15 ++++++++------- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/packages/twenty-front/src/modules/object-metadata/types/FieldMetadataItem.ts b/packages/twenty-front/src/modules/object-metadata/types/FieldMetadataItem.ts index 89406181415d..9cf5f15d3480 100644 --- a/packages/twenty-front/src/modules/object-metadata/types/FieldMetadataItem.ts +++ b/packages/twenty-front/src/modules/object-metadata/types/FieldMetadataItem.ts @@ -26,7 +26,7 @@ export type FieldMetadataItem = Omit< >; }) | null; - defaultValue?: unknown; + defaultValue?: any; options?: { color: ThemeColor; id: string; diff --git a/packages/twenty-front/src/pages/settings/data-model/SettingsObjectFieldEdit.tsx b/packages/twenty-front/src/pages/settings/data-model/SettingsObjectFieldEdit.tsx index 2090c3945f79..766bf5df47a2 100644 --- a/packages/twenty-front/src/pages/settings/data-model/SettingsObjectFieldEdit.tsx +++ b/packages/twenty-front/src/pages/settings/data-model/SettingsObjectFieldEdit.tsx @@ -105,7 +105,7 @@ export const SettingsObjectFieldEdit = () => { const selectOptions = activeMetadataField.options?.map((option) => ({ ...option, - isDefault: defaultValue === option.value, + isDefault: defaultValue?.value === option.value, })); selectOptions?.sort( (optionA, optionB) => optionA.position - optionB.position, diff --git a/packages/twenty-server/src/metadata/field-metadata/field-metadata.service.ts b/packages/twenty-server/src/metadata/field-metadata/field-metadata.service.ts index 9deefbd338ad..16b5d6d8e9ab 100644 --- a/packages/twenty-server/src/metadata/field-metadata/field-metadata.service.ts +++ b/packages/twenty-server/src/metadata/field-metadata/field-metadata.service.ts @@ -235,6 +235,10 @@ export class FieldMetadataService extends TypeOrmQueryService { diff --git a/packages/twenty-server/src/workspace/workspace-migration-runner/services/workspace-migration-enum.service.ts b/packages/twenty-server/src/workspace/workspace-migration-runner/services/workspace-migration-enum.service.ts index d2db1a083b1b..20f8be4bcb78 100644 --- a/packages/twenty-server/src/workspace/workspace-migration-runner/services/workspace-migration-enum.service.ts +++ b/packages/twenty-server/src/workspace/workspace-migration-runner/services/workspace-migration-enum.service.ts @@ -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}'`; - } }