From 0dceb8a3a81f59faecf13eacb5c51a0a0215f35a Mon Sep 17 00:00:00 2001 From: Max <51083570+DRdrProfessor@users.noreply.github.com> Date: Sat, 4 May 2024 17:00:19 +0200 Subject: [PATCH] Added result classes --- CLI/Program.cs | 1 + DotBased/Result.cs | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 DotBased/Result.cs diff --git a/CLI/Program.cs b/CLI/Program.cs index 6e668b8..5f1dd8c 100644 --- a/CLI/Program.cs +++ b/CLI/Program.cs @@ -1,5 +1,6 @@ // See https://aka.ms/new-console-template for more information +using DotBased; using DotBased.Logging.Serilog; using DotBased.Logging; using Serilog; diff --git a/DotBased/Result.cs b/DotBased/Result.cs new file mode 100644 index 0000000..cf9ba5b --- /dev/null +++ b/DotBased/Result.cs @@ -0,0 +1,44 @@ +namespace DotBased; + +/// +/// Simple result class for returning a result state or a message and a exception. +/// +public class Result(bool success, string message, Exception? exception) +{ + public bool Success { get; set; } = success; + public string Message { get; set; } = message; + public Exception? Exception { get; set; } = exception; + + public static Result Ok() => new Result(true, string.Empty, null); + public static Result Failed(string message, Exception? exception = null) => new Result(false, message, exception); +} + +public class Result(bool success, string message, TValue? value, Exception? exception) : Result(success, message, exception) +{ + public TValue? Value { get; set; } = value; + + public static Result Ok(TValue value) => new Result(true, string.Empty, value, null); + + public new static Result Failed(string message, Exception? exception = null) => + new Result(false, message, default, exception); +} + +public class ListResult(bool success, string message, int totalCount, IEnumerable? items, Exception? exception) : Result(success, message, exception) +{ + public readonly IReadOnlyList Items = items != null ? new List(items) : new List(); + /// + /// The amount of items that this result contains. + /// + public int Count => Items.Count; + + /// + /// The total amount of item that is available. + /// + public int TotalCount { get; } = totalCount; + + public static ListResult Ok(IEnumerable items, int totalCount = -1) => + new ListResult(true, string.Empty, totalCount, items, null); + + public new static ListResult Failed(string message, Exception? exception = null) => + new ListResult(false, message, -1,null, exception); +} \ No newline at end of file