diff options
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons')
4 files changed, 37 insertions, 2 deletions
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<string> updateColumnList, IEnumerable<KeyValuePair<string, string>>? paramNameMap = null) + { + paramNameMap = paramNameMap ?? Enumerable.Empty<KeyValuePair<string, string>>(); + var paramNameDictionary = new Dictionary<string, string>(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<T>(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<T>(this HttpResponse response, T bodyObject, int statusCode = 200, HttpResponseAction? beforeWriteBody = null, CancellationToken cancellationToken = default) + public static async Task WriteJsonAsync<T>(this HttpResponse response, T bodyObject, int statusCode = 200, AsyncHttpResponseAction? beforeWriteBody = null, CancellationToken cancellationToken = default) { var jsonOptions = response.HttpContext.RequestServices.GetRequiredService<IOptionsSnapshot<JsonSerializerOptions>>(); byte[] json = JsonSerializer.SerializeToUtf8Bytes<T>(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); + } } |