[REFACTOR] Refactored UserRepository to use new monads

This commit is contained in:
max
2025-04-11 21:07:08 +02:00
parent 21fe08c04f
commit ba0de46068
7 changed files with 189 additions and 214 deletions

View File

@@ -0,0 +1,40 @@
using DotBased.AspNet.Authority.Models.Validation;
using DotBased.Monads;
namespace DotBased.AspNet.Authority.Monads;
public class AuthorityResult<TResult> : Result<TResult>
{
protected AuthorityResult(TResult result) : base(result)
{
}
protected AuthorityResult(Exception exception) : base(exception)
{
}
protected AuthorityResult(ResultError error) : base(error)
{
}
protected AuthorityResult(List<ValidationError> validationErrors) : base(ResultError.Fail("Validation failed!"))
{
_validationErrors = validationErrors;
}
private readonly List<ValidationError> _validationErrors = [];
public IReadOnlyList<ValidationError> ValidationErrors => _validationErrors;
public static implicit operator AuthorityResult<TResult>(TResult result) => new(result);
public static implicit operator AuthorityResult<TResult>(Exception exception) => new(exception);
public static implicit operator AuthorityResult<TResult>(ResultError error) => new(error);
public static implicit operator AuthorityResult<TResult>(List<ValidationError> validationErrors) => new(validationErrors);
public static AuthorityResult<TResult> FromResult(Result<TResult> result)
{
var authorityResult = result.Match<AuthorityResult<TResult>>(
r => new AuthorityResult<TResult>(r),
error => new AuthorityResult<TResult>(error));
return authorityResult;
}
}

View File

@@ -32,10 +32,10 @@ public class ValidationResult : Result
public static ValidationResult FromResult(Result result)
{
var authorityResult = result.Match<ValidationResult>(
var validationResult = result.Match<ValidationResult>(
() => new ValidationResult(),
error => new ValidationResult(error));
return authorityResult;
return validationResult;
}
public new static ValidationResult Success() => new();