import { useObjectMetadataItemById } from '@/object-metadata/hooks/useObjectMetadataItemById'; import { computeRecordGqlOperationFilter, isDefined, } from 'twenty-shared/utils'; import { type BarChartConfiguration, type NumberChartConfiguration, } from '~/generated/graphql'; export const useGraphWidgetQueryCommon = ({ objectMetadataItemId, configuration, }: { objectMetadataItemId: string; configuration: BarChartConfiguration | NumberChartConfiguration; }) => { const { objectMetadataItem } = useObjectMetadataItemById({ objectId: objectMetadataItemId, }); const aggregateFieldId = configuration.aggregateFieldMetadataId; const aggregateField = objectMetadataItem.readableFields.find( (field) => field.id === aggregateFieldId, ); if (!isDefined(aggregateField)) { throw new Error('Aggregate field not found'); } const gqlOperationFilter = computeRecordGqlOperationFilter({ fields: objectMetadataItem.fields, filterValueDependencies: {}, recordFilters: configuration.filter?.recordFilters ?? [], recordFilterGroups: configuration.filter?.recordFilterGroups ?? [], }); return { objectMetadataItem, gqlOperationFilter, aggregateField, }; };