Files
twenty/packages/twenty-server/src/engine/dataloaders/dataloader.service.ts
Lucas Bordeau ee5aaae796 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>
2024-04-09 17:09:02 +02:00

33 lines
980 B
TypeScript

import { Injectable } from '@nestjs/common';
import DataLoader from 'dataloader';
import { IDataloaders } from 'src/engine/dataloaders/dataloader.interface';
import { RelationMetadataEntity } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
import { RelationMetadataService } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.service';
@Injectable()
export class DataloaderService {
constructor(
private readonly relationMetadataService: RelationMetadataService,
) {}
createLoaders(): IDataloaders {
const relationMetadataLoader = new DataLoader<
string,
RelationMetadataEntity
>(async (fieldMetadataIds: string[]) => {
const relationsMetadataCollection =
await this.relationMetadataService.findManyRelationMetadataByFieldMetadataIds(
fieldMetadataIds,
);
return relationsMetadataCollection;
});
return {
relationMetadataLoader,
};
}
}