aboutsummaryrefslogtreecommitdiff
path: root/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud
diff options
context:
space:
mode:
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud')
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudService.cs17
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudServiceCollectionExtensions.cs10
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs5
3 files changed, 22 insertions, 10 deletions
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudService.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudService.cs
index d371c84..184ac0a 100644
--- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudService.cs
+++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudService.cs
@@ -20,15 +20,20 @@ public class CrudService<TEntity> : IDisposable where TEntity : class
_jsonHelper = jsonHelper;
_logger = loggerFactory.CreateLogger<CrudService<TEntity>>();
- if (!_table.CheckExistence(_dbConnection))
- {
- DoInitializeDatabase(_dbConnection);
- }
+ CheckDatabase(_dbConnection);
}
public EntityJsonHelper<TEntity> JsonHelper => _jsonHelper;
- public virtual void DoInitializeDatabase(IDbConnection connection)
+ protected virtual void CheckDatabase(IDbConnection dbConnection)
+ {
+ if (!_table.CheckExistence(dbConnection))
+ {
+ DoInitializeDatabase(dbConnection);
+ }
+ }
+
+ private void DoInitializeDatabase(IDbConnection connection)
{
using var transaction = connection.BeginTransaction();
connection.Execute(_table.GenerateCreateTableSql(), transaction: transaction);
@@ -59,7 +64,7 @@ public class CrudService<TEntity> : IDisposable where TEntity : class
return (string)key;
}
- public void Update(object key, JsonElement jsonElement)
+ public void UpdateByKey(object key, JsonElement jsonElement)
{
var updateClauses = _jsonHelper.ConvertJsonElementToUpdateClause(jsonElement);
_table.Update(_dbConnection, WhereClause.Create().Eq(_table.KeyColumn.ColumnName, key), updateClauses);
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudServiceCollectionExtensions.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudServiceCollectionExtensions.cs
index 8854976..d51c0a1 100644
--- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudServiceCollectionExtensions.cs
+++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudServiceCollectionExtensions.cs
@@ -12,13 +12,19 @@ public static class CrudServiceCollectionExtensions
return services;
}
- public static IServiceCollection AddCrud<TEntity>(this IServiceCollection services) where TEntity : class
+ public static IServiceCollection AddCrud<TEntity, TCrudService>(this IServiceCollection services) where TEntity : class where TCrudService : CrudService<TEntity>
{
AddCrudCore(services);
- services.TryAddScoped<CrudService<TEntity>>();
+ services.TryAddScoped<CrudService<TEntity>, TCrudService>();
services.TryAddScoped<EntityJsonHelper<TEntity>>();
return services;
}
+
+ public static IServiceCollection AddCrud<TEntity>(this IServiceCollection services) where TEntity : class
+ {
+ return services.AddCrud<TEntity, CrudService<TEntity>>();
+ }
+
}
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs
index 7331273..9e85c68 100644
--- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs
+++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs
@@ -2,10 +2,11 @@ namespace CrupestApi.Commons.Crud;
public static class CrudWebApplicationExtensions
{
- public static WebApplication UseCrud<TEntity>(this WebApplication app, string path) where TEntity : class
+ public static WebApplication UseCrud<TEntity>(this WebApplication app, string path, string? key) where TEntity : class
{
app.MapGet(path, async (context) =>
{
+
var crudService = context.RequestServices.GetRequiredService<CrudService<TEntity>>();
var allEntities = crudService.GetAll();
await context.ResponseJsonAsync(allEntities.Select(e => crudService.JsonHelper.ConvertEntityToDictionary(e)));
@@ -44,7 +45,7 @@ public static class CrudWebApplicationExtensions
}
var jsonDocument = await context.Request.ReadJsonAsync();
- crudService.Update(key, jsonDocument.RootElement);
+ crudService.UpdateByKey(key, jsonDocument.RootElement);
await context.ResponseJsonAsync(crudService.JsonHelper.ConvertEntityToDictionary(crudService.GetByKey(key)));
});