Skip to content

Commit f12c58e

Browse files
author
Jamil Maqdis Anton
committed
Use AppendToStream method instead of its extension. Replace StreamDetail type with AppendStreamDetails type. Refactor.
1 parent 6fe22cb commit f12c58e

File tree

1 file changed

+33
-24
lines changed

1 file changed

+33
-24
lines changed

src/Append.fs

Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
namespace SqlStreamStore.FSharp
22

33

4-
open System
54
open Insurello.AsyncExtra
65
open SqlStreamStore
7-
open SqlStreamStore.FSharp
86
open SqlStreamStore.Streams
97

108
type MessageDetails =
@@ -18,29 +16,37 @@ and Id =
1816
| Auto
1917

2018
module Append =
21-
let appendNewMessage: IStreamStore -> StreamDetails -> MessageDetails -> Async<AppendResult> =
19+
let private stringIdToGuid: Id -> System.Guid =
20+
function
21+
| Custom guid -> guid
22+
| Auto -> System.Guid.NewGuid()
23+
24+
let private newStreamMessageFromMessageDetails: MessageDetails -> NewStreamMessage =
25+
fun msg ->
26+
match msg.jsonMetadata with
27+
| "" -> NewStreamMessage(stringIdToGuid msg.id, msg.type_, msg.jsonData)
28+
| metadata -> NewStreamMessage(stringIdToGuid msg.id, msg.type_, msg.jsonData, metadata)
29+
30+
let appendNewMessage: IStreamStore -> AppendStreamDetails -> MessageDetails -> Async<AppendResult> =
2231
fun store streamDetails messageDetails ->
23-
let toId: Id -> System.Guid =
24-
function
25-
| Custom guid -> guid
26-
| Auto -> System.Guid.NewGuid()
27-
28-
let createMessage: MessageDetails -> NewStreamMessage =
29-
fun msg ->
30-
match msg.jsonMetadata with
31-
| "" -> NewStreamMessage(toId msg.id, msg.type_, msg.jsonData)
32-
| metadata -> NewStreamMessage(toId msg.id, msg.type_, msg.jsonData, metadata)
33-
34-
let append: IStreamStore -> StreamDetails -> MessageDetails -> Async<AppendResult> =
35-
fun store streamDetails messageDetails ->
36-
store.AppendToStream
37-
(streamDetails.streamName, Helpers.toVersion streamDetails.version, createMessage messageDetails)
38-
|> Async.AwaitTask
39-
40-
append store streamDetails messageDetails
32+
store.AppendToStream
33+
(StreamId(streamDetails.streamName),
34+
Helpers.getVersion streamDetails.version,
35+
[| newStreamMessageFromMessageDetails messageDetails |])
36+
|> Async.AwaitTask
37+
38+
let appendNewMessages: IStreamStore -> AppendStreamDetails -> List<MessageDetails> -> Async<AppendResult> =
39+
fun store streamDetails messages ->
40+
store.AppendToStream
41+
(StreamId(streamDetails.streamName),
42+
Helpers.getVersion streamDetails.version,
43+
messages
44+
|> List.map newStreamMessageFromMessageDetails
45+
|> List.toArray)
46+
|> Async.AwaitTask
4147

4248
module AppendExtras =
43-
let appendNewMessage: IStreamStore -> StreamDetails -> MessageDetails -> AsyncResult<AppendResult, AppendException> =
49+
let appendNewMessage: IStreamStore -> AppendStreamDetails -> MessageDetails -> AsyncResult<AppendResult, AppendException> =
4450
fun store streamDetails messageDetails ->
4551
Append.appendNewMessage store streamDetails messageDetails
4652
|> Async.Catch
@@ -49,5 +55,8 @@ module AppendExtras =
4955
| Choice2Of2 exn ->
5056
Error
5157
<| match exn with
52-
| :? AggregateException as exn -> exn.InnerException |> AppendException.WrongExpectedVersion
53-
| _ as exn -> exn |> AppendException.Other)
58+
// TODO: make sense
59+
| :? System.AggregateException as exn ->
60+
exn.InnerException
61+
|> AppendException.WrongExpectedVersion
62+
| exn -> exn |> AppendException.Other)

0 commit comments

Comments
 (0)