226cc9eb74
video QA https://github.com/user-attachments/assets/70c37188-2398-43de-bbf6-5882bb79940a --------- Co-authored-by: Charles Bochet <charles@twenty.com>
36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import gql from 'graphql-tag';
|
|
|
|
import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
|
import { capitalize } from 'twenty-shared/utils';
|
|
import { getGroupByQueryName } from '../../../utils/getGroupByQueryName';
|
|
|
|
export const generateGroupByQuery = ({
|
|
objectMetadataItem,
|
|
aggregateOperations,
|
|
}: {
|
|
objectMetadataItem: ObjectMetadataItem;
|
|
aggregateOperations: string[];
|
|
}) => {
|
|
const capitalizedSingular = capitalize(objectMetadataItem.nameSingular);
|
|
const queryName = `${capitalize(objectMetadataItem.namePlural)}GroupBy`;
|
|
const queryFieldName = getGroupByQueryName(objectMetadataItem);
|
|
|
|
return gql`
|
|
query ${queryName}(
|
|
$groupBy: [${capitalizedSingular}GroupByInput!]
|
|
$filter: ${capitalizedSingular}FilterInput
|
|
$orderBy: [${capitalizedSingular}OrderByWithGroupByInput!]
|
|
$viewId: UUID
|
|
) {
|
|
${queryFieldName}(
|
|
groupBy: $groupBy
|
|
filter: $filter
|
|
orderBy: $orderBy
|
|
viewId: $viewId
|
|
) {
|
|
groupByDimensionValues${aggregateOperations.length > 0 ? `\n ${aggregateOperations.join('\n ')}` : ''}
|
|
}
|
|
}
|
|
`;
|
|
};
|