- 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>
33 lines
980 B
TypeScript
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,
|
|
};
|
|
}
|
|
}
|