Files
twenty/packages/twenty-server/test/integration/graphql/utils/group-by-operation-factory.util.ts
T

42 lines
1.2 KiB
TypeScript

import gql from 'graphql-tag';
import { capitalize } from 'twenty-shared/utils';
type GroupByOperationFactoryParams = {
objectMetadataSingularName: string;
objectMetadataPluralName: string;
groupBy: object[];
filter?: object;
orderBy?: object[];
viewId?: string;
gqlFields?: string;
omitNullValues?: boolean;
};
export const groupByOperationFactory = ({
objectMetadataSingularName,
objectMetadataPluralName,
groupBy,
filter = {},
orderBy = [],
viewId,
gqlFields,
omitNullValues,
}: GroupByOperationFactoryParams) => ({
query: gql`
query ${capitalize(objectMetadataPluralName)}GroupBy($groupBy: [${capitalize(objectMetadataSingularName)}GroupByInput!]!, $filter: ${capitalize(objectMetadataSingularName)}FilterInput, $orderBy: [${capitalize(objectMetadataSingularName)}OrderByWithGroupByInput!], $viewId: UUID, $omitNullValues: Boolean) {
${objectMetadataPluralName}GroupBy(groupBy: $groupBy, filter: $filter, orderBy: $orderBy, viewId: $viewId, omitNullValues: $omitNullValues) {
${gqlFields ? gqlFields : ''}
groupByDimensionValues
totalCount
}
}
`,
variables: {
groupBy,
filter,
orderBy,
...(viewId && { viewId }),
omitNullValues: omitNullValues ?? null,
},
});