fix: always wrap responses in ApiResponse<T>

Success responses now use ApiResponse<T>{ Success=true, Data=T }
instead of returning raw T — consistent shape for all outcomes.

Ref: IT-628

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Anatolii Grynchuk
2026-05-02 01:23:22 +03:00
parent a26f41af18
commit 61130130ff
3 changed files with 13 additions and 3 deletions
@@ -17,7 +17,14 @@ public abstract class ApiControllerBase : ControllerBase
protected IMediator Mediator { get; }
protected IActionResult FromServiceResult<T>(ServiceResult<T> result) =>
result.IsSuccess ? Ok(result.Result) : MapServiceError(result.Error!);
result.IsSuccess
? Ok(new ApiResponse<T> { Success = true, Data = result.Result })
: MapServiceError(result.Error!);
protected IActionResult CreatedFromServiceResult<T>(ServiceResult<Guid> result, string actionName, Func<Guid, T> routeValues) =>
result.IsSuccess
? CreatedAtAction(actionName, routeValues(result.Result), new ApiResponse<Guid> { Success = true, Data = result.Result })
: MapServiceError(result.Error!);
protected IActionResult MapServiceError(ServiceError error)
{