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