namespace Somnia.GuestLog.Models.DTOs; public sealed record Result(bool IsSuccess, string ResultCode, params object[]? Context) { public static Result Ok() => new(IsSuccess: true, ResultCode: Models.ResultCode.Ok, Context: null); public static Result Fail(string resultCode) => new(IsSuccess: false, resultCode, Context: null); public static Result FailWithContext(string resultCode, params object[] context) => new(IsSuccess: false, resultCode, context); public static Result FailUnknownError() => new(IsSuccess: false, ResultCode: Models.ResultCode.UnknownError, Context: null); public bool IsUnknownError => !IsSuccess && ResultCode == Models.ResultCode.UnknownError; } public sealed record Result(bool IsSuccess, T? Value, string ResultCode, params object[]? Context) { public static Result Ok(T value) => new(IsSuccess: true, value, ResultCode: Models.ResultCode.Ok, Context: null); public static Result Fail(string resultCode) => new(IsSuccess: false, Value: default, resultCode, Context: null); public static Result FailWithContext(string resultCode, params object[] context) => new(IsSuccess: false, Value: default, resultCode, context); public bool IsUnknownError => !IsSuccess && ResultCode == Models.ResultCode.UnknownError; }