feat(application): map closing outcomes to API exceptions

This commit is contained in:
2026-10-10 14:57:56 +02:00
parent 3126f025be
commit 315dee2f6c
5 changed files with 82 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
using DigitalData.TaskFlow.Domain.Enums;
namespace DigitalData.TaskFlow.Application.Common.Exceptions;
/// <summary>
/// Represents an API-facing exception that carries HTTP and domain meta information.
/// </summary>
public class ApiException : Exception
{
/// <summary>
/// Initializes a new instance of the <see cref="ApiException"/> class.
/// </summary>
/// <param name="statusCode">HTTP status code to return.</param>
/// <param name="metaCode">Domain meta code to return.</param>
/// <param name="message">Response message.</param>
public ApiException(int statusCode, MetaCode metaCode, string message)
: base(message)
{
StatusCode = statusCode;
MetaCode = metaCode;
}
/// <summary>
/// Gets the HTTP status code.
/// </summary>
public int StatusCode { get; }
/// <summary>
/// Gets the domain meta code.
/// </summary>
public MetaCode MetaCode { get; }
}

View File

@@ -0,0 +1,19 @@
using DigitalData.TaskFlow.Domain.Enums;
namespace DigitalData.TaskFlow.Application.Common.Exceptions;
/// <summary>
/// Represents a 409 API exception.
/// </summary>
public sealed class ConflictApiException : ApiException
{
/// <summary>
/// Initializes a new instance of the <see cref="ConflictApiException"/> class.
/// </summary>
/// <param name="metaCode">Domain meta code to return.</param>
/// <param name="message">Response message.</param>
public ConflictApiException(MetaCode metaCode, string message)
: base(409, metaCode, message)
{
}
}

View File

@@ -0,0 +1,18 @@
using DigitalData.TaskFlow.Domain.Enums;
namespace DigitalData.TaskFlow.Application.Common.Exceptions;
/// <summary>
/// Represents a 404 API exception.
/// </summary>
public sealed class NotFoundApiException : ApiException
{
/// <summary>
/// Initializes a new instance of the <see cref="NotFoundApiException"/> class.
/// </summary>
/// <param name="message">Response message.</param>
public NotFoundApiException(string message)
: base(404, MetaCode.NotFound, message)
{
}
}