From 20a9ea461c119a501b593f090cec7b2f1c05c283 Mon Sep 17 00:00:00 2001 From: "Daniel J. Summers" Date: Sat, 16 Apr 2022 23:05:57 -0400 Subject: [PATCH] Raise exn on write error --- src/RethinkDb.Driver.FSharp/Builder.fs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/RethinkDb.Driver.FSharp/Builder.fs b/src/RethinkDb.Driver.FSharp/Builder.fs index 6e3a486..a3cab4d 100644 --- a/src/RethinkDb.Driver.FSharp/Builder.fs +++ b/src/RethinkDb.Driver.FSharp/Builder.fs @@ -11,6 +11,9 @@ open System.Threading.Tasks /// Computation Expression builder for RethinkDB queries type RethinkBuilder<'T> () = + /// Await a Task (avoids using the task CE when we may raise exceptions) + let await = Async.AwaitTask >> Async.RunSynchronously + /// Create a RethinkDB hash map of the given field/value pairs let fieldsToMap (fields : (string * obj) list) = fields @@ -211,9 +214,11 @@ type RethinkBuilder<'T> () = /// Perform a write operation [] member _.Write (expr : ReqlExpr) : IConnection -> Task = - fun conn -> task { - return! expr.RunWriteAsync conn - } + fun conn -> + let result = expr.RunWriteAsync conn |> await + match result.Errors with + | 0UL -> Task.FromResult result + | _ -> raise <| ReqlRuntimeError result.FirstError /// Perform a write operation []