using System.Diagnostics.CodeAnalysis; using ErsatzTV.Core; using Microsoft.AspNetCore.Mvc; namespace ErsatzTV.Extensions; [SuppressMessage("ReSharper", "VSTHRD003")] public static class ValidationToActionResult { public static IActionResult ToActionResult(this Validation validation) => validation.Match( t => new OkObjectResult(t), e => new BadRequestObjectResult(e)); public static Task ToActionResult(this Task> validation) => validation.Map(ToActionResult); public static Task ToActionResult(this Task> validation) => validation.Bind(ToActionResult); private static Task ToActionResult(Validation validation) => validation.MatchAsync( async t => { await t; return new OkResult(); }, e => new BadRequestObjectResult(e)); }