Skip to content
This repository was archived by the owner on Sep 3, 2024. It is now read-only.

Commit 1a15ba1

Browse files
More links have titles which makes client work easier
1 parent c2a8fd9 commit 1a15ba1

10 files changed

Lines changed: 51 additions & 34 deletions

File tree

src/SqlStreamStore.HAL.Tests/AllStreamMessageTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public async Task read_single_message_all_stream()
3535
.FromRequestMessage(response.RequestMessage)
3636
.Find()
3737
.Index()
38-
.AddSelf(Constants.Relations.Message, "stream/0")
38+
.AddSelf(Constants.Relations.Message, "stream/0", "a-stream@0")
3939
.Add(Constants.Relations.Feed, HeadOfAll));
4040
}
4141
}
@@ -51,7 +51,7 @@ public async Task read_single_message_does_not_exist_all_stream()
5151

5252
resource.ShouldLink(Links
5353
.FromPath(new PathString("/stream/0"))
54-
.AddSelf(Constants.Relations.Message, "stream/0")
54+
.AddSelf(Constants.Relations.Message, "stream/0", "@0")
5555
.Add(Constants.Relations.Feed, HeadOfAll));
5656
}
5757
}

src/SqlStreamStore.HAL.Tests/StreamMessageTests.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,12 @@ public async Task read_single_message_stream()
3535
.FromRequestMessage(response.RequestMessage)
3636
.Index()
3737
.Find()
38-
.Add(Constants.Relations.Self, "streams/a-stream/0")
38+
.Add(Constants.Relations.Self, "streams/a-stream/0", "a-stream@0")
3939
.Add(Constants.Relations.First, "streams/a-stream/0")
4040
.Add(Constants.Relations.Next, "streams/a-stream/1")
4141
.Add(Constants.Relations.Last, "streams/a-stream/-1")
42-
.Add(Constants.Relations.Feed, HeadOfStream)
43-
.Add(Constants.Relations.Message, "streams/a-stream/0"));
42+
.Add(Constants.Relations.Feed, HeadOfStream, "a-stream")
43+
.Add(Constants.Relations.Message, "streams/a-stream/0", "a-stream@0"));
4444
}
4545
}
4646

@@ -58,11 +58,11 @@ public async Task read_single_message_does_not_exist_stream()
5858
.FromRequestMessage(response.RequestMessage)
5959
.Index()
6060
.Find()
61-
.Add(Constants.Relations.Self, "streams/a-stream/0")
61+
.Add(Constants.Relations.Self, "streams/a-stream/0", "a-stream@0")
6262
.Add(Constants.Relations.First, "streams/a-stream/0")
6363
.Add(Constants.Relations.Last, "streams/a-stream/-1")
64-
.Add(Constants.Relations.Feed, HeadOfStream)
65-
.Add(Constants.Relations.Message, "streams/a-stream/0"));
64+
.Add(Constants.Relations.Feed, HeadOfStream, "a-stream")
65+
.Add(Constants.Relations.Message, "streams/a-stream/0", "a-stream@0"));
6666
}
6767
}
6868

src/SqlStreamStore.HAL.Tests/StreamMetadataTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ await _fixture.HttpClient.SendAsync(
4646
.Index()
4747
.Find()
4848
.Add(Constants.Relations.Metadata, $"streams/{StreamId}/metadata").Self()
49-
.Add(Constants.Relations.Feed, $"streams/{StreamId}"));
49+
.Add(Constants.Relations.Feed, $"streams/{StreamId}", StreamId));
5050
}
5151
}
5252

@@ -97,7 +97,7 @@ await _fixture.HttpClient.SendAsync(
9797
.Index()
9898
.Find()
9999
.Add(Constants.Relations.Metadata, $"streams/{StreamId}/metadata").Self()
100-
.Add(Constants.Relations.Feed, $"streams/{StreamId}"));
100+
.Add(Constants.Relations.Feed, $"streams/{StreamId}", StreamId));
101101
}
102102
}
103103

@@ -143,7 +143,7 @@ public async Task set_metadata()
143143
.Index()
144144
.Find()
145145
.Add(Constants.Relations.Metadata, $"streams/{StreamId}/metadata").Self()
146-
.Add(Constants.Relations.Feed, $"streams/{StreamId}"));
146+
.Add(Constants.Relations.Feed, $"streams/{StreamId}", StreamId));
147147
}
148148
}
149149

