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