Skip to content

Commit bd07550

Browse files
author
Jamil Maqdis Anton
committed
refactor StreamDetails type and fix functions accordingly
1 parent 34231f7 commit bd07550

File tree

3 files changed

+41
-10
lines changed

3 files changed

+41
-10
lines changed

src/Append.fs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
namespace SqlStreamStore.FSharp
22

3-
open System
3+
44
open SqlStreamStore
55
open SqlStreamStore.Streams
66

@@ -11,26 +11,34 @@ type MessageDetails =
1111
jsonMetadata: string }
1212

1313
and Id =
14-
| Custom of Guid
14+
| Custom of System.Guid
1515
| Auto
1616

1717
module append =
1818
let appendNewMessage: IStreamStore -> StreamDetails -> MessageDetails -> Async<AppendResult> =
1919
fun store streamDetails messageDetails ->
20-
let id: Id -> Guid =
20+
let id: Id -> System.Guid =
2121
function
2222
| Custom guid -> guid
23-
| Auto -> Guid.NewGuid()
23+
| Auto -> System.Guid.NewGuid()
2424

2525
let createMessage: MessageDetails -> NewStreamMessage =
2626
fun msg ->
2727
match msg.jsonMetadata with
2828
| "" -> NewStreamMessage(id msg.id, msg.type_, msg.jsonData)
2929
| metadata -> NewStreamMessage(id msg.id, msg.type_, msg.jsonData, metadata)
3030

31+
let toVersion: Version -> int =
32+
function
33+
| Version.None
34+
| Version.Any -> ExpectedVersion.Any
35+
| Version.EmptyStream -> ExpectedVersion.EmptyStream
36+
| Version.NoStream -> ExpectedVersion.NoStream
37+
| Version.SpecificVersion version -> version
38+
3139
let append: IStreamStore -> StreamDetails -> MessageDetails -> Async<AppendResult> =
3240
fun store stream msg ->
33-
store.AppendToStream(stream.streamName, stream.position, createMessage msg)
41+
store.AppendToStream(stream.streamName, toVersion stream.version, createMessage msg)
3442
|> Async.AwaitTask
3543

3644
append store streamDetails messageDetails

src/Read.fs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,31 @@ type ReadingDirection =
1010
| Backward
1111

1212
module Read =
13+
let toStartPosition: int option -> int =
14+
function
15+
| Some position -> position
16+
| None -> 0
17+
1318
let readFromStreamAsync: IStreamStore -> ReadingDirection -> StreamDetails -> int -> Async<ReadStreamPage> =
1419
fun store readingDirection streamDetails msgCount ->
1520
match readingDirection with
16-
| Forward -> store.ReadStreamForwards(streamDetails.streamName, streamDetails.position, msgCount)
17-
| Backward -> store.ReadStreamBackwards(streamDetails.streamName, streamDetails.position, msgCount)
21+
| Forward ->
22+
store.ReadStreamForwards
23+
(streamDetails.streamName, toStartPosition streamDetails.startPosition, msgCount)
24+
| Backward ->
25+
store.ReadStreamBackwards
26+
(streamDetails.streamName, toStartPosition streamDetails.startPosition, msgCount)
1827
|> Async.AwaitTask
1928

2029
let readFromStreamAsync': IStreamStore -> ReadingDirection -> StreamDetails -> int -> CancellationToken -> Async<ReadStreamPage> =
2130
fun store readingDirection streamDetails msgCount cancellationToken ->
2231
match readingDirection with
2332
| Forward ->
24-
store.ReadStreamForwards(streamDetails.streamName, streamDetails.position, msgCount, cancellationToken)
33+
store.ReadStreamForwards
34+
(streamDetails.streamName, toStartPosition streamDetails.startPosition, msgCount, cancellationToken)
2535
| Backward ->
26-
store.ReadStreamBackwards(streamDetails.streamName, streamDetails.position, msgCount, cancellationToken)
36+
store.ReadStreamBackwards
37+
(streamDetails.streamName, toStartPosition streamDetails.startPosition, msgCount, cancellationToken)
2738
|> Async.AwaitTask
2839

2940
module ReadExtras =

src/Types.fs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
11
namespace SqlStreamStore.FSharp
22

3-
type StreamDetails = { streamName: string; position: int }
3+
4+
[<RequireQualifiedAccessAttribute>]
5+
type Version =
6+
| None
7+
| Any
8+
| EmptyStream
9+
| NoStream
10+
| SpecificVersion of int
11+
12+
type StreamDetails =
13+
{ streamName: string
14+
startPosition: int option
15+
version: Version }

0 commit comments

Comments
 (0)