33 lines
977 B
C#
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);
|
|
}
|