Refetch aggregate queries on record creation/update/deletion of record (#8885)
Closes #8755. Refetching the aggregate queries on an object following creation, update, deletion of a record.
This commit is contained in:
@ -35,7 +35,7 @@ describe('generateAggregateQuery', () => {
|
||||
const normalizedQuery = result.loc?.source.body.replace(/\s+/g, ' ').trim();
|
||||
|
||||
expect(normalizedQuery).toBe(
|
||||
'query AggregateManyCompanies($filter: CompanyFilterInput) { companies(filter: $filter) { id name createdAt } }',
|
||||
'query AggregateCompanies($filter: CompanyFilterInput) { companies(filter: $filter) { id name createdAt } }',
|
||||
);
|
||||
});
|
||||
|
||||
@ -69,7 +69,7 @@ describe('generateAggregateQuery', () => {
|
||||
const normalizedQuery = result.loc?.source.body.replace(/\s+/g, ' ').trim();
|
||||
|
||||
expect(normalizedQuery).toBe(
|
||||
'query AggregateManyPeople($filter: PersonFilterInput) { people(filter: $filter) { id } }',
|
||||
'query AggregatePeople($filter: PersonFilterInput) { people(filter: $filter) { id } }',
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@ -0,0 +1,23 @@
|
||||
import { getAggregateQueryName } from '@/object-record/utils/getAggregateQueryName';
|
||||
|
||||
describe('getAggregateQueryName', () => {
|
||||
it('should return the correct aggregate query name for a valid plural name', () => {
|
||||
expect(getAggregateQueryName('opportunities')).toBe(
|
||||
'AggregateOpportunities',
|
||||
);
|
||||
expect(getAggregateQueryName('companies')).toBe('AggregateCompanies');
|
||||
expect(getAggregateQueryName('people')).toBe('AggregatePeople');
|
||||
});
|
||||
|
||||
it('should throw an error when input is undefined', () => {
|
||||
expect(() => getAggregateQueryName(undefined as any)).toThrow(
|
||||
'objectMetadataNamePlural is required',
|
||||
);
|
||||
});
|
||||
|
||||
it('should throw an error when input is null', () => {
|
||||
expect(() => getAggregateQueryName(null as any)).toThrow(
|
||||
'objectMetadataNamePlural is required',
|
||||
);
|
||||
});
|
||||
});
|
||||
@ -2,6 +2,7 @@ import gql from 'graphql-tag';
|
||||
|
||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||
import { RecordGqlFields } from '@/object-record/graphql/types/RecordGqlFields';
|
||||
import { getAggregateQueryName } from '@/object-record/utils/getAggregateQueryName';
|
||||
import { capitalize } from '~/utils/string/capitalize';
|
||||
|
||||
export const generateAggregateQuery = ({
|
||||
@ -17,7 +18,7 @@ export const generateAggregateQuery = ({
|
||||
.join('\n ');
|
||||
|
||||
return gql`
|
||||
query AggregateMany${capitalize(objectMetadataItem.namePlural)}($filter: ${capitalize(
|
||||
query ${getAggregateQueryName(objectMetadataItem.namePlural)}($filter: ${capitalize(
|
||||
objectMetadataItem.nameSingular,
|
||||
)}FilterInput) {
|
||||
${objectMetadataItem.namePlural}(filter: $filter) {
|
||||
|
||||
@ -0,0 +1,11 @@
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
import { capitalize } from '~/utils/string/capitalize';
|
||||
|
||||
export const getAggregateQueryName = (
|
||||
objectMetadataNamePlural: string,
|
||||
): string => {
|
||||
if (!isDefined(objectMetadataNamePlural)) {
|
||||
throw new Error('objectMetadataNamePlural is required');
|
||||
}
|
||||
return `Aggregate${capitalize(objectMetadataNamePlural)}`;
|
||||
};
|
||||
Reference in New Issue
Block a user