graphql-compose-mongoose
Version:
Plugin for `graphql-compose` which derive a graphql types from a mongoose model.
40 lines • 2.04 kB
TypeScript
import type { InputTypeComposer, Resolver, SchemaComposer } from 'graphql-compose';
import { ObjectTypeComposer } from 'graphql-compose';
import type { Document, Model } from 'mongoose';
import { resolverFactory } from './resolvers';
export type TypeConverterInputTypeOpts = {
name?: string;
description?: string;
onlyFields?: string[];
removeFields?: string[];
requiredFields?: string[];
fields?: {
only?: string[];
remove?: string[];
required?: string[];
};
};
export type ComposeMongooseOpts<TContext = any> = {
schemaComposer?: SchemaComposer<TContext>;
name?: string;
description?: string;
onlyFields?: string[];
removeFields?: string[];
inputType?: TypeConverterInputTypeOpts;
defaultsAsNonNull?: boolean;
fields?: {
only?: string[];
remove?: string[];
};
};
export type GenerateResolverType<TDoc extends Document, TContext = any> = {
[resolver in keyof typeof resolverFactory]: <TSource = any>(opts?: Parameters<(typeof resolverFactory)[resolver]>[2]) => (typeof resolverFactory)[resolver] extends (...args: any) => Resolver<any, any, infer TArgs, any> ? Resolver<TSource, TContext, TArgs, TDoc> : any;
};
export type ObjectTypeComposerWithMongooseResolvers<TDoc extends Document, TContext = any> = ObjectTypeComposer<TDoc, TContext> & {
mongooseResolvers: GenerateResolverType<TDoc, TContext>;
};
export declare function composeMongoose<TDoc extends Document<any>, TContext = any>(model: Model<TDoc>, opts?: ComposeMongooseOpts<TContext>): ObjectTypeComposerWithMongooseResolvers<TDoc, TContext>;
export declare function prepareFields(tc: ObjectTypeComposer<any, any>, opts?: ComposeMongooseOpts<any>): void;
export declare function createInputType(tc: ObjectTypeComposer<any, any>, inputTypeOpts?: TypeConverterInputTypeOpts): void;
export declare function prepareInputFields(inputTypeComposer: InputTypeComposer<any>, inputTypeOpts?: TypeConverterInputTypeOpts): void;
//# sourceMappingURL=composeMongoose.d.ts.map