UNPKG

graphql-connections

Version:

Build and handle Relay-like GraphQL connections using a Knex query builder

41 lines (40 loc) 1.45 kB
import { QueryBuilder as Knex } from 'knex'; import { ICursorObj, IInAttributeMap, IInputArgs, QueryBuilderOptions, IQueryResultOptions, IQueryContextOptions } from './types'; /** * ConnectionManager * * A convenience class that helps orchestrate creation of the QueryContext, the building of the * connection query (QueryBuilder), and usage of the returned query to calculate the page info and * edges (QueryResult) * */ declare type KnexQueryResult = Array<{ [attributeName: string]: any; }>; export interface IConnectionManagerOptions<CursorObj, Node> { contextOptions?: IQueryContextOptions<CursorObj>; resultOptions?: IQueryResultOptions<CursorObj, Node>; builderOptions?: QueryBuilderOptions; } export default class ConnectionManager<Node = {}> { private queryContext; private queryBuilder?; private queryResult?; private inAttributeMap; private options; constructor(inputArgs: IInputArgs, inAttributeMap: IInAttributeMap, options?: IConnectionManagerOptions<ICursorObj<string>, Node>); createQuery(queryBuilder: Knex): Knex<any, any>; addResult(result: KnexQueryResult): this; get pageInfo(): { hasNextPage: boolean; hasPreviousPage: boolean; startCursor: string; endCursor: string; }; get edges(): { cursor: string; node: Node; }[]; private initializeQueryBuilder; } export {};