From 7b98804ec16f5032da9d29f9f48539fb53c73919 Mon Sep 17 00:00:00 2001 From: Paul Rastoin <45004772+prastoin@users.noreply.github.com> Date: Tue, 9 Dec 2025 19:53:36 +0100 Subject: [PATCH] Fix flat field metadata date type (#16445) # Introduction Following https://github.com/twentyhq/twenty/pull/16420 --- ...ty-standard-workspace-migration.command.ts | 2 +- ...-typeorm-date-properties-to-string.type.ts | 9 +++++ .../flat-entity/types/flat-entity.type.ts | 19 +++------- .../__mocks__/get-flat-field-metadata.mock.ts | 7 ++-- ...elation-target-flat-field-metadata-mock.ts | 2 +- ...lat-field-metadatas-to-create.spec.ts.snap | 16 ++++----- .../types/flat-field-metadata.type.ts | 6 ++-- ...data-entity-to-flat-field-metadata.util.ts | 2 ++ ...d-metadata-from-create-field-input.util.ts | 2 +- .../validate-enum-flat-field-metadata.util.ts | 4 +-- ...-field-metadatas-for-custom-object.util.ts | 2 +- ...-field-metadatas-for-custom-object.util.ts | 4 +-- .../workspace-entity-manager.spec.ts | 4 +-- .../__tests__/workspace.repository.spec.ts | 4 +-- ...reate-standard-index-flat-metadata.util.ts | 8 ++--- ...eate-standard-object-flat-metadata.util.ts | 4 +-- ...plication-all-flat-entity-maps.constant.ts | 2 +- ...peorm-non-nullable-date-properties.type.ts | 5 --- ...d-typeorm-nullable-date-properties.type.ts | 9 ----- ...pdated-matrix-dispatcher.util.spec.ts.snap | 16 ++++----- ...ted-updated-matrix-dispatcher.util.spec.ts | 36 +++++++++---------- .../update-field-action-handler.service.ts | 2 +- 22 files changed, 75 insertions(+), 90 deletions(-) create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-entity/types/cast-record-typeorm-date-properties-to-string.type.ts delete mode 100644 packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/extract-record-typeorm-non-nullable-date-properties.type.ts delete mode 100644 packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/extract-record-typeorm-nullable-date-properties.type.ts diff --git a/packages/twenty-server/src/database/commands/compute-twenty-standard-workspace-migration.command.ts b/packages/twenty-server/src/database/commands/compute-twenty-standard-workspace-migration.command.ts index 8bf85c52c9..46127dea94 100644 --- a/packages/twenty-server/src/database/commands/compute-twenty-standard-workspace-migration.command.ts +++ b/packages/twenty-server/src/database/commands/compute-twenty-standard-workspace-migration.command.ts @@ -33,7 +33,7 @@ export class ComputeTwentyStandardWorkspaceMigrationCommand extends CommandRunne const twentyStandardApplicationId = '20202020-5adb-4091-81b7-d5be86a8bdd2'; const twentyStandardAllFlatEntityMaps = computeTwentyStandardApplicationAllFlatEntityMaps({ - now: new Date(), + now: new Date().toISOString(), workspaceId, twentyStandardApplicationId, }); diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/cast-record-typeorm-date-properties-to-string.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/cast-record-typeorm-date-properties-to-string.type.ts new file mode 100644 index 0000000000..2d191bfb19 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/cast-record-typeorm-date-properties-to-string.type.ts @@ -0,0 +1,9 @@ +export type CastRecordTypeOrmDatePropertiesToString = { + [P in keyof T as [T[P]] extends [never] + ? never + : [NonNullable] extends [never] + ? never + : NonNullable extends Date + ? P + : never]: null extends T[P] ? string | null : string; +}; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/flat-entity.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/flat-entity.type.ts index 1b6af2c843..c705d4f144 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/flat-entity.type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/flat-entity.type.ts @@ -1,7 +1,6 @@ import { type SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/interfaces/syncable-entity.interface'; -import { type ExtractRecordTypeOrmNonNullableDateProperties } from 'src/engine/workspace-manager/workspace-migration-v2/types/extract-record-typeorm-non-nullable-date-properties.type'; -import { type ExtractRecordTypeOrmNullableDateProperties } from 'src/engine/workspace-manager/workspace-migration-v2/types/extract-record-typeorm-nullable-date-properties.type'; +import { type CastRecordTypeOrmDatePropertiesToString } from 'src/engine/metadata-modules/flat-entity/types/cast-record-typeorm-date-properties-to-string.type'; import { type NonNullableProperties } from 'src/types/non-nullable-properties.type'; export type SyncableFlatEntity = NonNullableProperties< @@ -11,23 +10,13 @@ export type SyncableFlatEntity = NonNullableProperties< applicationId: string | null; }; -export type EntityNullableDateProperties = - ExtractRecordTypeOrmNullableDateProperties; - -export type EntityNonNullableDateProperties = - ExtractRecordTypeOrmNonNullableDateProperties; - export type FlatEntityFrom< TEntity, TEntityRelationProperties extends keyof TEntity, > = Omit< TEntity, | TEntityRelationProperties - | EntityNonNullableDateProperties - | EntityNullableDateProperties | 'application' -> & { - [P in EntityNonNullableDateProperties]: string; -} & { - [P in EntityNullableDateProperties]: string | null; -}; + | keyof CastRecordTypeOrmDatePropertiesToString +> & + CastRecordTypeOrmDatePropertiesToString; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock.ts index de203c6421..3236b8736c 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock.ts @@ -6,17 +6,14 @@ import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-m type FlatFieldMetadataOverrides< T extends FieldMetadataType = FieldMetadataType, > = Required< - Pick< - FlatFieldMetadata, - 'universalIdentifier' | 'objectMetadataId' | 'type' - > + Pick > & Partial>; export const getFlatFieldMetadataMock = ( overrides: FlatFieldMetadataOverrides, ): FlatFieldMetadata => { - const createdAt = '2024-01-01T00:00:00.000Z' as unknown as Date; + const createdAt = '2024-01-01T00:00:00.000Z'; return { calendarViewIds: [], diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock.ts index b2b28f74b0..89689f22ae 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__mocks__/get-morph-or-relation-target-flat-field-metadata-mock.ts @@ -29,7 +29,7 @@ export const getRelationTargetFlatFieldMetadataMock = ({ relationTargetObjectMetadataId, ...overrides }: GetMorphOrRelationFlatFieldMetadataMockArgs): FlatFieldMetadata => { - const createdAt = '2024-01-01T00:00:00.000Z' as unknown as Date; + const createdAt = '2024-01-01T00:00:00.000Z'; return { calendarViewIds: [], diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__tests__/__snapshots__/morph-relation-from-create-field-input-to-flat-field-metadatas-to-create.spec.ts.snap b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__tests__/__snapshots__/morph-relation-from-create-field-input-to-flat-field-metadatas-to-create.spec.ts.snap index cade8b6223..61015dc7f2 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__tests__/__snapshots__/morph-relation-from-create-field-input-to-flat-field-metadatas-to-create.spec.ts.snap +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/__tests__/__snapshots__/morph-relation-from-create-field-input-to-flat-field-metadatas-to-create.spec.ts.snap @@ -118,7 +118,7 @@ exports[`fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test su { "applicationId": Any, "calendarViewIds": [], - "createdAt": Any, + "createdAt": Any, "defaultValue": null, "description": "new field description", "icon": "IconRelationOneToMany", @@ -146,7 +146,7 @@ exports[`fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test su "standardOverrides": null, "type": "MORPH_RELATION", "universalIdentifier": Any, - "updatedAt": Any, + "updatedAt": Any, "viewFieldIds": [], "viewFilterIds": [], "workspaceId": Any, @@ -154,7 +154,7 @@ exports[`fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test su { "applicationId": Any, "calendarViewIds": [], - "createdAt": Any, + "createdAt": Any, "defaultValue": null, "description": null, "icon": "IconPet", @@ -184,7 +184,7 @@ exports[`fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test su "standardOverrides": null, "type": "RELATION", "universalIdentifier": Any, - "updatedAt": Any, + "updatedAt": Any, "viewFieldIds": [], "viewFilterIds": [], "workspaceId": Any, @@ -192,7 +192,7 @@ exports[`fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test su { "applicationId": Any, "calendarViewIds": [], - "createdAt": Any, + "createdAt": Any, "defaultValue": null, "description": "new field description", "icon": "IconRelationOneToMany", @@ -220,7 +220,7 @@ exports[`fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test su "standardOverrides": null, "type": "MORPH_RELATION", "universalIdentifier": Any, - "updatedAt": Any, + "updatedAt": Any, "viewFieldIds": [], "viewFilterIds": [], "workspaceId": Any, @@ -228,7 +228,7 @@ exports[`fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test su { "applicationId": Any, "calendarViewIds": [], - "createdAt": Any, + "createdAt": Any, "defaultValue": null, "description": null, "icon": "IconBuilding", @@ -258,7 +258,7 @@ exports[`fromCreateFieldInputToFlatFieldMetadatasToCreate MORPH_RELATION test su "standardOverrides": null, "type": "RELATION", "universalIdentifier": Any, - "updatedAt": Any, + "updatedAt": Any, "viewFieldIds": [], "viewFilterIds": [], "workspaceId": Any, diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type.ts index 5eb28f028a..fdfbca445d 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type.ts @@ -1,6 +1,7 @@ import { type FieldMetadataType } from 'twenty-shared/types'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; +import { type FlatEntityFrom } from 'src/engine/metadata-modules/flat-entity/types/flat-entity.type'; export const FIELD_METADATA_RELATION_PROPERTIES = [ 'relationTargetFieldMetadata', @@ -14,15 +15,16 @@ export const FIELD_METADATA_RELATION_PROPERTIES = [ 'kanbanAggregateOperationViews', 'calendarViews', 'mainGroupByFieldMetadataViews', + 'viewGroups', ] as const satisfies (keyof FieldMetadataEntity)[]; export type FieldMetadataEntityRelationProperties = (typeof FIELD_METADATA_RELATION_PROPERTIES)[number]; export type FlatFieldMetadata = - Omit< + FlatEntityFrom< FieldMetadataEntity, - FieldMetadataEntityRelationProperties | 'viewGroups' + FieldMetadataEntityRelationProperties > & { universalIdentifier: string; viewFieldIds: string[]; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-field-metadata-entity-to-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-field-metadata-entity-to-flat-field-metadata.util.ts index c1809a0216..4d84376118 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-field-metadata-entity-to-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/from-field-metadata-entity-to-flat-field-metadata.util.ts @@ -20,6 +20,8 @@ export const fromFieldMetadataEntityToFlatFieldMetadata = < return { ...fieldMetadataWithoutRelations, + createdAt: fieldMetadataWithoutRelations.createdAt.toISOString(), + updatedAt: fieldMetadataWithoutRelations.updatedAt.toISOString(), kanbanAggregateOperationViewIds: fieldMetadataEntity.kanbanAggregateOperationViews.map(({ id }) => id), calendarViewIds: fieldMetadataEntity.calendarViews.map(({ id }) => id), diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/get-default-flat-field-metadata-from-create-field-input.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/get-default-flat-field-metadata-from-create-field-input.util.ts index 9efca01632..2624085313 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/get-default-flat-field-metadata-from-create-field-input.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/get-default-flat-field-metadata-from-create-field-input.util.ts @@ -22,7 +22,7 @@ export const getDefaultFlatFieldMetadata = ({ ['defaultValue', 'settings'], ); - const createdAt = new Date(); + const createdAt = new Date().toISOString(); return { calendarViewIds: [], diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-enum-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-enum-flat-field-metadata.util.ts index e0782da2cb..31da76eb35 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-enum-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-enum-flat-field-metadata.util.ts @@ -197,8 +197,8 @@ const validateDuplicates = ( return errors; }; -const validateFieldMetadataInputOptions = ( - flatFieldMetadata: FlatFieldMetadata, +const validateFieldMetadataInputOptions = ( + flatFieldMetadata: FlatFieldMetadata, ): FlatFieldMetadataValidationError[] => { const { options } = flatFieldMetadata; diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/utils/build-default-flat-field-metadatas-for-custom-object.util.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/utils/build-default-flat-field-metadatas-for-custom-object.util.ts index a232819a9a..ea933ff82b 100644 --- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/utils/build-default-flat-field-metadatas-for-custom-object.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/utils/build-default-flat-field-metadatas-for-custom-object.util.ts @@ -22,7 +22,7 @@ export const buildDefaultFlatFieldMetadatasForCustomObject = ({ workspaceId, flatObjectMetadata: { id: objectMetadataId, applicationId }, }: BuildDefaultFlatFieldMetadataForCustomObjectArgs) => { - const createdAt = new Date(); + const createdAt = new Date().toISOString(); const idFieldId = v4(); const idField: FlatFieldMetadata = { type: FieldMetadataType.UUID, diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/utils/build-default-relation-flat-field-metadatas-for-custom-object.util.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/utils/build-default-relation-flat-field-metadatas-for-custom-object.util.ts index f5c950e4f9..5c3ee7e396 100644 --- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/utils/build-default-relation-flat-field-metadatas-for-custom-object.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/utils/build-default-relation-flat-field-metadatas-for-custom-object.util.ts @@ -51,7 +51,7 @@ const generateSourceFlatFieldMetadata = ({ ); } - const createdAt = new Date(); + const createdAt = new Date().toISOString(); const sourceFieldMetadataId = v4(); const targetFieldMetadataId = v4(); const icon = @@ -119,7 +119,7 @@ const generateTargetFlatFieldMetadata = ({ relationObjectMetadataNamePlural: targetFlatObjectMetadata.namePlural, targetObjectLabelSingular: sourceFlatObjectMetadata.labelSingular, }); - const createdAt = new Date(); + const createdAt = new Date().toISOString(); const standardId = createRelationDeterministicUuid({ objectId: sourceFlatObjectMetadata.id, standardId: customStandardFieldId, diff --git a/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.spec.ts b/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.spec.ts index a7d9b7f25c..79b9fa49f3 100644 --- a/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.spec.ts +++ b/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.spec.ts @@ -130,8 +130,8 @@ describe('WorkspaceEntityManager', () => { objectMetadataId: 'test-entity-id', isNullable: true, isLabelSyncedWithName: false, - createdAt: new Date(), - updatedAt: new Date(), + createdAt: new Date().toISOString(), + updatedAt: new Date().toISOString(), universalIdentifier: 'field-id', defaultValue: null, description: null, diff --git a/packages/twenty-server/src/engine/twenty-orm/repository/__tests__/workspace.repository.spec.ts b/packages/twenty-server/src/engine/twenty-orm/repository/__tests__/workspace.repository.spec.ts index db1ab3c7e2..bc29deba70 100644 --- a/packages/twenty-server/src/engine/twenty-orm/repository/__tests__/workspace.repository.spec.ts +++ b/packages/twenty-server/src/engine/twenty-orm/repository/__tests__/workspace.repository.spec.ts @@ -78,8 +78,8 @@ describe('WorkspaceRepository', () => { icon: 'IconKey', workspaceId: 'test-workspace-id', universalIdentifier: 'id-field-universal-id', - createdAt: new Date(), - updatedAt: new Date(), + createdAt: new Date().toISOString(), + updatedAt: new Date().toISOString(), defaultValue: null, options: null, settings: null, diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/index/create-standard-index-flat-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/index/create-standard-index-flat-metadata.util.ts index 95b2b2f4d2..693a3872e4 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/index/create-standard-index-flat-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/index/create-standard-index-flat-metadata.util.ts @@ -78,7 +78,7 @@ export const createStandardIndexFlatMetadata = < return generateFlatIndexMetadataWithNameOrThrow({ flatIndex: { - createdAt: now.toISOString(), + createdAt: now, applicationId: twentyStandardApplicationId, indexType, indexWhereClause, @@ -86,17 +86,17 @@ export const createStandardIndexFlatMetadata = < isUnique, objectMetadataId, universalIdentifier: indexDefinition.universalIdentifier, - updatedAt: now.toISOString(), + updatedAt: now, workspaceId, id: indexId, flatIndexFieldMetadatas: flatFieldMetadatas.map( ({ id: fieldMetadataId }, index) => ({ - createdAt: now.toISOString(), + createdAt: now, fieldMetadataId, id: v4(), indexMetadataId: indexId, order: index, - updatedAt: now.toISOString(), + updatedAt: now, }), ), }, diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/create-standard-object-flat-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/create-standard-object-flat-metadata.util.ts index 945d496778..8304bef00e 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/create-standard-object-flat-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/create-standard-object-flat-metadata.util.ts @@ -81,7 +81,7 @@ export const createStandardObjectFlatMetadata = < fieldMetadataIds: [], indexMetadataIds: [], viewIds: [], - createdAt: now.toISOString(), - updatedAt: now.toISOString(), + createdAt: now, + updatedAt: now, id: standardFieldMetadataIdByObjectAndFieldName[nameSingular].id, }); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/twenty-standard-application-all-flat-entity-maps.constant.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/twenty-standard-application-all-flat-entity-maps.constant.ts index 446b790788..76f213ed5d 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/twenty-standard-application-all-flat-entity-maps.constant.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/twenty-standard-application-all-flat-entity-maps.constant.ts @@ -6,7 +6,7 @@ import { buildStandardFlatIndexMetadataMaps } from 'src/engine/workspace-manager import { buildStandardFlatObjectMetadataMaps } from 'src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/build-standard-flat-object-metadata-maps.util'; export type ComputeTwentyStandardApplicationAllFlatEntityMapsArgs = { - now: Date; + now: string; workspaceId: string; twentyStandardApplicationId: string; }; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/extract-record-typeorm-non-nullable-date-properties.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/extract-record-typeorm-non-nullable-date-properties.type.ts deleted file mode 100644 index 962d8fd50b..0000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/extract-record-typeorm-non-nullable-date-properties.type.ts +++ /dev/null @@ -1,5 +0,0 @@ -export type ExtractRecordTypeOrmNonNullableDateProperties = NonNullable< - { - [P in keyof T]: null extends T[P] ? never : T[P] extends Date ? P : never; - }[keyof T] ->; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/extract-record-typeorm-nullable-date-properties.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/extract-record-typeorm-nullable-date-properties.type.ts deleted file mode 100644 index 8f1619f85e..0000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/extract-record-typeorm-nullable-date-properties.type.ts +++ /dev/null @@ -1,9 +0,0 @@ -export type ExtractRecordTypeOrmNullableDateProperties = NonNullable< - { - [P in keyof T]: null extends T[P] - ? NonNullable extends Date - ? P - : never - : never; - }[keyof T] ->; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/__snapshots__/flat-entity-deleted-created-updated-matrix-dispatcher.util.spec.ts.snap b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/__snapshots__/flat-entity-deleted-created-updated-matrix-dispatcher.util.spec.ts.snap index 02766a7f69..099138d751 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/__snapshots__/flat-entity-deleted-created-updated-matrix-dispatcher.util.spec.ts.snap +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/__snapshots__/flat-entity-deleted-created-updated-matrix-dispatcher.util.spec.ts.snap @@ -7,7 +7,7 @@ exports[`flatEntityDeletedCreatedUpdatedMatrixDispatcher It should detect a crea "field-id-1": { "applicationId": "application-id-1", "calendarViewIds": [], - "createdAt": 2024-01-01T00:00:00.000Z, + "createdAt": "2024-01-01T00:00:00.000Z", "defaultValue": null, "description": "default flat field metadata description", "icon": "icon", @@ -33,7 +33,7 @@ exports[`flatEntityDeletedCreatedUpdatedMatrixDispatcher It should detect a crea "standardOverrides": null, "type": "TEXT", "universalIdentifier": "universal-identifier-1", - "updatedAt": 2024-01-01T00:00:00.000Z, + "updatedAt": "2024-01-01T00:00:00.000Z", "viewFieldIds": [], "viewFilterIds": [], "workspaceId": "workspace-id-1", @@ -71,7 +71,7 @@ exports[`flatEntityDeletedCreatedUpdatedMatrixDispatcher It should detect a dele "field-id-1": { "applicationId": "application-id-1", "calendarViewIds": [], - "createdAt": 2024-01-01T00:00:00.000Z, + "createdAt": "2024-01-01T00:00:00.000Z", "defaultValue": null, "description": "default flat field metadata description", "icon": "icon", @@ -97,7 +97,7 @@ exports[`flatEntityDeletedCreatedUpdatedMatrixDispatcher It should detect a dele "standardOverrides": null, "type": "TEXT", "universalIdentifier": "universal-identifier-1", - "updatedAt": 2024-01-01T00:00:00.000Z, + "updatedAt": "2024-01-01T00:00:00.000Z", "viewFieldIds": [], "viewFilterIds": [], "workspaceId": "workspace-id-1", @@ -153,7 +153,7 @@ exports[`flatEntityDeletedCreatedUpdatedMatrixDispatcher It should detect create "field-id-3": { "applicationId": "application-id-1", "calendarViewIds": [], - "createdAt": 2024-01-01T00:00:00.000Z, + "createdAt": "2024-01-01T00:00:00.000Z", "defaultValue": null, "description": "default flat field metadata description", "icon": "icon", @@ -179,7 +179,7 @@ exports[`flatEntityDeletedCreatedUpdatedMatrixDispatcher It should detect create "standardOverrides": null, "type": "TEXT", "universalIdentifier": "universal-identifier-3", - "updatedAt": 2024-01-01T00:00:00.000Z, + "updatedAt": "2024-01-01T00:00:00.000Z", "viewFieldIds": [], "viewFilterIds": [], "workspaceId": "workspace-id-1", @@ -199,7 +199,7 @@ exports[`flatEntityDeletedCreatedUpdatedMatrixDispatcher It should detect create "field-id-2": { "applicationId": "application-id-1", "calendarViewIds": [], - "createdAt": 2024-01-01T00:00:00.000Z, + "createdAt": "2024-01-01T00:00:00.000Z", "defaultValue": null, "description": "default flat field metadata description", "icon": "icon", @@ -225,7 +225,7 @@ exports[`flatEntityDeletedCreatedUpdatedMatrixDispatcher It should detect create "standardOverrides": null, "type": "TEXT", "universalIdentifier": "universal-identifier-2", - "updatedAt": 2024-01-01T00:00:00.000Z, + "updatedAt": "2024-01-01T00:00:00.000Z", "viewFieldIds": [], "viewFilterIds": [], "workspaceId": "workspace-id-1", diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/flat-entity-deleted-created-updated-matrix-dispatcher.util.spec.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/flat-entity-deleted-created-updated-matrix-dispatcher.util.spec.ts index 7cb5abbb55..59b00ae303 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/flat-entity-deleted-created-updated-matrix-dispatcher.util.spec.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/flat-entity-deleted-created-updated-matrix-dispatcher.util.spec.ts @@ -28,8 +28,8 @@ describe('flatEntityDeletedCreatedUpdatedMatrixDispatcher', () => { id: 'field-id-1', workspaceId: 'workspace-id-1', applicationId: 'application-id-1', - createdAt: new Date('2024-01-01T00:00:00.000Z'), - updatedAt: new Date('2024-01-01T00:00:00.000Z'), + createdAt: '2024-01-01T00:00:00.000Z', + updatedAt: '2024-01-01T00:00:00.000Z', }), ], metadataName: 'fieldMetadata', @@ -50,8 +50,8 @@ describe('flatEntityDeletedCreatedUpdatedMatrixDispatcher', () => { id: 'field-id-1', workspaceId: 'workspace-id-1', applicationId: 'application-id-1', - createdAt: new Date('2024-01-01T00:00:00.000Z'), - updatedAt: new Date('2024-01-01T00:00:00.000Z'), + createdAt: '2024-01-01T00:00:00.000Z', + updatedAt: '2024-01-01T00:00:00.000Z', }), ], to: [], @@ -73,8 +73,8 @@ describe('flatEntityDeletedCreatedUpdatedMatrixDispatcher', () => { id: 'field-id-1', workspaceId: 'workspace-id-1', applicationId: 'application-id-1', - createdAt: new Date('2024-01-01T00:00:00.000Z'), - updatedAt: new Date('2024-01-01T00:00:00.000Z'), + createdAt: '2024-01-01T00:00:00.000Z', + updatedAt: '2024-01-01T00:00:00.000Z', isActive: false, }), ], @@ -86,8 +86,8 @@ describe('flatEntityDeletedCreatedUpdatedMatrixDispatcher', () => { id: 'field-id-1', workspaceId: 'workspace-id-1', applicationId: 'application-id-1', - createdAt: new Date('2024-01-01T00:00:00.000Z'), - updatedAt: new Date('2024-01-01T00:00:00.000Z'), + createdAt: '2024-01-01T00:00:00.000Z', + updatedAt: '2024-01-01T00:00:00.000Z', isActive: true, }), ], @@ -109,8 +109,8 @@ describe('flatEntityDeletedCreatedUpdatedMatrixDispatcher', () => { id: 'field-id-1', workspaceId: 'workspace-id-1', applicationId: 'application-id-1', - createdAt: new Date('2024-01-01T00:00:00.000Z'), - updatedAt: new Date('2024-01-01T00:00:00.000Z'), + createdAt: '2024-01-01T00:00:00.000Z', + updatedAt: '2024-01-01T00:00:00.000Z', isActive: true, }), getFlatFieldMetadataMock({ @@ -120,8 +120,8 @@ describe('flatEntityDeletedCreatedUpdatedMatrixDispatcher', () => { id: 'field-id-2', workspaceId: 'workspace-id-1', applicationId: 'application-id-1', - createdAt: new Date('2024-01-01T00:00:00.000Z'), - updatedAt: new Date('2024-01-01T00:00:00.000Z'), + createdAt: '2024-01-01T00:00:00.000Z', + updatedAt: '2024-01-01T00:00:00.000Z', }), ], to: [ @@ -132,8 +132,8 @@ describe('flatEntityDeletedCreatedUpdatedMatrixDispatcher', () => { id: 'field-id-1', workspaceId: 'workspace-id-1', applicationId: 'application-id-1', - createdAt: new Date('2024-01-01T00:00:00.000Z'), - updatedAt: new Date('2024-01-01T00:00:00.000Z'), + createdAt: '2024-01-01T00:00:00.000Z', + updatedAt: '2024-01-01T00:00:00.000Z', isActive: false, }), getFlatFieldMetadataMock({ @@ -143,8 +143,8 @@ describe('flatEntityDeletedCreatedUpdatedMatrixDispatcher', () => { id: 'field-id-3', workspaceId: 'workspace-id-1', applicationId: 'application-id-1', - createdAt: new Date('2024-01-01T00:00:00.000Z'), - updatedAt: new Date('2024-01-01T00:00:00.000Z'), + createdAt: '2024-01-01T00:00:00.000Z', + updatedAt: '2024-01-01T00:00:00.000Z', }), ], metadataName: 'fieldMetadata', @@ -166,8 +166,8 @@ describe('flatEntityDeletedCreatedUpdatedMatrixDispatcher', () => { id: 'field-id-1', workspaceId: 'workspace-id-1', applicationId: 'application-id-1', - createdAt: new Date('2024-01-01T00:00:00.000Z'), - updatedAt: new Date('2024-01-01T00:00:00.000Z'), + createdAt: '2024-01-01T00:00:00.000Z', + updatedAt: '2024-01-01T00:00:00.000Z', }), ], to: [], diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/field/services/update-field-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/field/services/update-field-action-handler.service.ts index d33fa9a2cc..e48b860764 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/field/services/update-field-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/field/services/update-field-action-handler.service.ts @@ -52,7 +52,7 @@ type UpdateFieldPropertyUpdateHandlerArgs< schemaName: string; tableName: string; flatFieldMetadata: FlatFieldMetadata; - update: PropertyUpdate, P>; + update: PropertyUpdate; }; @Injectable()