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

Commit d8df1fa

Browse files
enabling additional forms
1 parent e6ad8ef commit d8df1fa

9 files changed

Lines changed: 47 additions & 30 deletions

File tree

src/SqlStreamStore.HAL/Constants.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public static class Relations
3232
public const string Message = "streamStore:message";
3333
public const string Metadata = "streamStore:metadata";
3434
public const string AppendToStream = "streamStore:append";
35+
public const string Delete = "streamStore:delete";
3536
}
3637

3738
public static class Streams

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

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,5 @@
3030
"rows": 30
3131
}
3232
}
33-
},
34-
"$form": [
35-
"messageId",
36-
"type",
37-
{
38-
"key": "jsonData",
39-
"type": "textarea"
40-
},
41-
{
42-
"key": "jsonMetadata",
43-
"type": "textarea"
44-
}
45-
]
33+
}
4634
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-07/hyper-schema#",
3+
"title": "Delete Stream",
4+
"type": "object"
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-07/hyper-schema#",
3+
"title": "Delete Stream Message",
4+
"type": "object"
5+
}

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@
1111
"minimum": 1
1212
},
1313
"metadataJson": {
14-
"type": "object"
14+
"type": "object",
15+
"x-schema-form": {
16+
"key": "metadataJson",
17+
"type": "textarea",
18+
"rows": 30
19+
}
1520
}
1621
}
1722
}

src/SqlStreamStore.HAL/Resources/Schemas.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,23 @@
44
using System.Collections.Concurrent;
55
using System.IO;
66
using System.Reflection;
7+
using Halcyon.HAL;
78
using Newtonsoft.Json;
89
using Newtonsoft.Json.Linq;
910

1011
internal static class Schemas
1112
{
12-
private static readonly ConcurrentDictionary<string, JObject> s_schemas
13-
= new ConcurrentDictionary<string, JObject>();
13+
private static readonly ConcurrentDictionary<string, HALResponse> s_schemas
14+
= new ConcurrentDictionary<string, HALResponse>();
1415

15-
public static JObject AppendToStream => GetSchema(nameof(AppendToStream));
16-
public static JObject SetStreamMetadata => GetSchema(nameof(SetStreamMetadata));
16+
public static HALResponse AppendToStream => GetSchema(nameof(AppendToStream));
17+
public static HALResponse SetStreamMetadata => GetSchema(nameof(SetStreamMetadata));
18+
public static HALResponse DeleteStream => GetSchema(nameof(DeleteStream));
19+
public static HALResponse DeleteStreamMessage => GetSchema(nameof(DeleteStreamMessage));
1720

18-
private static JObject GetSchema(string name) => s_schemas.GetOrAdd(name, ReadSchema);
21+
private static HALResponse GetSchema(string name) => s_schemas.GetOrAdd(name, ReadSchema);
1922

20-
private static JObject ReadSchema(string name)
23+
private static HALResponse ReadSchema(string name)
2124
{
2225
using(Stream stream = typeof(Schemas)
2326
.GetTypeInfo().Assembly
@@ -30,7 +33,7 @@ private static JObject ReadSchema(string name)
3033

3134
using(var reader = new JsonTextReader(new StreamReader(stream)))
3235
{
33-
return JObject.Load(reader);
36+
return new HALResponse(JObject.Load(reader));
3437
}
3538
}
3639
}

src/SqlStreamStore.HAL/Resources/StreamMessageResource.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ public async Task<Response> GetMessage(
7272
payload,
7373
metadata = message.JsonMetadata
7474
})
75+
.AddEmbeddedResource(
76+
Constants.Relations.Delete,
77+
Schemas.DeleteStreamMessage)
7578
.AddLinks(Links.Self(operation))
7679
.AddLinks(Links.Navigation(operation, message))
7780
.AddLinks(Links.Message(operation)));

src/SqlStreamStore.HAL/Resources/StreamMetadataResource.cs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,17 @@ public async Task<Response> GetStreamMetadata(
3939
var result = await operation.Invoke(_streamStore, cancellationToken);
4040

4141
var response = new Response(new HALResponse(new
42-
{
43-
result.StreamId,
44-
result.MetadataStreamVersion,
45-
result.MaxAge,
46-
result.MaxCount,
47-
result.MetadataJson
48-
}).AddLinks(s_links),
42+
{
43+
result.StreamId,
44+
result.MetadataStreamVersion,
45+
result.MaxAge,
46+
result.MaxCount,
47+
result.MetadataJson
48+
})
49+
.AddLinks(s_links)
50+
.AddEmbeddedResource(
51+
Constants.Relations.Metadata,
52+
Schemas.SetStreamMetadata),
4953
result.MetadataStreamVersion >= 0 ? 200 : 404);
5054

5155
return response;

src/SqlStreamStore.HAL/Resources/StreamResource.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,11 @@ public async Task<Response> GetPage(ReadStreamOperation operation, CancellationT
7676
.AddLinks(Links.Feed(operation))
7777
.AddLinks(Links.Metadata(operation))
7878
.AddEmbeddedResource(
79-
Constants.Relations.AppendToStream,
80-
new HALResponse(Schemas.AppendToStream))
79+
Constants.Relations.AppendToStream,
80+
Schemas.AppendToStream)
81+
.AddEmbeddedResource(
82+
Constants.Relations.Delete,
83+
Schemas.DeleteStream)
8184
.AddEmbeddedCollection(
8285
Constants.Relations.Message,
8386
streamMessages.Zip(

0 commit comments

Comments
 (0)