From 585212b441caedad5dded67f126dc93ded1da708 Mon Sep 17 00:00:00 2001 From: Marie <51697796+ijreilly@users.noreply.github.com> Date: Wed, 15 Jan 2025 17:59:46 +0100 Subject: [PATCH] Aggregate queries - Fix empty / not empty operations on composite fields and array fields (#9644) as per title closes https://github.com/twentyhq/twenty/issues/9353 --- .../helpers/process-aggregate.helper.ts | 10 ++-------- .../constants/fieldMetadataTypesToTextColumnType.ts | 7 ------- .../get-subfields-for-aggregate-operation.util.ts | 2 +- 3 files changed, 3 insertions(+), 16 deletions(-) delete mode 100644 packages/twenty-server/src/engine/metadata-modules/workspace-migration/constants/fieldMetadataTypesToTextColumnType.ts diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/helpers/process-aggregate.helper.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/helpers/process-aggregate.helper.ts index 4b22f5d4d..c737ceb6a 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/helpers/process-aggregate.helper.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/helpers/process-aggregate.helper.ts @@ -2,7 +2,6 @@ import { SelectQueryBuilder } from 'typeorm'; import { AGGREGATE_OPERATIONS } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant'; import { AggregationField } from 'src/engine/api/graphql/workspace-schema-builder/utils/get-available-aggregations-from-object-fields.util'; -import { FIELD_METADATA_TYPES_TO_TEXT_COLUMN_TYPE } from 'src/engine/metadata-modules/workspace-migration/constants/fieldMetadataTypesToTextColumnType'; import { formatColumnNamesFromCompositeFieldAndSubfields } from 'src/engine/twenty-orm/utils/format-column-names-from-composite-field-and-subfield.util'; import { isDefined } from 'src/utils/is-defined'; @@ -50,14 +49,9 @@ export class ProcessAggregateHelper { const concatenatedColumns = columnNames .map((col) => `"${col}"`) - .join(", ' ', "); + .join(','); - const columnExpression = - FIELD_METADATA_TYPES_TO_TEXT_COLUMN_TYPE.includes( - aggregatedField.fromFieldType, - ) - ? `NULLIF(CONCAT(${concatenatedColumns}), '')` - : `CONCAT(${concatenatedColumns})`; + const columnExpression = `NULLIF(CONCAT(${concatenatedColumns}), '')`; switch (aggregatedField.aggregateOperation) { case AGGREGATE_OPERATIONS.countEmpty: diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/constants/fieldMetadataTypesToTextColumnType.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/constants/fieldMetadataTypesToTextColumnType.ts deleted file mode 100644 index 7a447a9b8..000000000 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/constants/fieldMetadataTypesToTextColumnType.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { FieldMetadataType } from 'twenty-shared'; - -export const FIELD_METADATA_TYPES_TO_TEXT_COLUMN_TYPE = [ - FieldMetadataType.TEXT, - FieldMetadataType.RICH_TEXT, - FieldMetadataType.ARRAY, -]; diff --git a/packages/twenty-server/src/engine/twenty-orm/utils/get-subfields-for-aggregate-operation.util.ts b/packages/twenty-server/src/engine/twenty-orm/utils/get-subfields-for-aggregate-operation.util.ts index a33a96afd..77bf69665 100644 --- a/packages/twenty-server/src/engine/twenty-orm/utils/get-subfields-for-aggregate-operation.util.ts +++ b/packages/twenty-server/src/engine/twenty-orm/utils/get-subfields-for-aggregate-operation.util.ts @@ -27,7 +27,7 @@ export const getSubfieldsForAggregateOperation = ( case FieldMetadataType.LINKS: return ['primaryLinkUrl']; case FieldMetadataType.ACTOR: - return ['workspaceMemberId']; + return ['workspaceMemberId', 'source']; case FieldMetadataType.EMAILS: return ['primaryEmail']; case FieldMetadataType.PHONES: