UNPKG

@cortexql/messaging

Version:

An extension for Messaging implementation on CortexQL based on Apollo GraphQL Subscription Redis Adapter

56 lines (37 loc) 1.03 kB
# CortexQL DataLoader This is a simple CortexQL wrapper for Facebook's DataLoader ## Usage In your `api` directory create the directory `loaders` ``` # api/loaders/UserLoader.ts import { DataLoader } from '@cortexql/dataloader'; import { User } from '../types/User'; export type Key = Pick<User, 'id'>; export class UserLoader extends DataLoader<Key, User> { // batch first batchLoad(keys: Key[]) { return Promise.all( keys.map(key => User.findOne(key)), ); } } ``` In your context file `api/context/index.ts` ``` import { BaseContext } from '@cortexql/core'; import { UserLoader } from '../loaders/UserLoader'; export class Context extends BaseContext { userLoader = new UserLoader(this); } ``` In whatever resolver `api/query/user.ts` ``` import { Context } from '../context'; import { User } from '../types/User'; export type Arguments { id: User['id']; } export async function resolveUser(args: Arguments, context: Context) { return await context.userLoader.load({ id: args.id }); } ```