File tree 3 files changed +50
-4
lines changed 3 files changed +50
-4
lines changed Original file line number Diff line number Diff line change @@ -4,7 +4,11 @@ open System.Threading
4
4
open SqlStreamStore.Streams
5
5
6
6
module Read =
7
- let private fromReadVersion : uint -> int = fun readVersion -> int ( readVersion)
7
+ let private fromReadVersion : ReadVersion -> int =
8
+ function
9
+ | ReadVersion.Start -> int ( Position.Start)
10
+ | ReadVersion.End -> int ( Position.End)
11
+ | ReadVersion.SpecificVersion version -> int ( version)
8
12
9
13
let readFromAllStream : SqlStreamStore.IStreamStore -> ReadingDirection -> StartPositionInclusive -> MessageCount -> Async < ReadAllPage > =
10
14
fun store readingDirection startPositionInclusive msgCount ->
Original file line number Diff line number Diff line change @@ -13,15 +13,19 @@ type MessageDetails =
13
13
14
14
type StreamName = string
15
15
16
+ [<RequireQualifiedAccessAttribute>]
17
+ type ReadVersion =
18
+ | Start
19
+ | End
20
+ | SpecificVersion of uint
21
+
16
22
[<RequireQualifiedAccessAttribute>]
17
23
type AppendVersion =
18
24
| Any
19
25
| EmptyStream
20
26
| NoStream
21
27
| SpecificVersion of int
22
28
23
- and ReadVersion = uint
24
-
25
29
type StartPositionInclusive = int64
26
30
type MessageCount = int
27
31
Original file line number Diff line number Diff line change @@ -37,7 +37,7 @@ let tests =
37
37
do ! Append.appendNewMessages inMemStore streamName appendVersion msgList
38
38
|> Async.Ignore
39
39
40
- let readVersion = 0 u
40
+ let readVersion = ReadVersion.Start
41
41
42
42
let! readResult = Read.readFromStream inMemStore ReadingDirection.Forward streamName readVersion 10
43
43
@@ -46,4 +46,42 @@ let tests =
46
46
|> fun sorted ->
47
47
ExpectExtra.equal guidString1 ( sorted.[ 0 ]. MessageId.ToString())
48
48
ExpectExtra.equal guidString2 ( sorted.[ 1 ]. MessageId.ToString())
49
+ }
50
+ testAsync " Should read Backward from specific stream." {
51
+ let inMemStore = new SqlStreamStore.InMemoryStreamStore()
52
+
53
+ let streamName = " test"
54
+
55
+ let appendVersion = AppendVersion.NoStream
56
+
57
+ let guidString1 = " 11111111-1111-1111-1111-111111111111"
58
+
59
+ let guidString2 = " 22222222-2222-2222-2222-222222222222"
60
+
61
+ let msg1 =
62
+ { id = StreamMessageId.Custom( System.Guid.Parse( guidString1))
63
+ type_ = " testing"
64
+ jsonData = " {}"
65
+ jsonMetadata = " {}" }
66
+
67
+ let msg2 =
68
+ { id = StreamMessageId.Custom( System.Guid.Parse( guidString2))
69
+ type_ = " testing"
70
+ jsonData = " {}"
71
+ jsonMetadata = " {}" }
72
+
73
+ let msgList = [ msg1; msg2 ]
74
+
75
+ do ! Append.appendNewMessages inMemStore streamName appendVersion msgList
76
+ |> Async.Ignore
77
+
78
+ let readVersion = ReadVersion.End
79
+
80
+ let! readResult = Read.readFromStream inMemStore ReadingDirection.Backward streamName readVersion 10
81
+
82
+ readResult.Messages
83
+ |> Array.sortBy ( fun msg -> msg.MessageId)
84
+ |> fun sorted ->
85
+ ExpectExtra.equal guidString2 ( sorted.[ 1 ]. MessageId.ToString())
86
+ ExpectExtra.equal guidString1 ( sorted.[ 0 ]. MessageId.ToString())
49
87
} ]
You can’t perform that action at this time.
0 commit comments