Skip to content

Commit 61443b7

Browse files
authored
Merge pull request #30 from futurum-dev/feature/QueryMetadataRouteDefinitionInitialBuilder-add-RouteWithParameter
QueryMetadataRouteDefinitionInitialBuilder - add RouteWithParameters
2 parents c3c6dde + 50efb64 commit 61443b7

File tree

5 files changed

+192
-5
lines changed

5 files changed

+192
-5
lines changed

sample/Futurum.WebApiEndpoint.Sample/Blog/ApiEndpointDefinition.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public void Configure(ApiEndpointDefinitionBuilder definitionBuilder)
1212
.Command<BlogDelete.ApiEndpoint>(builder => builder.Delete("blog/{Id}", ("Id", MetadataRouteParameterDefinitionType.Path, typeof(long)))
1313
.Version(WebApiEndpointVersions.V1_0).Summary("Delete Blog").Description("Delete Blog"))
1414
.Query<BlogGet.ApiEndpoint>(builder => builder.Route("blog").Version(WebApiEndpointVersions.V1_0).Summary("Get Blogs").Description("Get Blogs"))
15-
.Query<BlogGetById.ApiEndpoint>(builder => builder.Route("blog/{Id}")
15+
.Query<BlogGetById.ApiEndpoint>(builder => builder.RouteWithParameters("blog/{Id}")
1616
.Version(WebApiEndpointVersions.V1_0).Summary("Get Blogs By Id").Description("Get Blogs By Id"))
1717
.Command<BlogUpdate.ApiEndpoint>(builder => builder.Put("blog").Version(WebApiEndpointVersions.V1_0).Summary("Update Blog").Description("Update Blog"))
1818
.Query<BlogGetAsyncEnumerable.ApiEndpoint>(builder => builder.Route("blog-async").Version(WebApiEndpointVersions.V1_0).Summary("Get Blogs").Description("Get Blogs"));

src/Futurum.WebApiEndpoint/Metadata/CommandMetadataRouteDefinitionInitialBuilder.cs

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,20 @@ public CommandMetadataRouteDefinitionInitialBuilder(Type apiEndpointType)
1919

2020
/// <summary>
2121
/// Configure Post <paramref name="route"/>
22+
/// <para />
23+
/// Defaults values to the following:
24+
/// <list type="bullet">
25+
/// <item>
26+
/// <description>
27+
/// <see cref="MetadataRouteDefinition.SuccessStatusCode"/> = 201
28+
/// </description>
29+
/// </item>
30+
/// <item>
31+
/// <description>
32+
/// <see cref="MetadataRouteDefinition.FailedStatusCode"/> = 400
33+
/// </description>
34+
/// </item>
35+
/// </list>
2236
/// </summary>
2337
public MetadataRouteDefinitionBuilder Post(string route)
2438
{
@@ -33,6 +47,20 @@ public MetadataRouteDefinitionBuilder Post(string route)
3347
/// <summary>
3448
/// Configure Post <paramref name="route"/> with <paramref name="parameterDefinitions"/>
3549
/// <para>You only need to specify the parameters that DO NOT use <see cref="MapFromAttribute"/></para>
50+
/// <para />
51+
/// Defaults values to the following:
52+
/// <list type="bullet">
53+
/// <item>
54+
/// <description>
55+
/// <see cref="MetadataRouteDefinition.SuccessStatusCode"/> = 201
56+
/// </description>
57+
/// </item>
58+
/// <item>
59+
/// <description>
60+
/// <see cref="MetadataRouteDefinition.FailedStatusCode"/> = 400
61+
/// </description>
62+
/// </item>
63+
/// </list>
3664
/// </summary>
3765
public MetadataRouteDefinitionBuilder Post(string route, params (string name, MetadataRouteParameterDefinitionType parameterDefinitionType, Type type)[] parameterDefinitions)
3866
{
@@ -47,6 +75,20 @@ public MetadataRouteDefinitionBuilder Post(string route, params (string name, Me
4775

4876
/// <summary>
4977
/// Configure Put <paramref name="route"/>
78+
/// <para />
79+
/// Defaults values to the following:
80+
/// <list type="bullet">
81+
/// <item>
82+
/// <description>
83+
/// <see cref="MetadataRouteDefinition.SuccessStatusCode"/> = 201
84+
/// </description>
85+
/// </item>
86+
/// <item>
87+
/// <description>
88+
/// <see cref="MetadataRouteDefinition.FailedStatusCode"/> = 404
89+
/// </description>
90+
/// </item>
91+
/// </list>
5092
/// </summary>
5193
public MetadataRouteDefinitionBuilder Put(string route)
5294
{
@@ -61,6 +103,20 @@ public MetadataRouteDefinitionBuilder Put(string route)
61103
/// <summary>
62104
/// Configure Put <paramref name="route"/> with <paramref name="parameterDefinitions"/>
63105
/// <para>You only need to specify the parameters that DO NOT use <see cref="MapFromAttribute"/></para>
106+
/// <para />
107+
/// Defaults values to the following:
108+
/// <list type="bullet">
109+
/// <item>
110+
/// <description>
111+
/// <see cref="MetadataRouteDefinition.SuccessStatusCode"/> = 201
112+
/// </description>
113+
/// </item>
114+
/// <item>
115+
/// <description>
116+
/// <see cref="MetadataRouteDefinition.FailedStatusCode"/> = 404
117+
/// </description>
118+
/// </item>
119+
/// </list>
64120
/// </summary>
65121
public MetadataRouteDefinitionBuilder Put(string route, params (string name, MetadataRouteParameterDefinitionType parameterDefinitionType, Type type)[] parameterDefinitions)
66122
{
@@ -75,6 +131,20 @@ public MetadataRouteDefinitionBuilder Put(string route, params (string name, Met
75131

76132
/// <summary>
77133
/// Configure Patch <paramref name="route"/>
134+
/// <para />
135+
/// Defaults values to the following:
136+
/// <list type="bullet">
137+
/// <item>
138+
/// <description>
139+
/// <see cref="MetadataRouteDefinition.SuccessStatusCode"/> = 200
140+
/// </description>
141+
/// </item>
142+
/// <item>
143+
/// <description>
144+
/// <see cref="MetadataRouteDefinition.FailedStatusCode"/> = 404
145+
/// </description>
146+
/// </item>
147+
/// </list>
78148
/// </summary>
79149
public MetadataRouteDefinitionBuilder Patch(string route)
80150
{
@@ -89,6 +159,20 @@ public MetadataRouteDefinitionBuilder Patch(string route)
89159
/// <summary>
90160
/// Configure Patch <paramref name="route"/> with <paramref name="parameterDefinitions"/>
91161
/// <para>You only need to specify the parameters that DO NOT use <see cref="MapFromAttribute"/></para>
162+
/// <para />
163+
/// Defaults values to the following:
164+
/// <list type="bullet">
165+
/// <item>
166+
/// <description>
167+
/// <see cref="MetadataRouteDefinition.SuccessStatusCode"/> = 200
168+
/// </description>
169+
/// </item>
170+
/// <item>
171+
/// <description>
172+
/// <see cref="MetadataRouteDefinition.FailedStatusCode"/> = 404
173+
/// </description>
174+
/// </item>
175+
/// </list>
92176
/// </summary>
93177
public MetadataRouteDefinitionBuilder Patch(string route, params (string name, MetadataRouteParameterDefinitionType parameterDefinitionType, Type type)[] parameterDefinitions)
94178
{
@@ -103,6 +187,20 @@ public MetadataRouteDefinitionBuilder Patch(string route, params (string name, M
103187

104188
/// <summary>
105189
/// Configure Delete <paramref name="route"/>
190+
/// <para />
191+
/// Defaults values to the following:
192+
/// <list type="bullet">
193+
/// <item>
194+
/// <description>
195+
/// <see cref="MetadataRouteDefinition.SuccessStatusCode"/> = 200
196+
/// </description>
197+
/// </item>
198+
/// <item>
199+
/// <description>
200+
/// <see cref="MetadataRouteDefinition.FailedStatusCode"/> = 404
201+
/// </description>
202+
/// </item>
203+
/// </list>
106204
/// </summary>
107205
public MetadataRouteDefinitionBuilder Delete(string route)
108206
{
@@ -117,6 +215,20 @@ public MetadataRouteDefinitionBuilder Delete(string route)
117215
/// <summary>
118216
/// Configure Delete <paramref name="route"/> with <paramref name="parameterDefinitions"/>
119217
/// <para>You only need to specify the parameters that DO NOT use <see cref="MapFromAttribute"/></para>
218+
/// <para />
219+
/// Defaults values to the following:
220+
/// <list type="bullet">
221+
/// <item>
222+
/// <description>
223+
/// <see cref="MetadataRouteDefinition.SuccessStatusCode"/> = 200
224+
/// </description>
225+
/// </item>
226+
/// <item>
227+
/// <description>
228+
/// <see cref="MetadataRouteDefinition.FailedStatusCode"/> = 404
229+
/// </description>
230+
/// </item>
231+
/// </list>
120232
/// </summary>
121233
public MetadataRouteDefinitionBuilder Delete(string route, params (string name, MetadataRouteParameterDefinitionType parameterDefinitionType, Type type)[] parameterDefinitions)
122234
{

src/Futurum.WebApiEndpoint/Metadata/QueryMetadataRouteDefinitionInitialBuilder.cs

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,20 @@ public QueryMetadataRouteDefinitionInitialBuilder(Type apiEndpointType)
1919

2020
/// <summary>
2121
/// Configure <paramref name="route"/>
22+
/// <para />
23+
/// Defaults values to the following:
24+
/// <list type="bullet">
25+
/// <item>
26+
/// <description>
27+
/// <see cref="MetadataRouteDefinition.SuccessStatusCode"/> = 200
28+
/// </description>
29+
/// </item>
30+
/// <item>
31+
/// <description>
32+
/// <see cref="MetadataRouteDefinition.FailedStatusCode"/> = 503
33+
/// </description>
34+
/// </item>
35+
/// </list>
2236
/// </summary>
2337
public MetadataRouteDefinitionBuilder Route(string route)
2438
{
@@ -29,10 +43,51 @@ public MetadataRouteDefinitionBuilder Route(string route)
2943
_metadataRouteDefinitionBuilder = metadataRouteDefinitionBuilder;
3044
return metadataRouteDefinitionBuilder;
3145
}
46+
47+
/// <summary>
48+
/// Configure <paramref name="route"/> with parameters
49+
/// <para />
50+
/// Defaults values to the following:
51+
/// <list type="bullet">
52+
/// <item>
53+
/// <description>
54+
/// <see cref="MetadataRouteDefinition.SuccessStatusCode"/> = 200
55+
/// </description>
56+
/// </item>
57+
/// <item>
58+
/// <description>
59+
/// <see cref="MetadataRouteDefinition.FailedStatusCode"/> = 404
60+
/// </description>
61+
/// </item>
62+
/// </list>
63+
/// </summary>
64+
public MetadataRouteDefinitionBuilder RouteWithParameters(string route)
65+
{
66+
var metadataRouteDefinition = new MetadataRouteDefinition(MetadataRouteHttpMethod.Get, route, null, new(),
67+
null, 200, 404, Option<Action<RouteHandlerBuilder>>.None, Option<MetadataSecurityDefinition>.None);
68+
69+
var metadataRouteDefinitionBuilder = new MetadataRouteDefinitionBuilder(_apiEndpointType, metadataRouteDefinition);
70+
_metadataRouteDefinitionBuilder = metadataRouteDefinitionBuilder;
71+
return metadataRouteDefinitionBuilder;
72+
}
3273

3374
/// <summary>
3475
/// Configure <paramref name="route"/> with <paramref name="parameterDefinitions"/>
3576
/// <para>You only need to specify the parameters that DO NOT use <see cref="MapFromAttribute"/></para>
77+
/// <para />
78+
/// Defaults values to the following:
79+
/// <list type="bullet">
80+
/// <item>
81+
/// <description>
82+
/// <see cref="MetadataRouteDefinition.SuccessStatusCode"/> = 200
83+
/// </description>
84+
/// </item>
85+
/// <item>
86+
/// <description>
87+
/// <see cref="MetadataRouteDefinition.FailedStatusCode"/> = 404
88+
/// </description>
89+
/// </item>
90+
/// </list>
3691
/// </summary>
3792
public MetadataRouteDefinitionBuilder Route(string route, params (string name, MetadataRouteParameterDefinitionType parameterDefinitionType, Type type)[] parameterDefinitions)
3893
{

test/Futurum.WebApiEndpoint.Tests/Metadata/CommandMetadataRouteDefinitionInitialBuilderTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public void post()
3333
}
3434

3535
[Fact]
36-
public void post_with_parameters()
36+
public void post_with_parameters_specified()
3737
{
3838
var route = Guid.NewGuid().ToString();
3939
var parameterName = "parameter1";
@@ -79,7 +79,7 @@ public void put()
7979
}
8080

8181
[Fact]
82-
public void put_with_parameters()
82+
public void put_with_parameters_specified()
8383
{
8484
var route = Guid.NewGuid().ToString();
8585
var parameterName = "parameter1";
@@ -125,7 +125,7 @@ public void patch()
125125
}
126126

127127
[Fact]
128-
public void patch_with_parameters()
128+
public void patch_with_parameters_specified()
129129
{
130130
var route = Guid.NewGuid().ToString();
131131
var parameterName = "parameter1";
@@ -171,7 +171,7 @@ public void delete()
171171
}
172172

173173
[Fact]
174-
public void delete_with_parameters()
174+
public void delete_with_parameters_specified()
175175
{
176176
var route = Guid.NewGuid().ToString();
177177
var parameterName = "parameter1";

test/Futurum.WebApiEndpoint.Tests/Metadata/QueryMetadataRouteDefinitionInitialBuilderTests.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,26 @@ public void check()
3434

3535
[Fact]
3636
public void check_with_parameters()
37+
{
38+
var route = Guid.NewGuid().ToString();
39+
40+
IMetadataRouteDefinitionBuilder builder = new QueryMetadataRouteDefinitionInitialBuilder(typeof(ApiEndpoint))
41+
.RouteWithParameters(route);
42+
43+
var metadataRouteDefinitions = builder.Build();
44+
45+
metadataRouteDefinitions.Count().Should().Be(1);
46+
47+
var metadataRouteDefinition = metadataRouteDefinitions.First();
48+
metadataRouteDefinition.RouteTemplate.Should().Be(route);
49+
metadataRouteDefinition.HttpMethod.Should().Be(MetadataRouteHttpMethod.Get);
50+
metadataRouteDefinition.SuccessStatusCode.Should().Be(200);
51+
metadataRouteDefinition.FailedStatusCode.Should().Be(404);
52+
metadataRouteDefinition.ManualParameterDefinitions.Should().BeEmpty();
53+
}
54+
55+
[Fact]
56+
public void check_with_parameters_specified()
3757
{
3858
var route = Guid.NewGuid().ToString();
3959
var parameterName = "parameter1";

0 commit comments

Comments
 (0)