UNPKG

graphql-compose-mongoose

Version:

Plugin for `graphql-compose` which derive a graphql types from a mongoose model.

40 lines 2.04 kB
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