diff --git a/src/index.d.ts b/src/index.d.ts index 5c9cfccb..78bc8143 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -3,109 +3,125 @@ export type Maybe = null | undefined | T // Extend graphql objects and fields -declare module 'graphql/type/definition' { - type SqlJoin = ( - table1: string, - table2: string, +export type SqlJoin = ( + table1: string, + table2: string, + args: TArgs, + context: TContext, + sqlASTNode: any +) => string +export type Where = ( + usersTable: string, + args: TArgs, + context: TContext, + sqlASTNode: any +) => string | void +export type Order = 'ASC' | 'asc' | 'DESC' | 'desc' +export type OrderBy = string | { [key: string]: Order } +export type ThunkWithArgsCtx = + | ((args: TArgs, context: TContext) => T) + | T + +export interface ObjectTypeExtension { + alwaysFetch?: string + sqlTable?: ThunkWithArgsCtx + uniqueKey?: string | string[] +} + +export interface FieldConfigExtension { + ignoreAll?: boolean + ignoreTable?: boolean + junction?: { + include?: ThunkWithArgsCtx< + { + sqlColumn?: string + sqlExpr?: string + sqlDeps?: string | string[] + }, + TContext, + TArgs + > + orderBy?: ThunkWithArgsCtx + sortKey?: ThunkWithArgsCtx< + { + order: Order + key: string | string[] + }, + TContext, + TArgs + > + sqlBatch?: { + thisKey: string + parentKey: string + sqlJoin: SqlJoin + } + sqlJoins?: [SqlJoin, SqlJoin] + sqlTable: ThunkWithArgsCtx + uniqueKey?: string | string[] + where?: Where + } + limit?: ThunkWithArgsCtx + orderBy?: ThunkWithArgsCtx + sortKey?: ThunkWithArgsCtx< + { + order: Order + key: string | string[] + }, + TContext, + TArgs + > + sqlBatch?: { + thisKey: string + parentKey: string + } + sqlColumn?: string + sqlDeps?: string[] + sqlExpr?: ( + table: string, args: TArgs, context: TContext, sqlASTNode: any ) => string - type Where = ( - usersTable: string, - args: TArgs, - context: TContext, - sqlASTNode: any - ) => string | void - type Order = 'ASC' | 'asc' | 'DESC' | 'desc' - type OrderBy = string | { [key: string]: Order } - type ThunkWithArgsCtx = - | ((args: TArgs, context: TContext) => T) - | T + sqlJoin?: SqlJoin + sqlPaginate?: boolean + where?: Where +} + +export interface UnionTypExtension { + sqlTable?: string + uniqueKey?: string | string[] + alwaysFetch?: string +} + +export interface InterfaceTypeExtension { + sqlTable?: string + uniqueKey?: string | string[] + alwaysFetch?: string +} +declare module 'graphql/type/definition' { export interface GraphQLObjectTypeConfig { - extensions?: Maybe>> & { - alwaysFetch?: string - sqlTable?: ThunkWithArgsCtx - uniqueKey?: string | string[] - } + // extensions?: { + // joinMonster?: ObjectTypeExtension + // } } export interface GraphQLFieldConfig { - extensions?: Maybe>> & { - ignoreAll?: boolean - ignoreTable?: boolean - junction?: { - include?: ThunkWithArgsCtx< - { - sqlColumn?: string - sqlExpr?: string - sqlDeps?: string | string[] - }, - TContext, - TArgs - > - orderBy?: ThunkWithArgsCtx - sortKey?: ThunkWithArgsCtx< - { - order: Order - key: string | string[] - }, - TContext, - TArgs - > - sqlBatch?: { - thisKey: string - parentKey: string - sqlJoin: SqlJoin - } - sqlJoins?: [SqlJoin, SqlJoin] - sqlTable: ThunkWithArgsCtx - uniqueKey?: string | string[] - where?: Where - } - limit?: ThunkWithArgsCtx - orderBy?: ThunkWithArgsCtx - sortKey?: ThunkWithArgsCtx< - { - order: Order - key: string | string[] - }, - TContext, - TArgs - > - sqlBatch?: { - thisKey: string - parentKey: string - } - sqlColumn?: string - sqlDeps?: string[] - sqlExpr?: ( - table: string, - args: TArgs, - context: TContext, - sqlASTNode: any - ) => string - sqlJoin?: SqlJoin - sqlPaginate?: boolean - where?: Where - } + // extensions?: { + // joinMonster?: FieldConfigExtension + // } } } export interface GraphQLUnionTypeConfig { extensions?: Maybe>> & { - sqlTable?: string - uniqueKey?: string | string[] - alwaysFetch?: string + joinMonster?: UnionTypExtension } } export interface GraphQLInterfaceTypeConfig { extensions: Maybe>> & { - sqlTable?: string - uniqueKey?: string | string[] - alwaysFetch?: string + joinMonster?: InterfaceTypeExtension } }