Sla (#11)
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz> Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/11
This commit was merged in pull request #11.
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
namespace Tnsu.ApprovalRoute.Api.Common;
|
||||
|
||||
public sealed record ApiResponse<T>(T Data);
|
||||
|
||||
public sealed record ApiError(IReadOnlyList<string> Messages);
|
||||
@@ -0,0 +1,32 @@
|
||||
using FluentResults;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Tnsu.ApprovalRoute.Application.Common.Errors;
|
||||
|
||||
namespace Tnsu.ApprovalRoute.Api.Common;
|
||||
|
||||
public static class ResultExtensions
|
||||
{
|
||||
public static IActionResult ToActionResult<T>(this Result<T> result)
|
||||
{
|
||||
if (result.IsFailed)
|
||||
return result.Errors[0].ToActionResult();
|
||||
|
||||
return new OkObjectResult(new ApiResponse<T>(result.Value));
|
||||
}
|
||||
|
||||
public static IActionResult ToActionResult(this Result result)
|
||||
{
|
||||
if (result.IsFailed)
|
||||
return result.Errors[0].ToActionResult();
|
||||
|
||||
return new NoContentResult();
|
||||
}
|
||||
|
||||
private static IActionResult ToActionResult(this IError error) => error switch
|
||||
{
|
||||
NotFoundError => new NotFoundObjectResult(new ApiError([error.Message])),
|
||||
ValidationError => new BadRequestObjectResult(new ApiError([error.Message])),
|
||||
ConflictError => new ConflictObjectResult(new ApiError([error.Message])),
|
||||
_ => new ObjectResult(new ApiError([error.Message])) { StatusCode = StatusCodes.Status500InternalServerError }
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user