[groupBy] Fix order by nested date field (#16135)
Fixes https://github.com/twentyhq/core-team-issues/issues/1935
This commit is contained in:
+1
-1
@@ -1,4 +1,3 @@
|
||||
import { UserInputError } from 'apollo-server-core';
|
||||
import { isObject } from 'class-validator';
|
||||
import { type ObjectRecordOrderByForRelationField } from 'twenty-shared/types';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
@@ -8,6 +7,7 @@ import {
|
||||
type GroupByRelationField,
|
||||
} from 'src/engine/api/graphql/graphql-query-runner/group-by/resolvers/types/group-by-field.types';
|
||||
import { isGroupByRelationField } from 'src/engine/api/graphql/graphql-query-runner/group-by/resolvers/utils/is-group-by-relation-field.util';
|
||||
import { UserInputError } from 'src/engine/core-modules/graphql/utils/graphql-errors.util';
|
||||
import { type FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-maps.type';
|
||||
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { buildFieldMapsFromFlatObjectMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/build-field-maps-from-flat-object-metadata.util';
|
||||
|
||||
+1
-1
@@ -1,4 +1,3 @@
|
||||
import { UserInputError } from 'apollo-server-core';
|
||||
import { FieldMetadataType } from 'twenty-shared/types';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
@@ -11,6 +10,7 @@ import { type DateFieldGroupByDefinition } from 'src/engine/api/graphql/graphql-
|
||||
import { type GroupByField } from 'src/engine/api/graphql/graphql-query-runner/group-by/resolvers/types/group-by-field.types';
|
||||
import { isGroupByDateFieldDefinition } from 'src/engine/api/graphql/graphql-query-runner/group-by/resolvers/utils/is-group-by-date-field-definition.util';
|
||||
import { validateSingleKeyForGroupByOrThrow } from 'src/engine/api/graphql/graphql-query-runner/group-by/resolvers/utils/validate-single-key-for-group-by-or-throw.util';
|
||||
import { UserInputError } from 'src/engine/core-modules/graphql/utils/graphql-errors.util';
|
||||
import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util';
|
||||
import { type FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-maps.type';
|
||||
import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
|
||||
|
||||
+7
-6
@@ -30,12 +30,12 @@ export class ObjectMetadataOrderByBaseGenerator {
|
||||
public generateFields({
|
||||
fields,
|
||||
logger,
|
||||
orderByDateGranularity,
|
||||
isForGroupBy,
|
||||
context,
|
||||
}: {
|
||||
fields: FlatFieldMetadata[];
|
||||
logger: Logger;
|
||||
orderByDateGranularity?: boolean;
|
||||
isForGroupBy?: boolean;
|
||||
context?: SchemaGenerationContext;
|
||||
}): GraphQLInputFieldConfigMap {
|
||||
const allGeneratedFields: GraphQLInputFieldConfigMap = {};
|
||||
@@ -59,6 +59,7 @@ export class ObjectMetadataOrderByBaseGenerator {
|
||||
{
|
||||
fieldMetadata,
|
||||
typeOptions,
|
||||
isForGroupBy,
|
||||
context,
|
||||
},
|
||||
);
|
||||
@@ -72,7 +73,7 @@ export class ObjectMetadataOrderByBaseGenerator {
|
||||
generatedFields = this.generateAtomicFieldOrderByInputType({
|
||||
fieldMetadata,
|
||||
typeOptions,
|
||||
orderByDateGranularity,
|
||||
isForGroupBy,
|
||||
logger,
|
||||
});
|
||||
}
|
||||
@@ -117,15 +118,15 @@ export class ObjectMetadataOrderByBaseGenerator {
|
||||
fieldMetadata,
|
||||
typeOptions,
|
||||
logger,
|
||||
orderByDateGranularity,
|
||||
isForGroupBy,
|
||||
}: {
|
||||
fieldMetadata: FlatFieldMetadata;
|
||||
typeOptions: TypeOptions;
|
||||
logger: Logger;
|
||||
orderByDateGranularity?: boolean;
|
||||
isForGroupBy?: boolean;
|
||||
}) {
|
||||
if (
|
||||
orderByDateGranularity === true &&
|
||||
isForGroupBy === true &&
|
||||
(fieldMetadata.type === FieldMetadataType.DATE ||
|
||||
fieldMetadata.type === FieldMetadataType.DATE_TIME)
|
||||
) {
|
||||
|
||||
+1
-1
@@ -142,7 +142,7 @@ export class ObjectMetadataOrderByWithGroupByGqlInputTypeGenerator {
|
||||
return this.objectMetadataOrderByBaseGenerator.generateFields({
|
||||
fields,
|
||||
logger: this.logger,
|
||||
orderByDateGranularity: true,
|
||||
isForGroupBy: true,
|
||||
context,
|
||||
});
|
||||
}
|
||||
|
||||
+5
-1
@@ -118,12 +118,14 @@ export class RelationFieldMetadataGqlInputTypeGenerator {
|
||||
public generateSimpleRelationFieldOrderByInputType({
|
||||
fieldMetadata,
|
||||
typeOptions,
|
||||
isForGroupBy,
|
||||
context,
|
||||
}: {
|
||||
fieldMetadata: FlatFieldMetadata<
|
||||
FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION
|
||||
>;
|
||||
typeOptions: TypeOptions;
|
||||
isForGroupBy?: boolean;
|
||||
context?: SchemaGenerationContext;
|
||||
}) {
|
||||
if (fieldMetadata.settings?.relationType === RelationType.ONE_TO_MANY)
|
||||
@@ -168,7 +170,9 @@ export class RelationFieldMetadataGqlInputTypeGenerator {
|
||||
if (isDefined(targetObjectMetadata)) {
|
||||
const targetOrderByInputTypeKey = computeObjectMetadataInputTypeKey(
|
||||
targetObjectMetadata.nameSingular,
|
||||
GqlInputTypeDefinitionKind.OrderBy,
|
||||
isForGroupBy
|
||||
? GqlInputTypeDefinitionKind.OrderByWithGroupBy
|
||||
: GqlInputTypeDefinitionKind.OrderBy,
|
||||
);
|
||||
|
||||
const targetOrderByInputType = this.gqlTypesStorage.getGqlTypeByKey(
|
||||
|
||||
Reference in New Issue
Block a user