@@ -2,19 +2,8 @@ namespace SqlStreamStore.FSharp
2
2
3
3
4
4
open Insurello.AsyncExtra
5
- open SqlStreamStore
6
5
open SqlStreamStore.Streams
7
6
8
- type MessageDetails =
9
- { id: Id
10
- type_: string
11
- jsonData: string
12
- jsonMetadata: string }
13
-
14
- and Id =
15
- | Custom of System.Guid
16
- | Auto
17
-
18
7
module Append =
19
8
let private stringIdToGuid : Id -> System.Guid =
20
9
function
@@ -27,26 +16,33 @@ module Append =
27
16
| " " -> NewStreamMessage( stringIdToGuid msg.id, msg.type_, msg.jsonData)
28
17
| metadata -> NewStreamMessage( stringIdToGuid msg.id, msg.type_, msg.jsonData, metadata)
29
18
30
- let appendNewMessage : IStreamStore -> AppendStreamDetails -> MessageDetails -> Async < AppendResult > =
19
+ let private fromAppendVersion : AppendVersion -> int =
20
+ function
21
+ | AppendVersion.Any -> SqlStreamStore.Streams.ExpectedVersion.Any
22
+ | AppendVersion.EmptyStream -> SqlStreamStore.Streams.ExpectedVersion.EmptyStream
23
+ | AppendVersion.NoStream -> SqlStreamStore.Streams.ExpectedVersion.NoStream
24
+ | AppendVersion.SpecificVersion version -> version
25
+
26
+ let appendNewMessage : SqlStreamStore.IStreamStore -> AppendStreamDetails -> MessageDetails -> Async < AppendResult > =
31
27
fun store streamDetails messageDetails ->
32
28
store.AppendToStream
33
29
( StreamId( streamDetails.streamName),
34
- Helpers.getVersion streamDetails.version,
30
+ fromAppendVersion streamDetails.version,
35
31
[| newStreamMessageFromMessageDetails messageDetails |])
36
32
|> Async.AwaitTask
37
33
38
- let appendNewMessages : IStreamStore -> AppendStreamDetails -> List < MessageDetails > -> Async < AppendResult > =
34
+ let appendNewMessages : SqlStreamStore. IStreamStore -> AppendStreamDetails -> List < MessageDetails > -> Async < AppendResult > =
39
35
fun store streamDetails messages ->
40
36
store.AppendToStream
41
37
( StreamId( streamDetails.streamName),
42
- Helpers.getVersion streamDetails.version,
38
+ fromAppendVersion streamDetails.version,
43
39
messages
44
40
|> List.map newStreamMessageFromMessageDetails
45
41
|> List.toArray)
46
42
|> Async.AwaitTask
47
43
48
44
module AppendExtras =
49
- let appendNewMessage : IStreamStore -> AppendStreamDetails -> MessageDetails -> AsyncResult < AppendResult , AppendException > =
45
+ let appendNewMessage : SqlStreamStore. IStreamStore -> AppendStreamDetails -> MessageDetails -> AsyncResult < AppendResult , AppendException > =
50
46
fun store streamDetails messageDetails ->
51
47
Append.appendNewMessage store streamDetails messageDetails
52
48
|> Async.Catch
0 commit comments