diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.service.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.service.ts index 8ea3b656d..ae56a6d3a 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.service.ts @@ -159,14 +159,7 @@ export class FieldMetadataService extends TypeOrmQueryService( - fieldMetadataInput.type, - fieldMetadataInput, - objectMetadata, - ); - - console.time('createOne save'); - const createdFieldMetadata = await fieldMetadataRepository.save({ + const fieldMetadataForCreate = { id: v4(), createdAt: new Date(), updatedAt: new Date(), @@ -187,7 +180,18 @@ export class FieldMetadataService extends TypeOrmQueryService( + fieldMetadataForCreate.type, + fieldMetadataForCreate, + objectMetadata, + ); + + console.time('createOne save'); + const createdFieldMetadata = await fieldMetadataRepository.save( + fieldMetadataForCreate, + ); console.timeEnd('createOne save'); @@ -394,12 +398,6 @@ export class FieldMetadataService extends TypeOrmQueryService( - existingFieldMetadata.type, - fieldMetadataInput, - objectMetadata, - ); - const updatableFieldInput = existingFieldMetadata.isCustom === false ? this.buildUpdatableStandardFieldInput( @@ -408,21 +406,21 @@ export class FieldMetadataService extends TypeOrmQueryService( + existingFieldMetadata.type, + fieldMetadataForUpdate, + objectMetadata, + ); + + // We're running field update under a transaction, so we can rollback if migration fails + await fieldMetadataRepository.update(id, fieldMetadataForUpdate); const updatedFieldMetadata = await fieldMetadataRepository.findOne({ where: { id }, @@ -710,9 +708,7 @@ export class FieldMetadataService extends TypeOrmQueryService( + private validateFieldMetadata( fieldMetadataType: FieldMetadataType, fieldMetadataInput: T, objectMetadata: ObjectMetadataEntity, @@ -746,7 +742,7 @@ export class FieldMetadataService extends TypeOrmQueryService