fix: reflect on #10521 changes to order-by-input-factory.ts file (#10662)

# This PR

Fixes an error on the FindMany REST API
I was getting the following error:
```
{
  "statusCode": 400,
  "error": "TypeError",
  "messages": [
    "Cannot read properties of undefined (reading 'fields')"
  ]
}
```
Now, it's working as expected
Related to #10521

cc: @Weiko @ijreilly

---------

Co-authored-by: Weiko <corentin@twenty.com>
This commit is contained in:
P A C · 先生
2025-04-17 16:06:53 +02:00
committed by GitHub
parent 42e060ac74
commit f40aafb89f
4 changed files with 79 additions and 9 deletions

View File

@ -6,7 +6,7 @@ import {
fieldCurrencyMock,
fieldNumberMock,
fieldTextMock,
objectMetadataItemMock,
objectMetadataMapItemMock,
} from 'src/engine/api/__mocks__/object-metadata-item.mock';
import { FilterInputFactory } from 'src/engine/api/rest/input-factories/filter-input.factory';
import { FieldMetadataMap } from 'src/engine/metadata-modules/types/field-metadata-map';
@ -55,18 +55,18 @@ describe('FilterInputFactory', () => {
};
const objectMetadataMapItem = {
...objectMetadataItemMock,
...objectMetadataMapItemMock,
fieldsById,
fieldsByName,
};
const objectMetadataMaps = {
byId: {
[objectMetadataItemMock.id || 'mock-id']: objectMetadataMapItem,
[objectMetadataMapItemMock.id || 'mock-id']: objectMetadataMapItem,
},
idByNameSingular: {
[objectMetadataItemMock.nameSingular]:
objectMetadataItemMock.id || 'mock-id',
[objectMetadataMapItemMock.nameSingular]:
objectMetadataMapItemMock.id || 'mock-id',
},
};

View File

@ -2,11 +2,22 @@ import { Test, TestingModule } from '@nestjs/testing';
import { OrderByDirection } from 'src/engine/api/graphql/workspace-query-builder/interfaces/object-record.interface';
import { objectMetadataItemMock } from 'src/engine/api/__mocks__/object-metadata-item.mock';
import {
objectMetadataMapItemMock,
objectMetadataMapsMock,
} from 'src/engine/api/__mocks__/object-metadata-item.mock';
import { OrderByInputFactory } from 'src/engine/api/rest/input-factories/order-by-input.factory';
import { ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps';
import { ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps';
describe('OrderByInputFactory', () => {
const objectMetadata = { objectMetadataItem: objectMetadataItemMock };
const objectMetadata: {
objectMetadataMaps: ObjectMetadataMaps;
objectMetadataMapItem: ObjectMetadataItemWithFieldMaps;
} = {
objectMetadataMaps: objectMetadataMapsMock,
objectMetadataMapItem: objectMetadataMapItemMock,
};
let service: OrderByInputFactory;

View File

@ -8,12 +8,20 @@ import {
} from 'src/engine/api/graphql/workspace-query-builder/interfaces/object-record.interface';
import { checkArrayFields } from 'src/engine/api/rest/core/query-builder/utils/check-order-by.utils';
import { ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps';
import { ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps';
export const DEFAULT_ORDER_DIRECTION = OrderByDirection.AscNullsFirst;
@Injectable()
export class OrderByInputFactory {
create(request: Request, objectMetadata): ObjectRecordOrderBy {
create(
request: Request,
objectMetadata: {
objectMetadataMaps: ObjectMetadataMaps;
objectMetadataMapItem: ObjectMetadataItemWithFieldMaps;
},
): ObjectRecordOrderBy {
const orderByQuery = request.query.order_by;
if (typeof orderByQuery !== 'string') {
@ -72,7 +80,7 @@ export class OrderByInputFactory {
result = [...result, ...resultFields];
}
checkArrayFields(objectMetadata.objectMetadataItem, result);
checkArrayFields(objectMetadata.objectMetadataMapItem, result);
return result;
}