Files
natsdotnet/src/NATS.Server/JetStream/Validation/JetStreamConfigValidator.cs

33 lines
977 B
C#

using NATS.Server.JetStream.Models;
namespace NATS.Server.JetStream.Validation;
public static class JetStreamConfigValidator
{
public static ValidationResult Validate(StreamConfig config)
{
if (string.IsNullOrWhiteSpace(config.Name) || config.Subjects.Count == 0)
return ValidationResult.Invalid("name/subjects required");
if (config.Retention == RetentionPolicy.WorkQueue && config.MaxConsumers == 0)
return ValidationResult.Invalid("workqueue retention requires max consumers > 0");
return ValidationResult.Valid();
}
}
public sealed class ValidationResult
{
public bool IsValid { get; }
public string Message { get; }
private ValidationResult(bool isValid, string message)
{
IsValid = isValid;
Message = message;
}
public static ValidationResult Valid() => new(true, string.Empty);
public static ValidationResult Invalid(string message) => new(false, message);
}