diff options
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs')
-rw-r--r-- | docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs index b7bc6f1..c91c969 100644 --- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs @@ -8,14 +8,16 @@ public static class CrudWebApplicationExtensions { if (!context.RequirePermission(permission)) return; var crudService = context.RequestServices.GetRequiredService<CrudService<TEntity>>(); + var entityJsonHelper = context.RequestServices.GetRequiredService<EntityJsonHelper<TEntity>>(); var allEntities = crudService.GetAll(); - await context.ResponseJsonAsync(allEntities.Select(e => crudService.JsonHelper.ConvertEntityToDictionary(e))); + await context.ResponseJsonAsync(allEntities.Select(e => entityJsonHelper.ConvertEntityToDictionary(e))); }); app.MapGet(path + "/{key}", async (context) => { if (!context.RequirePermission(permission)) return; var crudService = context.RequestServices.GetRequiredService<CrudService<TEntity>>(); + var entityJsonHelper = context.RequestServices.GetRequiredService<EntityJsonHelper<TEntity>>(); var key = context.Request.RouteValues["key"]?.ToString(); if (key == null) { @@ -24,23 +26,25 @@ public static class CrudWebApplicationExtensions } var entity = crudService.GetByKey(key); - await context.ResponseJsonAsync(crudService.JsonHelper.ConvertEntityToDictionary(entity)); + await context.ResponseJsonAsync(entityJsonHelper.ConvertEntityToDictionary(entity)); }); app.MapPost(path, async (context) => { if (!context.RequirePermission(permission)) return; var crudService = context.RequestServices.GetRequiredService<CrudService<TEntity>>(); + var entityJsonHelper = context.RequestServices.GetRequiredService<EntityJsonHelper<TEntity>>(); var jsonDocument = await context.Request.ReadJsonAsync(); - var key = crudService.Create(jsonDocument.RootElement); - await context.ResponseJsonAsync(crudService.JsonHelper.ConvertEntityToDictionary(crudService.GetByKey(key))); + var key = crudService.Create(entityJsonHelper.ConvertJsonToEntityForInsert(jsonDocument.RootElement)); + await context.ResponseJsonAsync(entityJsonHelper.ConvertEntityToDictionary(crudService.GetByKey(key))); }); app.MapPatch(path + "/{key}", async (context) => { if (!context.RequirePermission(permission)) return; - var crudService = context.RequestServices.GetRequiredService<CrudService<TEntity>>(); var key = context.Request.RouteValues["key"]?.ToString(); + var crudService = context.RequestServices.GetRequiredService<CrudService<TEntity>>(); + var entityJsonHelper = context.RequestServices.GetRequiredService<EntityJsonHelper<TEntity>>(); if (key == null) { await context.ResponseMessageAsync("Please specify a key in path."); @@ -48,9 +52,9 @@ public static class CrudWebApplicationExtensions } var jsonDocument = await context.Request.ReadJsonAsync(); - crudService.UpdateByKey(key, jsonDocument.RootElement); - - await context.ResponseJsonAsync(crudService.JsonHelper.ConvertEntityToDictionary(crudService.GetByKey(key))); + var entity = entityJsonHelper.ConvertJsonToEntityForUpdate(jsonDocument.RootElement, out var updateBehavior); + crudService.UpdateByKey(key, entity, updateBehavior); + await context.ResponseJsonAsync(entityJsonHelper.ConvertEntityToDictionary(crudService.GetByKey(key))); }); app.MapDelete(path + "/{key}", async (context) => |