Fix nested relations with large dataset in find queries (#7127)

## Before
<img width="920" alt="before"
src="https://github.com/user-attachments/assets/4809556f-0459-4f56-a716-b969a943d492">

## After
<img width="920" alt="after"
src="https://github.com/user-attachments/assets/504186b2-d002-482d-bc3e-2dda45c314b1">
This commit is contained in:
Weiko
2024-09-18 20:06:04 +02:00
committed by GitHub
parent 1d56ace2af
commit 41fe8f7fea
4 changed files with 267 additions and 14 deletions

View File

@ -1,5 +1,6 @@
import { FieldMetadataInterface } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata.interface';
import { RelationMetadataEntity } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
import { ObjectMetadataMap } from 'src/engine/metadata-modules/utils/generate-object-metadata-map.util';
import {
deduceRelationDirection,
@ -10,14 +11,7 @@ export const getRelationObjectMetadata = (
fieldMetadata: FieldMetadataInterface,
objectMetadataMap: ObjectMetadataMap,
) => {
const relationMetadata =
fieldMetadata.fromRelationMetadata ?? fieldMetadata.toRelationMetadata;
if (!relationMetadata) {
throw new Error(
`Relation metadata not found for field ${fieldMetadata.name}`,
);
}
const relationMetadata = getRelationMetadata(fieldMetadata);
const relationDirection = deduceRelationDirection(
fieldMetadata,
@ -37,3 +31,18 @@ export const getRelationObjectMetadata = (
return referencedObjectMetadata;
};
export const getRelationMetadata = (
fieldMetadata: FieldMetadataInterface,
): RelationMetadataEntity => {
const relationMetadata =
fieldMetadata.fromRelationMetadata ?? fieldMetadata.toRelationMetadata;
if (!relationMetadata) {
throw new Error(
`Relation metadata not found for field ${fieldMetadata.name}`,
);
}
return relationMetadata;
};