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

Commit f7249f4

Browse files
fixin metadata links
1 parent 5ffdc7a commit f7249f4

3 files changed

Lines changed: 26 additions & 12 deletions

File tree

src/SqlStreamStore.HAL.Tests/StreamMetadataTests.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ await _fixture.HttpClient.SendAsync(
4040
((string) resource.State.metadataJson).ShouldBeNull();
4141

4242
resource.ShouldLink(Constants.Relations.Self, "metadata");
43-
resource.ShouldLink(Constants.Relations.Feed, "../");
43+
resource.ShouldLink(Constants.Relations.Metadata, "metadata");
44+
resource.ShouldLink(Constants.Relations.Feed, $"../{StreamId}");
4445
}
4546
}
4647

@@ -85,7 +86,8 @@ await _fixture.HttpClient.SendAsync(
8586
})).ShouldBeTrue();
8687

8788
resource.ShouldLink(Constants.Relations.Self, "metadata");
88-
resource.ShouldLink(Constants.Relations.Feed, "../");
89+
resource.ShouldLink(Constants.Relations.Metadata, "metadata");
90+
resource.ShouldLink(Constants.Relations.Feed, $"../{StreamId}");
8991
}
9092
}
9193

@@ -126,7 +128,8 @@ public async Task set_metadata()
126128
})).ShouldBeTrue();
127129

128130
resource.ShouldLink(Constants.Relations.Self, "metadata");
129-
resource.ShouldLink(Constants.Relations.Feed, "../");
131+
resource.ShouldLink(Constants.Relations.Metadata, "metadata");
132+
resource.ShouldLink(Constants.Relations.Feed, $"../{StreamId}");
130133
}
131134
}
132135

src/SqlStreamStore.HAL/Resources/Schema/SetStreamMetadata.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{
2+
"title": "Set Stream Metadata",
23
"type": "object",
34
"$schema": "http://json-schema.org/draft-07/hyper-schema#",
45
"properties": {

src/SqlStreamStore.HAL/Resources/StreamMetadataResource.cs

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,6 @@ namespace SqlStreamStore.HAL.Resources
88

99
internal class StreamMetadataResource : IResource
1010
{
11-
private static readonly Link[] s_links =
12-
{
13-
new Link(Constants.Relations.Self, Constants.Streams.Metadata),
14-
new Link(Constants.Relations.Metadata, Constants.Streams.Metadata),
15-
new Link(Constants.Relations.Feed, "../")
16-
};
17-
1811
private readonly IStreamStore _streamStore;
1912

2013
public HttpMethod[] Options { get; } =
@@ -46,7 +39,10 @@ public async Task<Response> GetStreamMetadata(
4639
result.MaxCount,
4740
result.MetadataJson
4841
})
49-
.AddLinks(s_links)
42+
.AddLinks(
43+
Links.Self(),
44+
Links.Metadata(),
45+
Links.Feed(operation))
5046
.AddEmbeddedResource(
5147
Constants.Relations.Metadata,
5248
Schemas.SetStreamMetadata),
@@ -68,9 +64,23 @@ public async Task<Response> SetStreamMetadata(
6864
operation.MaxCount,
6965
operation.MetadataJson
7066
})
71-
.AddLinks(s_links));
67+
.AddLinks(
68+
Links.Self(),
69+
Links.Metadata(),
70+
Links.Feed(operation)));
7271

7372
return response;
7473
}
74+
75+
private static class Links
76+
{
77+
public static Link Self() => new Link(Constants.Relations.Self, Constants.Streams.Metadata);
78+
public static Link Metadata() => new Link(Constants.Relations.Metadata, Constants.Streams.Metadata);
79+
public static Link Feed(GetStreamMetadataOperation operation) => Link(operation.StreamId);
80+
public static Link Feed(SetStreamMetadataOperation operation) => Link(operation.StreamId);
81+
82+
private static Link Link(string streamId)
83+
=> new Link(Constants.Relations.Feed, $"../{streamId}");
84+
}
7585
}
7686
}

0 commit comments

Comments
 (0)