From 476a6141b71d3def4a777ce934fec0d0bca8cd28 Mon Sep 17 00:00:00 2001 From: crupest Date: Sun, 4 Dec 2022 18:11:06 +0800 Subject: Develop secret api. v4 --- .../CrupestApi/CrupestApi.Commons/DatabaseHelper.cs | 13 +++++++++++++ .../CrupestApi.Commons/EntityNotExistException.cs | 8 ++++++++ .../CrupestApi/CrupestApi.Commons/HttpResponseAction.cs | 3 ++- docker/crupest-api/CrupestApi/CrupestApi.Commons/Json.cs | 15 ++++++++++++++- 4 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 docker/crupest-api/CrupestApi/CrupestApi.Commons/DatabaseHelper.cs create mode 100644 docker/crupest-api/CrupestApi/CrupestApi.Commons/EntityNotExistException.cs (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons') diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/DatabaseHelper.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/DatabaseHelper.cs new file mode 100644 index 0000000..9eb6a08 --- /dev/null +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/DatabaseHelper.cs @@ -0,0 +1,13 @@ +namespace CrupestApi.Commons; + + +public static class DatabaseHelper +{ + public static string GenerateUpdateColumnString(this IEnumerable updateColumnList, IEnumerable>? paramNameMap = null) + { + paramNameMap = paramNameMap ?? Enumerable.Empty>(); + var paramNameDictionary = new Dictionary(paramNameMap); + + return string.Join(", ", updateColumnList.Select(x => $"{x} = @{paramNameDictionary.GetValueOrDefault(x) ?? x}")); + } +} \ No newline at end of file diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/EntityNotExistException.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/EntityNotExistException.cs new file mode 100644 index 0000000..0e1f4f4 --- /dev/null +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/EntityNotExistException.cs @@ -0,0 +1,8 @@ +namespace CrupestApi.Commons; + +public class EntityNotExistException : Exception +{ + public EntityNotExistException() { } + public EntityNotExistException(string message) : base(message) { } + public EntityNotExistException(string message, Exception inner) : base(message, inner) { } +} diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/HttpResponseAction.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/HttpResponseAction.cs index 4b76066..768a6d2 100644 --- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/HttpResponseAction.cs +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/HttpResponseAction.cs @@ -1,3 +1,4 @@ namespace CrupestApi.Commons; -public delegate Task HttpResponseAction(HttpResponse response); +public delegate void HttpResponseAction(HttpResponse response); +public delegate Task AsyncHttpResponseAction(HttpResponse response); diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Json.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Json.cs index 8409a96..1d8106c 100644 --- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Json.cs +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Json.cs @@ -18,8 +18,16 @@ public static class CrupestApiJsonExtensions return services; } + public static async Task WriteJsonAsync(this HttpResponse response, T bodyObject, int statusCode, HttpResponseAction? beforeWriteBody, CancellationToken cancellationToken = default) + { + await response.WriteJsonAsync(bodyObject, statusCode, (context) => + { + beforeWriteBody?.Invoke(context); + return Task.CompletedTask; + }, cancellationToken); + } - public static async Task WriteJsonAsync(this HttpResponse response, T bodyObject, int statusCode = 200, HttpResponseAction? beforeWriteBody = null, CancellationToken cancellationToken = default) + public static async Task WriteJsonAsync(this HttpResponse response, T bodyObject, int statusCode = 200, AsyncHttpResponseAction? beforeWriteBody = null, CancellationToken cancellationToken = default) { var jsonOptions = response.HttpContext.RequestServices.GetRequiredService>(); byte[] json = JsonSerializer.SerializeToUtf8Bytes(bodyObject, jsonOptions.Value); @@ -36,4 +44,9 @@ public static class CrupestApiJsonExtensions await response.Body.WriteAsync(json, cancellationToken); } + + public static async Task WriteMessageAsync(this HttpResponse response, string message, int statusCode = 200, HttpResponseAction? beforeWriteBody = null, CancellationToken cancellationToken = default) + { + await response.WriteJsonAsync(new ErrorBody(message), statusCode: statusCode, beforeWriteBody, cancellationToken); + } } -- cgit v1.2.3