File tree Expand file tree Collapse file tree 3 files changed +50
-4
lines changed Expand file tree Collapse file tree 3 files changed +50
-4
lines changed Original file line number Diff line number Diff line change @@ -4,7 +4,11 @@ open System.Threading
44open SqlStreamStore.Streams
55
66module 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)
812
913 let readFromAllStream : SqlStreamStore.IStreamStore -> ReadingDirection -> StartPositionInclusive -> MessageCount -> Async < ReadAllPage > =
1014 fun store readingDirection startPositionInclusive msgCount ->
Original file line number Diff line number Diff line change @@ -13,15 +13,19 @@ type MessageDetails =
1313
1414type StreamName = string
1515
16+ [<RequireQualifiedAccessAttribute>]
17+ type ReadVersion =
18+ | Start
19+ | End
20+ | SpecificVersion of uint
21+
1622[<RequireQualifiedAccessAttribute>]
1723type AppendVersion =
1824 | Any
1925 | EmptyStream
2026 | NoStream
2127 | SpecificVersion of int
2228
23- and ReadVersion = uint
24-
2529type StartPositionInclusive = int64
2630type MessageCount = int
2731
Original file line number Diff line number Diff line change @@ -37,7 +37,7 @@ let tests =
3737 do ! Append.appendNewMessages inMemStore streamName appendVersion msgList
3838 |> Async.Ignore
3939
40- let readVersion = 0 u
40+ let readVersion = ReadVersion.Start
4141
4242 let! readResult = Read.readFromStream inMemStore ReadingDirection.Forward streamName readVersion 10
4343
@@ -46,4 +46,42 @@ let tests =
4646 |> fun sorted ->
4747 ExpectExtra.equal guidString1 ( sorted.[ 0 ]. MessageId.ToString())
4848 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())
4987 } ]
You can’t perform that action at this time.
0 commit comments