11import { Resolver , ObjectTypeComposer } from 'graphql-compose' ;
22import type { Model , Document } from 'mongoose' ;
3- import { recordHelperArgs , RecordHelperArgsOpts } from './helpers' ;
3+ import { recordHelperArgs , RecordHelperArgsOpts , ArgsMap } from './helpers' ;
44import type { ExtendedResolveParams } from './index' ;
55import { addErrorCatcherField } from './helpers/errorCatcher' ;
66import { validateAndThrow } from './helpers/validate' ;
@@ -9,11 +9,11 @@ export interface CreateOneResolverOpts {
99 record ?: RecordHelperArgsOpts | false ;
1010}
1111
12- export default function createOne < TSource = Document , TContext = any > (
13- model : Model < any > ,
14- tc : ObjectTypeComposer < TSource , TContext > ,
12+ export default function createOne < TSource = any , TContext = any , TDoc extends Document = any > (
13+ model : Model < TDoc > ,
14+ tc : ObjectTypeComposer < TDoc , TContext > ,
1515 opts ?: CreateOneResolverOpts
16- ) : Resolver < TSource , TContext > {
16+ ) : Resolver < TSource , TContext , ArgsMap , TDoc > {
1717 if ( ! model || ! model . modelName || ! model . schema ) {
1818 throw new Error ( 'First arg for Resolver createOne() should be instance of Mongoose Model.' ) ;
1919 }
@@ -64,7 +64,7 @@ export default function createOne<TSource = Document, TContext = any>(
6464 ...( opts && opts . record ) ,
6565 } ) ,
6666 } ,
67- resolve : ( async ( resolveParams : ExtendedResolveParams ) => {
67+ resolve : ( async ( resolveParams : ExtendedResolveParams < TDoc > ) => {
6868 const recordData = resolveParams ?. args ?. record ;
6969
7070 if ( ! ( typeof recordData === 'object' ) || Object . keys ( recordData ) . length === 0 ) {
@@ -73,7 +73,7 @@ export default function createOne<TSource = Document, TContext = any>(
7373 ) ;
7474 }
7575
76- let doc : Document = new model ( recordData ) ;
76+ let doc = new model ( recordData ) ;
7777 if ( resolveParams . beforeRecordMutate ) {
7878 doc = await resolveParams . beforeRecordMutate ( doc , resolveParams ) ;
7979 if ( ! doc ) return null ;
@@ -92,5 +92,5 @@ export default function createOne<TSource = Document, TContext = any>(
9292 // and return it in mutation payload
9393 addErrorCatcherField ( resolver ) ;
9494
95- return resolver ;
95+ return resolver as any ;
9696}
0 commit comments