src/SqlStreamStore.HAL.Tests/StreamNavigationTests.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ public async Task read_head_link_no_messages(string path, string root, HttpStatu
4949
.FromRequestMessage(response.RequestMessage)
5050
.Index()
5151
.Find()
52-
.Add(Constants.Relations.Self, $"{path}?{LastLinkQuery}")
52+
.Add(Constants.Relations.Self, $"{path}?{LastLinkQuery}", !IsAllStream(path) ? StreamId : null)
5353
.Add(Constants.Relations.Last, $"{path}?{LastLinkQuery}")
5454
.Add(Constants.Relations.First, $"{path}?{FirstLinkQuery}")
55-
.Add(Constants.Relations.Feed, $"{path}?{LastLinkQuery}");
55+
.Add(Constants.Relations.Feed, $"{path}?{LastLinkQuery}", !IsAllStream(path) ? StreamId : null);
5656

5757
if(!IsAllStream(path))
5858
{
@@ -88,11 +88,11 @@ public async Task read_head_link_when_multiple_pages(string path, string root)
8888
.FromRequestMessage(response.RequestMessage)
8989
.Index()
9090
.Find()
91-
.Add(Constants.Relations.Self, $"{path}?{LastLinkQuery}")
91+
.Add(Constants.Relations.Self, $"{path}?{LastLinkQuery}", !IsAllStream(path) ? StreamId : null)
9292
.Add(Constants.Relations.Last, $"{path}?{LastLinkQuery}")
9393
.Add(Constants.Relations.Previous, $"{path}?d=b&m=20&p=9&e=0")
9494
.Add(Constants.Relations.First, $"{path}?{FirstLinkQuery}")
95-
.Add(Constants.Relations.Feed, $"{path}?{LastLinkQuery}");
95+
.Add(Constants.Relations.Feed, $"{path}?{LastLinkQuery}", !IsAllStream(path) ? StreamId : null);
9696

9797
if(!IsAllStream($"{path}"))
9898
{
@@ -122,10 +122,10 @@ public async Task read_first_link(string path, string root)
122122
.FromRequestMessage(response.RequestMessage)
123123
.Index()
124124
.Find()
125-
.Add(Constants.Relations.Self, $"{path}?{FirstLinkQuery}")
125+
.Add(Constants.Relations.Self, $"{path}?{FirstLinkQuery}", !IsAllStream(path) ? StreamId : null)
126126
.Add(Constants.Relations.Last, $"{path}?{LastLinkQuery}")
127127
.Add(Constants.Relations.First, $"{path}?{FirstLinkQuery}")
128-
.Add(Constants.Relations.Feed, $"{path}?{FirstLinkQuery}");
128+
.Add(Constants.Relations.Feed, $"{path}?{FirstLinkQuery}", !IsAllStream(path) ? StreamId : null);
129129

130130
if(!IsAllStream(path))
131131
{
@@ -151,11 +151,11 @@ public async Task read_first_link_when_multiple_pages(string path, string root)
151151
.FromRequestMessage(response.RequestMessage)
152152
.Index()
153153
.Find()
154-
.Add(Constants.Relations.Self, $"{path}?{FirstLinkQuery}")
154+
.Add(Constants.Relations.Self, $"{path}?{FirstLinkQuery}", !IsAllStream(path) ? StreamId : null)
155155
.Add(Constants.Relations.Last, $"{path}?{LastLinkQuery}")
156156
.Add(Constants.Relations.Next, $"{path}?d=f&m=20&p=20&e=0")
157157
.Add(Constants.Relations.First, $"{path}?{FirstLinkQuery}")
158-
.Add(Constants.Relations.Feed, $"{path}?{FirstLinkQuery}");
158+
.Add(Constants.Relations.Feed, $"{path}?{FirstLinkQuery}", !IsAllStream(path) ? StreamId : null);
159159

160160
if(!IsAllStream($"{path}"))
161161
{

src/SqlStreamStore.HAL/AllStream/AllStreamResource.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,13 @@ public async Task<Response> Get(
7878
.FromOperation(operation)
7979
.Add(
8080
Constants.Relations.Message,
81-
$"streams/{message.StreamId}/{message.StreamVersion}")
81+
$"streams/{message.StreamId}/{message.StreamVersion}",
82+
$"{message.StreamId}@{message.StreamVersion}")
8283
.Self()
83-
.Add(Constants.Relations.Feed, $"streams/{message.StreamId}")))));
84+
.Add(
85+
Constants.Relations.Feed,
86+
$"streams/{message.StreamId}",
87+
message.StreamId)))));
8488

