///
import { ISpruceContext } from '../interfaces/ctx';
import { GraphQLResolveInfo, GraphQLObjectType } from 'graphql';
import { IResolverLikeFunction } from 'graphql-sequelize';
import SpruceCoreModel from '../lib/SpruceModel';
import { FindOptions } from 'sequelize/types';
import { IGQLResolver } from '../interfaces/gql';
declare type SpruceCoreModelType = typeof SpruceCoreModel;
export interface IBuildSequelizeResolver {
(options: {
modelName: string;
associationName?: string;
many?: boolean;
options?: Record;
before?: (findOptions: FindOptions, args: Record, context: IContext & {
scopes: Record;
}, info: GraphQLResolveInfo) => FindOptions | Promise;
after?: (result: Record, args: Record, context: IContext & {
scopes: Record;
}, info: GraphQLResolveInfo) => Record | null;
}): IGQLResolver;
}
export interface ISpruceGQLHelpers {
buildSequelizeResolver: IBuildSequelizeResolver;
cleanModelByScope(options: {
model: SpruceCoreModel;
context: ISpruceContext;
info: GraphQLResolveInfo;
}): Record | null;
attributes(model: SpruceCoreModelType, options?: Record): any;
enhancedResolver(
/** The model. For example ctx.db.models.User */
model: SpruceCoreModelType, options?: Record, scope?: string): IResolverLikeFunction;
buildConnection(options: {
/** Name your connection. This must be unique */
name?: string;
/** The model you're connecting. For example ctx.db.models.User */
model: SpruceCoreModelType;
associationName: string;
type: GraphQLObjectType;
connectionOptions: {
before?: (findOptions: FindOptions, args: Record, context: any) => Promise;
};
}): any;
}
declare const _default: (ctx: ISpruceContext, import("..").ISpruceAuthGroup>, import("..").ISpruceAuthOrganization, import("..").ISpruceAuthLocation>, import("..").ISpruceServices, import("..").ISpruceUtilities, import("../interfaces/gql").ISpruceGQLTypes>) => {
enhancedResolver: (model: typeof SpruceCoreModel, options?: Record | undefined, scope?: string | undefined) => IResolverLikeFunction;
attributes: (model: any, options: Record) => any;
attributeFields: (model: import("sequelize/types").Model, options?: Partial> | undefined) => any;
defaultArgs: (model: import("sequelize/types").Model) => any;
buildConnection: (options: Record) => any;
buildSequelizeResolver: IBuildSequelizeResolver, import("..").ISpruceAuthGroup>, import("..").ISpruceAuthOrganization, import("..").ISpruceAuthLocation>, import("..").ISpruceServices, import("..").ISpruceUtilities, import("../interfaces/gql").ISpruceGQLTypes>>;
cleanModelByScope: (options: {
model: Record | SpruceCoreModel;
modelName?: string | undefined;
context: ISpruceContext, import("..").ISpruceAuthGroup>, import("..").ISpruceAuthOrganization, import("..").ISpruceAuthLocation>, import("..").ISpruceServices, import("..").ISpruceUtilities, import("../interfaces/gql").ISpruceGQLTypes>;
info: GraphQLResolveInfo;
}) => Record | null;
};
export default _default;