import { GraphQLResolveInfo, GraphQLAbstractType } from 'graphql'; import FileItem from '../gql/types/FileItem'; import Group from '../gql/types/Group'; import Job from '../gql/types/Job'; import Location from '../gql/types/Location'; import LocationGroup from '../gql/types/LocationGroup'; import Organization from '../gql/types/Organization'; import ScopeWarning from '../gql/types/ScopeWarning'; import Skill from '../gql/types/Skill'; import User from '../gql/types/User'; import UserGroup from '../gql/types/UserGroup'; import UserLocation from '../gql/types/UserLocation'; import UserOrganization from '../gql/types/UserOrganization'; import Warning from '../gql/types/Warning'; import { ISpruceContext } from './ctx'; /** * Defines base GQL types for Spruce models and helper types */ export interface ISpruceGQLTypes { FileItem: ReturnType; Group: ReturnType; Job: ReturnType; Location: ReturnType; LocationGroup: ReturnType; Organization: ReturnType; ScopeWarning: ReturnType; Skill: ReturnType; User: ReturnType; UserGroup: ReturnType; UserLocation: ReturnType; UserOrganization: ReturnType; Warning: ReturnType; } export interface IGQLResolver { (source: any, args: IArgs, context: IContext & { scopes: Record; }, info: GraphQLResolveInfo): IResponse; } export interface IGQLTypeResolver> { (result: IResult, context: IContext & { scopes: Record; }, info: GraphQLResolveInfo, returnType: GraphQLAbstractType): string; } export interface IGQLResolvers { sdl?: string; resolvers?: { [scope: string]: { __resolveType: IGQLTypeResolver>; } | { [resolverName: string]: IGQLResolver | string[]; }; }; }