namespace Hutopy.Modules.Identity.Models; public class Result( bool succeeded, IEnumerable errors) { public bool Succeeded { get; init; } = succeeded; public string[] Errors { get; init; } = errors.ToArray(); public static Result Success() { return new Result(true, Array.Empty()); } public static Result Failure(IEnumerable errors) { return new Result(false, errors); } } public class Result( T? value, bool succeeded, IEnumerable errors) { public bool Succeeded { get; init; } = succeeded; public string[] Errors { get; init; } = errors.ToArray(); public T? Value { get; set; } = value; public T GetValueOrDefault() { return Value ?? default(T)!; } public string GetErrorsAsString() { return Errors.Length == 0 ? string.Empty : string.Join(", ", Errors); } public static Result Success(T value) { return new Result(value, true, Array.Empty()); } public static Result Failure(T value, IEnumerable errors) { return new Result(value, false, errors); } }