From efb573b945e0093f1b635b18d253f2c9747f69f8 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Fri, 3 May 2024 09:36:26 +0200 Subject: [PATCH] =?UTF-8?q?Refaktorisierung=20von=20CRUDControllerBase=20z?= =?UTF-8?q?ur=20Nutzung=20des=20Result-Musters=20f=C3=BCr=20eine=20saubere?= =?UTF-8?q?re=20Fehlerbehandlung=20und=20Codestruktur.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DigitalData.Core.API/CRUDControllerBase.cs | 76 ++++++++++++---------- 1 file changed, 41 insertions(+), 35 deletions(-) diff --git a/DigitalData.Core.API/CRUDControllerBase.cs b/DigitalData.Core.API/CRUDControllerBase.cs index 4c68628..9da2dfb 100644 --- a/DigitalData.Core.API/CRUDControllerBase.cs +++ b/DigitalData.Core.API/CRUDControllerBase.cs @@ -50,16 +50,19 @@ namespace DigitalData.Core.API [HttpPost] public virtual async Task Create(TCreateDto createDto) { - var result = await _service.CreateAsync(createDto); - if (result.IsSuccess) - { - var createdResource = new { Id = result.Data }; - var actionName = nameof(GetById); - var routeValues = new { id = createdResource.Id }; - return CreatedAtAction(actionName, routeValues, createdResource); - } - - return BadRequest(result); + return await _service.CreateAsync(createDto).ThenAsync( + Success: id => + { + var createdResource = new { Id = id }; + var actionName = nameof(GetById); + var routeValues = new { id = createdResource.Id }; + return CreatedAtAction(actionName, routeValues, createdResource); + }, + Fail: (messages, notices) => + { + _logger.LogNotice(notices); + return BadRequest(messages); + }); } /// @@ -70,12 +73,13 @@ namespace DigitalData.Core.API [HttpGet("{id}")] public virtual async Task GetById([FromRoute] TId id) { - var result = await _service.ReadByIdAsync(id); - if (result.IsSuccess) - { - return Ok(result); - } - return NotFound(result); + return await _service.ReadByIdAsync(id).ThenAsync( + Success: Ok, + Fail: IActionResult (messages, notices) => + { + _logger.LogNotice(notices); + return NotFound(messages); + }); } /// @@ -85,12 +89,13 @@ namespace DigitalData.Core.API [HttpGet] public virtual async Task GetAll() { - var result = await _service.ReadAllAsync(); - if (result.IsSuccess) - { - return Ok(result); - } - return NotFound(result); + return await _service.ReadAllAsync().ThenAsync( + Success: Ok, + Fail: IActionResult (messages, notices) => + { + _logger.LogNotice(notices); + return NotFound(messages); + }); } /// @@ -101,12 +106,13 @@ namespace DigitalData.Core.API [HttpPut] public virtual async Task Update(TUpdateDto updateDto) { - var result = await _service.UpdateAsync(updateDto); - if (result.IsSuccess) - { - return Ok(result); - } - return BadRequest(result); + return await _service.UpdateAsync(updateDto).ThenAsync( + Success: Ok, + Fail: IActionResult (messages, notices) => + { + _logger.LogNotice(notices); + return BadRequest(messages); + }); } /// @@ -117,13 +123,13 @@ namespace DigitalData.Core.API [HttpDelete("{id}")] public virtual async Task Delete([FromRoute] TId id) { - var result = await _service.DeleteAsyncById(id); - if (result.IsSuccess) - { - return Ok(result); - } - return BadRequest(result); + return await _service.DeleteAsyncById(id).ThenAsync( + Success: Ok, + Fail: IActionResult (messages, notices) => + { + _logger.LogNotice(notices); + return BadRequest(messages); + }); } - } } \ No newline at end of file