@@ -254,13 +254,13 @@ let private resolveField (execute: ExecuteField) (ctx: ResolveFieldContext) (par
254254 |> AsyncVal.map( fun v -> if isNull v then None else Some v)
255255
256256
257- type ResolverResult < 'T > = Result< 'T * IObservable< GQLDeferredResponseContent> option * GQLProblemDetails list, GQLProblemDetails list>
257+ type ResolverResult < 'T > = Result< 'T * IObservable< GQLDeferredResponseContent> voption * GQLProblemDetails list, GQLProblemDetails list>
258258
259259[<RequireQualifiedAccess>]
260260module ResolverResult =
261261
262- let data data = Ok ( data, None , [])
263- let defered data deferred = Ok ( data, Some deferred, [])
262+ let data data = Ok ( data, ValueNone , [])
263+ let defered data deferred = Ok ( data, ValueSome deferred, [])
264264
265265 let mapValue ( f : 'T -> 'U ) ( r : ResolverResult < 'T >) : ResolverResult < 'U > =
266266 Result.map( fun ( data , deferred , errs ) -> ( f data, deferred, errs)) r
@@ -296,7 +296,7 @@ let deferResults path (res : ResolverResult<obj>) : IObservable<GQLDeferredRespo
296296 | [] -> DeferredResult ( data, formattedPath)
297297 | _ -> DeferredErrors ( data, errs, formattedPath)
298298 |> Observable.singleton
299- Option .foldBack Observable.concat deferred deferredData
299+ ValueOption .foldBack Observable.concat deferred deferredData
300300 | Error errs -> Observable.singleton <| DeferredErrors ( null , errs, formattedPath)
301301
302302/// Collect together an array of results using the appropriate execution strategy.
@@ -312,12 +312,12 @@ let collectFields (strategy : ExecutionStrategy) (rs : AsyncVal<ResolverResult<K
312312 match ( r, acc) with
313313 | Ok( field, d, e), Ok( i, deferred, errs) ->
314314 Array.set data i field
315- Ok( i - 1 , Option .mergeWith Observable.merge deferred d, e @ errs)
315+ Ok( i - 1 , ValueOption .mergeWith Observable.merge deferred d, e @ errs)
316316 | Error e, Ok (_, _, errs) -> Error ( e @ errs)
317317 | Ok (_, _, e), Error errs -> Error ( e @ errs)
318318 | Error e, Error errs -> Error ( e @ errs)
319319 return
320- Array.foldBack merge collected ( Ok ( data.Length - 1 , None , []))
320+ Array.foldBack merge collected ( Ok ( data.Length - 1 , ValueNone , []))
321321 |> ResolverResult.mapValue( fun _ -> data)
322322 }
323323
@@ -363,7 +363,7 @@ let rec private direct (returnDef : OutputDef) (ctx : ResolveFieldContext) (path
363363 | Nullable ( Output innerDef) ->
364364 let innerCtx = { ctx with ExecutionInfo = { ctx.ExecutionInfo with IsNullable = true ; ReturnDef = innerDef } }
365365 executeResolvers innerCtx path parent ( toOption value |> AsyncVal.wrap)
366- |> AsyncVal.map( Result.valueOr ( fun errs -> ( KeyValuePair( name, null ), None , errs)) >> Ok)
366+ |> AsyncVal.map( Result.valueOr ( fun errs -> ( KeyValuePair( name, null ), ValueNone , errs)) >> Ok)
367367
368368 | Interface iDef ->
369369 let possibleTypesFn = ctx.Schema.GetPossibleTypes
@@ -398,7 +398,7 @@ and deferred (ctx : ResolveFieldContext) (path : FieldPath) (parent : obj) (valu
398398 executeResolvers ctx path parent ( toOption value |> AsyncVal.wrap)
399399 |> Observable.ofAsyncVal
400400 |> Observable.bind( ResolverResult.mapValue( fun d -> d.Value) >> deferResults path)
401- ResolverResult.defered ( KeyValuePair ( info.Identifier , null )) deferred |> AsyncVal.wrap
401+ ResolverResult.defered ( KeyValuePair ( name , null )) deferred |> AsyncVal.wrap
402402
403403and private streamed ( options : BufferedStreamOptions ) ( innerDef : OutputDef ) ( ctx : ResolveFieldContext ) ( path : FieldPath ) ( parent : obj ) ( value : obj ) =
404404 let info = ctx.ExecutionInfo
@@ -420,9 +420,9 @@ and private streamed (options : BufferedStreamOptions) (innerDef : OutputDef) (c
420420 match r with
421421 | Ok ( item, d, e) ->
422422 Array.set data i item.Value
423- ( i - 1 , box index :: indicies, Option .mergeWith Observable.merge deferred d, e @ errs)
423+ ( i - 1 , box index :: indicies, ValueOption .mergeWith Observable.merge deferred d, e @ errs)
424424 | Error e -> ( i - 1 , box index :: indicies, deferred, e @ errs)
425- let ( _ , indicies , deferred , errs ) = List.foldBack merge chunk ( chunk.Length - 1 , [], None , [])
425+ let ( _ , indicies , deferred , errs ) = List.foldBack merge chunk ( chunk.Length - 1 , [], ValueNone , [])
426426 deferResults ( box indicies :: path) ( Ok ( box data, deferred, errs))
427427
428428 let buffer ( items : IObservable < int * ResolverResult < KeyValuePair < string , obj >>>) : IObservable < GQLDeferredResponseContent > =
@@ -449,8 +449,8 @@ and private streamed (options : BufferedStreamOptions) (innerDef : OutputDef) (c
449449 |> Array.mapi resolveItem
450450 |> Observable.ofAsyncValSeq
451451 |> buffer
452- ResolverResult.defered ( KeyValuePair ( info.Identifier , box [])) stream |> AsyncVal.wrap
453- | _ -> raise <| GQLMessageException ( ErrorMessages.expectedEnumerableValue ctx.ExecutionInfo.Identifier ( value.GetType()))
452+ ResolverResult.defered ( KeyValuePair ( name , box [])) stream |> AsyncVal.wrap
453+ | _ -> raise <| GQLMessageException ( ErrorMessages.expectedEnumerableValue name ( value.GetType()))
454454
455455and private live ( ctx : ResolveFieldContext ) ( path : FieldPath ) ( parent : obj ) ( value : obj ) =
456456 let info = ctx.ExecutionInfo
@@ -485,7 +485,7 @@ and private live (ctx : ResolveFieldContext) (path : FieldPath) (parent : obj) (
485485
486486 executeResolvers ctx path parent ( value |> Some |> AsyncVal.wrap)
487487 // TODO: Add tests for `Observable.merge deferred updates` correct order
488- |> AsyncVal.map( Result.map( fun ( data , deferred , errs ) -> ( data, Some <| Option .foldBack Observable.merge deferred updates, errs)))
488+ |> AsyncVal.map( Result.map( fun ( data , deferred , errs ) -> ( data, ValueSome <| ValueOption .foldBack Observable.merge deferred updates, errs)))
489489
490490/// Actually execute the resolvers.
491491and private executeResolvers ( ctx : ResolveFieldContext ) ( path : FieldPath ) ( parent : obj ) ( value : AsyncVal < obj option >) : AsyncVal < ResolverResult < KeyValuePair < string , obj >>> =
@@ -505,8 +505,8 @@ and private executeResolvers (ctx : ResolveFieldContext) (path : FieldPath) (par
505505 let resolveWith ( ctx : ResolveFieldContext ) ( onSuccess : ResolveFieldContext -> FieldPath -> obj -> obj -> AsyncVal < ResolverResult < KeyValuePair < string , obj >>>) : AsyncVal < ResolverResult < KeyValuePair < string , obj >>> = asyncVal {
506506 let! resolved = value |> AsyncVal.rescue path ctx.Schema.ParseError
507507 match resolved with
508- | Error errs when ctx.ExecutionInfo.IsNullable -> return Ok ( KeyValuePair( name, null ), None , errs)
509- | Ok None when ctx.ExecutionInfo.IsNullable -> return Ok ( KeyValuePair( name, null ), None , [])
508+ | Error errs when ctx.ExecutionInfo.IsNullable -> return Ok ( KeyValuePair( name, null ), ValueNone , errs)
509+ | Ok None when ctx.ExecutionInfo.IsNullable -> return Ok ( KeyValuePair( name, null ), ValueNone , [])
510510 | Error errs -> return Error errs
511511 | Ok None -> return Error ( nullResolverError name path ctx)
512512 | Ok ( Some v) -> return ! onSuccess ctx path parent v
@@ -604,16 +604,16 @@ let private executeQueryOrMutation (resultSet: (string * ExecutionInfo) []) (ctx
604604 | Ok ( Error errs)
605605 | Error errs -> Error errs
606606 match result with
607- | Error errs when info.IsNullable -> return Ok ( KeyValuePair( name, null ), None , errs)
607+ | Error errs when info.IsNullable -> return Ok ( KeyValuePair( name, null ), ValueNone , errs)
608608 | Error errs -> return Error errs
609609 | Ok r -> return Ok r
610610 }
611611
612612 asyncVal {
613613 let documentId = ctx.ExecutionPlan.DocumentId
614- match ! resultSet |> Array .map executeRootOperation |> collectFields ctx.ExecutionPlan.Strategy with
615- | Ok ( data, Some deferred, errs) -> return GQLExecutionResult.Deferred( documentId, NameValueLookup( data), errs, deferred, ctx.Metadata)
616- | Ok ( data, None , errs) -> return GQLExecutionResult.Direct( documentId, NameValueLookup( data), errs, ctx.Metadata)
614+ match ! resultSet |> Seq .map executeRootOperation |> collectFields ctx.ExecutionPlan.Strategy with
615+ | Ok ( data, ValueSome deferred, errs) -> return GQLExecutionResult.Deferred( documentId, NameValueLookup( data), errs, deferred, ctx.Metadata)
616+ | Ok ( data, ValueNone , errs) -> return GQLExecutionResult.Direct( documentId, NameValueLookup( data), errs, ctx.Metadata)
617617 | Error errs -> return GQLExecutionResult.RequestError( documentId, errs, ctx.Metadata)
618618 }
619619
@@ -635,9 +635,9 @@ let private executeSubscription (resultSet: (string * ExecutionInfo) []) (ctx: E
635635 Path = fieldPath |> List.rev }
636636 let onValue v = asyncVal {
637637 match ! executeResolvers fieldCtx fieldPath value ( toOption v |> AsyncVal.wrap) with
638- | Ok ( data, None , []) -> return SubscriptionResult ( NameValueLookup.ofList [ nameOrAlias, data.Value])
639- | Ok ( data, None , errs) -> return SubscriptionErrors ( NameValueLookup.ofList [ nameOrAlias, data.Value], errs)
640- | Ok (_, Some _, _) -> return failwith " Deferred/Streamed/Live are not supported for subscriptions!"
638+ | Ok ( data, ValueNone , []) -> return SubscriptionResult ( NameValueLookup.ofList [ nameOrAlias, data.Value])
639+ | Ok ( data, ValueNone , errs) -> return SubscriptionErrors ( NameValueLookup.ofList [ nameOrAlias, data.Value], errs)
640+ | Ok (_, ValueSome _, _) -> return failwith " Deferred/Streamed/Live are not supported for subscriptions!"
641641 | Error errs -> return SubscriptionErrors ( null , errs)
642642 }
643643 return
0 commit comments