aboutsummaryrefslogtreecommitdiff
path: root/docker/crupest-api/CrupestApi/CrupestApi.Commons
diff options
context:
space:
mode:
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons')
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons/DatabaseHelper.cs13
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons/EntityNotExistException.cs8
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons/HttpResponseAction.cs3
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons/Json.cs15
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);
+ }
}