import { BaseAdapter, BaseConfig, MaybePromise, Mutation, Query } from "./BaseAdapter"; import { GraphQLFieldConfigArgumentMap, GraphQLFieldConfigMap, GraphQLResolveInfo } from "graphql"; import { AggregateOptions, FindOptions, Model, ModelCtor } from "sequelize"; export declare type SequelizeArgs = { [key: string]: any; where?: any; input?: any; scope?: string[]; aggregateFunction?: string; }; export declare type SequelizeAdapterConfig = BaseConfig & { /** * 设置默认限制数量,默认为20 */ defaultLimit?: number; /** * 主键类型转为GraphqlId类型 */ primaryKeyToIdType?: boolean; /** * 处理FindOptions的钩子 * @param action * @param options * @param args * @param context * @param info */ handlerFindOptions?: (action: Query | Mutation, options: FindOptions, fields: string[], args: SequelizeArgs, context: TContext, info: GraphQLResolveInfo) => FindOptions; /** * 处理AggregateOptions的钩子 * @param action * @param options * @param args * @param context * @param info */ handlerAggregateOptions?: (action: string, options: AggregateOptions, args: SequelizeArgs, context: TContext, info: GraphQLResolveInfo) => AggregateOptions; }; export declare function getAdapter(model: ModelCtor, config?: SequelizeAdapterConfig): SequelizeAdapter; export declare class SequelizeAdapter extends BaseAdapter> { model: ModelCtor; createFields: GraphQLFieldConfigArgumentMap; updateFields: GraphQLFieldConfigArgumentMap; inputArgs: GraphQLFieldConfigArgumentMap; subscriptionFilterArgs: GraphQLFieldConfigArgumentMap; inputListArgs: GraphQLFieldConfigArgumentMap; aggregateArgs: GraphQLFieldConfigArgumentMap; modelFields: GraphQLFieldConfigMap; customFields: GraphQLFieldConfigMap; constructor(model: ModelCtor, config?: SequelizeAdapterConfig); /** * 添加钩子,实现消息自动通知 * @private */ private _initialHooks; /** * 获取关联表的字段 * @returns {GraphQLFieldConfigMap} */ get associationsFields(): GraphQLFieldConfigMap; /** * 获取关联表创建的字段 * @returns {GraphQLFieldConfigArgumentMap} */ get associationsCreateFields(): GraphQLFieldConfigArgumentMap; /** * 获取关联表更新的字段 * @returns {GraphQLFieldConfigArgumentMap} */ get associationsUpdateFields(): GraphQLFieldConfigArgumentMap; getOneResolve(source: TSource, { scope, ...args }: SequelizeArgs, context: TContext, info: GraphQLResolveInfo): MaybePromise; getListResolve(source: TSource, { scope, ...args }: SequelizeArgs, context: TContext, info: GraphQLResolveInfo): Promise; createResolve(source: TSource, { data }: SequelizeArgs, context: TContext, info: GraphQLResolveInfo): Promise; removeResolve(source: TSource, args: SequelizeArgs, context: TContext, info: GraphQLResolveInfo): Promise; updateResolve(source: TSource, { data, ...args }: SequelizeArgs, context: TContext, info: GraphQLResolveInfo): Promise; getAggregateResolve(source: TSource, { field, fn, ...args }: SequelizeArgs, context: TContext, info: GraphQLResolveInfo): Promise; }