diff --git a/packages/twenty-server/src/engine/api/__mocks__/object-metadata-item.mock.ts b/packages/twenty-server/src/engine/api/__mocks__/object-metadata-item.mock.ts index 8767507e5..f4722d2ca 100644 --- a/packages/twenty-server/src/engine/api/__mocks__/object-metadata-item.mock.ts +++ b/packages/twenty-server/src/engine/api/__mocks__/object-metadata-item.mock.ts @@ -75,7 +75,7 @@ const fieldMultiSelectMock = { ], }; -const fieldRelationMock = { +export const fieldRelationMock = { name: 'fieldRelation', type: FieldMetadataType.RELATION, fromRelationMetadata: { diff --git a/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/__tests__/compute-depth.utils.spec.ts b/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/__tests__/compute-depth.utils.spec.ts index cf68056a3..7a2f51f18 100644 --- a/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/__tests__/compute-depth.utils.spec.ts +++ b/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/__tests__/compute-depth.utils.spec.ts @@ -1,12 +1,14 @@ import { computeDepth } from 'src/engine/api/rest/core/query-builder/utils/compute-depth.utils'; describe('computeDepth', () => { - it('should compute depth from query', () => { - const request: any = { - query: { depth: '1' }, - }; + [0, 1, 2].forEach((depth) => { + it('should compute depth from query', () => { + const request: any = { + query: { depth: `${depth}` }, + }; - expect(computeDepth(request)).toEqual(1); + expect(computeDepth(request)).toEqual(depth); + }); }); it('should return default depth if missing', () => { @@ -19,7 +21,7 @@ describe('computeDepth', () => { expect(() => computeDepth(request)).toThrow(); - request.query.depth = '0'; + request.query.depth = '-1'; expect(() => computeDepth(request)).toThrow(); }); diff --git a/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/compute-depth.utils.ts b/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/compute-depth.utils.ts index 6fdee1b30..ecd5060cf 100644 --- a/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/compute-depth.utils.ts +++ b/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/compute-depth.utils.ts @@ -2,7 +2,7 @@ import { BadRequestException } from '@nestjs/common'; import { Request } from 'express'; -const ALLOWED_DEPTH_VALUES = [1, 2]; +const ALLOWED_DEPTH_VALUES = [0, 1, 2]; export const computeDepth = (request: Request): number | undefined => { if (!request.query.depth) { diff --git a/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/map-field-metadata-to-graphql-query.utils.ts b/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/map-field-metadata-to-graphql-query.utils.ts index c7112e0df..7fc970082 100644 --- a/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/map-field-metadata-to-graphql-query.utils.ts +++ b/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/map-field-metadata-to-graphql-query.utils.ts @@ -9,7 +9,7 @@ export const mapFieldMetadataToGraphqlQuery = ( field, maxDepthForRelations = DEFAULT_DEPTH_VALUE, ): string | undefined => { - if (maxDepthForRelations <= 0) { + if (maxDepthForRelations < 0) { return ''; } @@ -32,6 +32,7 @@ export const mapFieldMetadataToGraphqlQuery = ( if (fieldIsSimpleValue) { return field.name; } else if ( + maxDepthForRelations > 0 && fieldType === FieldMetadataType.RELATION && field.toRelationMetadata?.relationType === RelationMetadataType.ONE_TO_MANY ) { @@ -45,7 +46,6 @@ export const mapFieldMetadataToGraphqlQuery = ( { id ${(relationMetadataItem?.fields ?? []) - .filter((field) => field.type !== FieldMetadataType.RELATION) .map((field) => mapFieldMetadataToGraphqlQuery( objectMetadataItems, @@ -56,6 +56,7 @@ export const mapFieldMetadataToGraphqlQuery = ( .join('\n')} }`; } else if ( + maxDepthForRelations > 0 && fieldType === FieldMetadataType.RELATION && field.fromRelationMetadata?.relationType === RelationMetadataType.ONE_TO_MANY @@ -72,7 +73,6 @@ export const mapFieldMetadataToGraphqlQuery = ( node { id ${(relationMetadataItem?.fields ?? []) - .filter((field) => field.type !== FieldMetadataType.RELATION) .map((field) => mapFieldMetadataToGraphqlQuery( objectMetadataItems, diff --git a/packages/twenty-server/src/engine/core-modules/open-api/utils/__tests__/parameters.utils.spec.ts b/packages/twenty-server/src/engine/core-modules/open-api/utils/__tests__/parameters.utils.spec.ts index fd1cf3dde..f91da6a75 100644 --- a/packages/twenty-server/src/engine/core-modules/open-api/utils/__tests__/parameters.utils.spec.ts +++ b/packages/twenty-server/src/engine/core-modules/open-api/utils/__tests__/parameters.utils.spec.ts @@ -68,7 +68,7 @@ describe('computeParameters', () => { required: false, schema: { type: 'integer', - enum: [1, 2], + enum: [0, 1, 2], }, }); }); diff --git a/packages/twenty-server/src/engine/core-modules/open-api/utils/parameters.utils.ts b/packages/twenty-server/src/engine/core-modules/open-api/utils/parameters.utils.ts index de9644207..56034403a 100644 --- a/packages/twenty-server/src/engine/core-modules/open-api/utils/parameters.utils.ts +++ b/packages/twenty-server/src/engine/core-modules/open-api/utils/parameters.utils.ts @@ -59,7 +59,7 @@ export const computeDepthParameters = (): OpenAPIV3_1.ParameterObject => { required: false, schema: { type: 'integer', - enum: [1, 2], + enum: [0, 1, 2], }, }; };