Implemented dataloader for relation metadata (#4891)

- Implemented dataloader package on metadata graphql server
- Implemented a dataloader for relation metadata module

---------

Co-authored-by: Jérémy M <jeremy.magrin@gmail.com>
This commit is contained in:
Lucas Bordeau
2024-04-09 17:09:02 +02:00
committed by GitHub
parent b724c5e610
commit ee5aaae796
8 changed files with 132 additions and 40 deletions

View File

@ -317,4 +317,43 @@ export class RelationMetadataService extends TypeOrmQueryService<RelationMetadat
return deletedRelationMetadata;
}
async findManyRelationMetadataByFieldMetadataIds(
fieldMetadataIds: string[],
): Promise<(RelationMetadataEntity | NotFoundException)[]> {
const relationMetadataCollection =
await this.relationMetadataRepository.find({
where: [
{
fromFieldMetadataId: In(fieldMetadataIds),
},
{
toFieldMetadataId: In(fieldMetadataIds),
},
],
relations: [
'fromObjectMetadata',
'toObjectMetadata',
'fromFieldMetadata',
'toFieldMetadata',
],
});
const mappedResult = fieldMetadataIds.map((fieldMetadataId) => {
const foundRelationMetadataItem = relationMetadataCollection.find(
(relationMetadataItem) =>
relationMetadataItem.fromFieldMetadataId === fieldMetadataId ||
relationMetadataItem.toFieldMetadataId === fieldMetadataId,
);
return (
foundRelationMetadataItem ??
new NotFoundException(
`RelationMetadata with fieldMetadataId ${fieldMetadataId} not found`,
)
);
});
return mappedResult;
}
}