@pallad/graphql-command-bus
Version:
39 lines (38 loc) • 2.23 kB
TypeScript
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;
}
}