File tree Expand file tree Collapse file tree 3 files changed +31
-9
lines changed Expand file tree Collapse file tree 3 files changed +31
-9
lines changed Original file line number Diff line number Diff line change 11namespace SqlStreamStore.FSharp
22
33
4+ open System
5+ open Insurello.AsyncExtra
46open SqlStreamStore
7+ open SqlStreamStore.FSharp
58open SqlStreamStore.Streams
69
710type MessageDetails =
@@ -30,7 +33,21 @@ module Append =
3033
3134 let append : IStreamStore -> StreamDetails -> MessageDetails -> Async < AppendResult > =
3235 fun store streamDetails messageDetails ->
33- store.AppendToStream( streamDetails.streamName, Helpers.toVersion streamDetails.version, createMessage messageDetails)
36+ store.AppendToStream
37+ ( streamDetails.streamName, Helpers.toVersion streamDetails.version, createMessage messageDetails)
3438 |> Async.AwaitTask
3539
3640 append store streamDetails messageDetails
41+
42+ module AppendExtras =
43+ let appendNewMessage : IStreamStore -> StreamDetails -> MessageDetails -> AsyncResult < AppendResult , AppendException > =
44+ fun store streamDetails messageDetails ->
45+ Append.appendNewMessage store streamDetails messageDetails
46+ |> Async.Catch
47+ |> Async.map ( function
48+ | Choice1Of2 response -> Ok response
49+ | Choice2Of2 exn ->
50+ Error
51+ <| match exn with
52+ | :? AggregateException as exn -> exn.InnerException |> AppendException.WrongExpectedVersion
53+ | _ as exn -> exn |> AppendException.Other)
Original file line number Diff line number Diff line change 1111 </PropertyGroup >
1212
1313 <ItemGroup >
14- <Compile Include =" Types.fs" />
15- <Compile Include =" Append.fs" />
16- <Compile Include =" Read.fs" />
17- <Compile Include =" Postgres.fs" />
14+ <Compile Include =" Types.fs" />
15+ <Compile Include =" Append.fs" />
16+ <Compile Include =" Read.fs" />
17+ <Compile Include =" Postgres.fs" />
1818 </ItemGroup >
1919
2020 <ItemGroup >
21- <PackageReference Update =" FSharp.Core" Version =" 4.7.2" />
22- <PackageReference Include =" Insurello.AsyncExtra" Version =" 1.1.0" />
23- <PackageReference Include =" SqlStreamStore" Version =" 1.2.0-beta.8" />
24- <PackageReference Include =" SqlStreamStore.Postgres" Version =" 1.2.0-beta.8" />
21+ <PackageReference Update =" FSharp.Core" Version =" 4.7.2" />
22+ <PackageReference Include =" Insurello.AsyncExtra" Version =" 1.1.0" />
23+ <PackageReference Include =" SqlStreamStore" Version =" 1.2.0-beta.8" />
24+ <PackageReference Include =" SqlStreamStore.Postgres" Version =" 1.2.0-beta.8" />
2525 </ItemGroup >
2626
2727</Project >
Original file line number Diff line number Diff line change @@ -16,6 +16,11 @@ type StreamDetails =
1616type StartPositionInclusive = int64
1717type MessageCount = int
1818
19+ [<RequireQualifiedAccessAttribute>]
20+ type AppendException =
21+ | WrongExpectedVersion of System.Exception
22+ | Other of System.Exception
23+
1924module Helpers =
2025 let toVersion : Version -> int =
2126 function
You can’t perform that action at this time.
0 commit comments