UNPKG

@pallad/graphql-command-bus

Version:
39 lines (38 loc) 2.23 kB
import { Mapper } from './Mapper'; import { DataLoaderManager } from '@pallad/dataloader-manager'; import { ObjectTypeComposer } from 'graphql-compose'; import { ID } from '@pallad/id'; import { QueryHelper } from './QueryHelper'; import { Command } from 'alpha-command-bus-core'; import { Query } from '@pallad/query'; export declare class EntityHelper<TEntity, TContextOptions = any, TDataLoaderContext = any> { private entityType; private mapper; private dataLoaderManager; constructor(entityType: ObjectTypeComposer<TEntity, any>, mapper: Mapper, dataLoaderManager: DataLoaderManager); static defaultIdExtractor: EntityHelper.IDExtractor; static defaultResultExtractor: EntityHelper.ResultExtractor; createFindByIdResolver<TResult = any, TKey = ID>(options: EntityHelper.FindByIdResolverOptions<TResult, TKey, TContextOptions, TDataLoaderContext>): import("graphql-compose").Resolver<any, any, any, any>; getFindByIdResolver(): import("graphql-compose").Resolver<any, any, any, any>; createQueryResolver<TQuery extends Query<any>>(options: EntityHelper.QueryResolverOptions<any, TContextOptions>): import("graphql-compose").Resolver<any, any, any, any>; getQueryResolver(): import("graphql-compose").Resolver<any, any, any, any>; } export declare namespace EntityHelper { type IDExtractor<TResult = any, TKey = ID> = (result: TResult) => TKey; type ResultExtractor<TResult = any> = (result: any) => TResult[]; type FindByIdResolverOptions<TResult, TKey, TContextOptions, TDataLoaderContext> = { dataLoaderName?: string; commandFactory: (keys: TKey[], context: TDataLoaderContext) => Promise<Command> | Command; idExtractor?: IDExtractor<TResult, TKey>; resultHandler?: Mapper.ResultHandler<Mapper.ExecutionContext<TContextOptions, TDataLoaderContext>>; resultsExtractor?: ResultExtractor<TResult>; } & (TContextOptions extends undefined ? { context?: NonNullable<TContextOptions>; } : { context: TContextOptions; }); interface QueryResolverOptions<TQuery, TContext> extends QueryHelper.QueryOptions { commandFactory: (query: TQuery) => Promise<Command> | Command; context: TContext; } }