File tree 3 files changed +31
-9
lines changed
3 files changed +31
-9
lines changed Original file line number Diff line number Diff line change 1
1
namespace SqlStreamStore.FSharp
2
2
3
3
4
+ open System
5
+ open Insurello.AsyncExtra
4
6
open SqlStreamStore
7
+ open SqlStreamStore.FSharp
5
8
open SqlStreamStore.Streams
6
9
7
10
type MessageDetails =
@@ -30,7 +33,21 @@ module Append =
30
33
31
34
let append : IStreamStore -> StreamDetails -> MessageDetails -> Async < AppendResult > =
32
35
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)
34
38
|> Async.AwaitTask
35
39
36
40
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 11
11
</PropertyGroup >
12
12
13
13
<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" />
18
18
</ItemGroup >
19
19
20
20
<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" />
25
25
</ItemGroup >
26
26
27
27
</Project >
Original file line number Diff line number Diff line change @@ -16,6 +16,11 @@ type StreamDetails =
16
16
type StartPositionInclusive = int64
17
17
type MessageCount = int
18
18
19
+ [<RequireQualifiedAccessAttribute>]
20
+ type AppendException =
21
+ | WrongExpectedVersion of System.Exception
22
+ | Other of System.Exception
23
+
19
24
module Helpers =
20
25
let toVersion : Version -> int =
21
26
function
You can’t perform that action at this time.
0 commit comments