using Ardalis.Result; namespace Musify.Application.Extensions; public static class ResultExtensions { public static Result As(this Result result) { return result.Status switch { ResultStatus.Ok or ResultStatus.Created or ResultStatus.NoContent => throw new InvalidOperationException($"Cannot convert a successful result ( {result.Status} ) to another type. Use Map or Bind instead."), ResultStatus.NotFound => Result.NotFound(result.Errors.ToArray()), ResultStatus.Forbidden => Result.Forbidden(result.Errors.ToArray()), ResultStatus.Unauthorized => Result.Unauthorized(result.Errors.ToArray()), ResultStatus.Invalid => Result.Invalid(result.ValidationErrors.ToArray()), ResultStatus.Conflict => Result.Conflict(result.Errors.ToArray()), ResultStatus.CriticalError => Result.CriticalError(result.Errors.ToArray()), ResultStatus.Unavailable => Result.Unavailable(result.Errors.ToArray()), ResultStatus.Error => Result.Error(string.Join(";", result.Errors)), _ => Result.Error(string.Join(";", result.Errors)) }; } }