8589
if(operation.FromPositionInclusive == Position.End)
8690
{

src/SqlStreamStore.HAL/AllStreamMessage/AllStreamMessageResource.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ public async Task<Response> Get(
2929
.FromOperation(operation)
3030
.Index()
3131
.Find()
32-
.Add(Constants.Relations.Message, $"stream/{message.Position}").Self()
32+
.Add(
33+
Constants.Relations.Message,
34+
$"stream/{message.Position}",
35+
$"{message.StreamId}@{message.StreamVersion}").Self()
3336
.Add(
3437
Constants.Relations.Feed,
3538
Links.FormatBackwardLink(

src/SqlStreamStore.HAL/StreamMessage/StreamMessageLinkExtensions.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,12 @@ public static Links StreamMessageNavigation(
2828
StreamId(operation),
2929
Constants.MaxCount,
3030
StreamVersion.End,
31-
false))
32-
.Add(Constants.Relations.Message, $"{StreamId(operation)}/{operation.StreamVersion}").Self();
31+
false),
32+
operation.StreamId)
33+
.Add(
34+
Constants.Relations.Message,
35+
$"{StreamId(operation)}/{operation.StreamVersion}",
36+
$"{operation.StreamId}@{operation.StreamVersion}").Self();
3337
}
3438

3539
private static string StreamId(ReadStreamMessageByStreamVersionOperation operation)

src/SqlStreamStore.HAL/StreamMetadata/StreamMetadataLinkExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ public static Links StreamMetadataNavigation(this Links links, SetStreamMetadata
1010

1111
private static Links StreamMetadataNavigation(this Links links, string streamId)
1212
=> links.Add(Constants.Relations.Metadata, $"streams/{streamId}/{Constants.Streams.Metadata}").Self()
13-
.Add(Constants.Relations.Feed, $"streams/{streamId}");
13+
.Add(Constants.Relations.Feed, $"streams/{streamId}", streamId);
1414
}
1515
}

src/SqlStreamStore.HAL/Streams/StreamResource.cs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,15 @@ public async Task<Response> Post(
3232
if(operation.ExpectedVersion < Constants.Headers.MinimumExpectedVersion)
3333
{
3434
return new HalJsonResponse(new HALResponse(new
35-
{
36-
type = typeof(WrongExpectedVersionException).Name,
37-
title = "Wrong expected version.",
38-
detail = $"Expected header '{Constants.Headers.ExpectedVersion}' to have an expected version => {ExpectedVersion.NoStream}."
39-
}), 400);
35+
{
36+
type = typeof(WrongExpectedVersionException).Name,
37+
title = "Wrong expected version.",
38+
detail =
39+
$"Expected header '{Constants.Headers.ExpectedVersion}' to have an expected version => {ExpectedVersion.NoStream}."
40+
}),
41+
400);
4042
}
41-
43+
4244
var result = await operation.Invoke(_streamStore, cancellationToken);
4345

4446
var links = Links
@@ -123,9 +125,13 @@ public async Task<Response> Get(ReadStreamOperation operation, CancellationToken
123125
.FromOperation(operation)
124126
.Add(
125127
Constants.Relations.Message,
126-
$"{Constants.Streams.Stream}/{message.StreamId}/{message.StreamVersion}")
128+
$"{Constants.Streams.Stream}/{message.StreamId}/{message.StreamVersion}",
129+
$"{message.StreamId}@{message.StreamVersion}")
127130
.Self()
128-
.Add(Constants.Relations.Feed, $"streams/{message.StreamId}")))),
131+
.Add(
132+
Constants.Relations.Feed,
133+
$"streams/{message.StreamId}",
134+
message.StreamId)))),
129135
page.Status == PageReadStatus.StreamNotFound ? 404 : 200);
130136

131137
if(page.TryGetETag(out var eTag))

src/SqlStreamStore.HAL/Streams/LinkExtensions.cs renamed to src/SqlStreamStore.HAL/Streams/StreamsLinkExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public static Links StreamsNavigation(this Links links, ReadStreamPage page, Rea
3434
operation.EmbedPayload));
3535
}
3636

37-
links.Add(Constants.Relations.Feed, operation.Self).Self();
37+
links.Add(Constants.Relations.Feed, operation.Self, operation.StreamId).Self();
3838

3939
if(operation.Self != last && !page.IsEnd)
4040
{

0 commit comments

Comments
 (0)