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);