From 7bcbaee0c87fdaae83a5923640d8e218c42885b1 Mon Sep 17 00:00:00 2001 From: Paul Rastoin <45004772+prastoin@users.noreply.github.com> Date: Tue, 9 Sep 2025 09:59:55 +0200 Subject: [PATCH] Fix get time on non date var (#14361) --- .../src/engine/dataloaders/dataloader.service.ts | 7 ++++++- .../utils/filter-morph-relation-duplicate-fields.util.ts | 5 ++++- .../src/utils/transpile-to-date-if-not.util.ts | 3 +++ 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 packages/twenty-server/src/utils/transpile-to-date-if-not.util.ts diff --git a/packages/twenty-server/src/engine/dataloaders/dataloader.service.ts b/packages/twenty-server/src/engine/dataloaders/dataloader.service.ts index cee30ba4e25..704ac075b63 100644 --- a/packages/twenty-server/src/engine/dataloaders/dataloader.service.ts +++ b/packages/twenty-server/src/engine/dataloaders/dataloader.service.ts @@ -25,6 +25,7 @@ import { type IndexMetadataDTO } from 'src/engine/metadata-modules/index-metadat import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { type ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps'; import { WorkspaceMetadataCacheService } from 'src/engine/metadata-modules/workspace-metadata-cache/services/workspace-metadata-cache.service'; +import { transpileToDateIfNot } from 'src/utils/transpile-to-date-if-not.util'; export type RelationMetadataLoaderPayload = { workspaceId: string; @@ -137,7 +138,11 @@ export class DataloaderService { flatFieldMetadata: sourceFlatFieldMetadata.flatRelationTargetFieldMetadata, flatObjectMetadataMaps: existingFlatObjectMetadataMaps, - }).sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime()); + }).sort( + (a, b) => + transpileToDateIfNot(a.createdAt).getTime() - + transpileToDateIfNot(b.createdAt).getTime(), + ); relationDtos.push( fromMorphOrRelationFlatFieldMetadataToRelationDto({ diff --git a/packages/twenty-server/src/engine/dataloaders/utils/filter-morph-relation-duplicate-fields.util.ts b/packages/twenty-server/src/engine/dataloaders/utils/filter-morph-relation-duplicate-fields.util.ts index b07275b4d6a..199091f6237 100644 --- a/packages/twenty-server/src/engine/dataloaders/utils/filter-morph-relation-duplicate-fields.util.ts +++ b/packages/twenty-server/src/engine/dataloaders/utils/filter-morph-relation-duplicate-fields.util.ts @@ -1,3 +1,5 @@ +import { transpileToDateIfNot } from 'src/utils/transpile-to-date-if-not.util'; + export const filterMorphRelationDuplicateFields = < T extends { createdAt: Date; morphId: string | null }, >( @@ -7,7 +9,8 @@ export const filterMorphRelationDuplicateFields = < return !fields.some( (otherField) => otherField.morphId === currentField.morphId && - otherField.createdAt.getTime() > currentField.createdAt.getTime(), + transpileToDateIfNot(otherField.createdAt).getTime() > + transpileToDateIfNot(currentField.createdAt).getTime(), ); }); }; diff --git a/packages/twenty-server/src/utils/transpile-to-date-if-not.util.ts b/packages/twenty-server/src/utils/transpile-to-date-if-not.util.ts new file mode 100644 index 00000000000..215204c20ac --- /dev/null +++ b/packages/twenty-server/src/utils/transpile-to-date-if-not.util.ts @@ -0,0 +1,3 @@ +// Temporary quick workaround until we eject from nestjs-query that seems to convert date to string and vice-versa +export const transpileToDateIfNot = (dateToVerify: string | Date): Date => + dateToVerify instanceof Date ? dateToVerify : new Date(dateToVerify);