Files
ersatztv/ErsatzTV/Extensions/ValidationToActionResult.cs
T
Jason DoveandGitHub d4a2197dfa async fixes (#128)
* refactor local metadata provider

* resolve async warnings

* more async fixes
2021-04-03 11:01:20 -05:00

33 lines
1.2 KiB
C#

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