246543912d
video QA https://github.com/user-attachments/assets/6391afdd-0714-4202-8db0-f67388fb7582 --------- Co-authored-by: Marie <51697796+ijreilly@users.noreply.github.com>
42 lines
1.2 KiB
TypeScript
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,
|
|
},
|
|
});
|