Skip to content

Commit b3eb84f

Browse files
author
Jamil Maqdis Anton
committed
add exception handling
1 parent 072decd commit b3eb84f

File tree

3 files changed

+31
-9
lines changed

3 files changed

+31
-9
lines changed

src/Append.fs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
namespace SqlStreamStore.FSharp
22

33

4+
open System
5+
open Insurello.AsyncExtra
46
open SqlStreamStore
7+
open SqlStreamStore.FSharp
58
open SqlStreamStore.Streams
69

710
type 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)

src/SqlStreamStore.FSharp.fsproj

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,17 @@
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>

src/Types.fs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ type StreamDetails =
1616
type StartPositionInclusive = int64
1717
type MessageCount = int
1818

19+
[<RequireQualifiedAccessAttribute>]
20+
type AppendException =
21+
| WrongExpectedVersion of System.Exception
22+
| Other of System.Exception
23+
1924
module Helpers =
2025
let toVersion: Version -> int =
2126
function

0 commit comments

Comments
 (0)