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
This commit is contained in:
Marie
2025-01-15 17:59:46 +01:00
committed by GitHub
parent b5c5bee6cf
commit 585212b441
3 changed files with 3 additions and 16 deletions

View File

@ -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:

View File

@ -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,
];

View File

@ -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: