using GB5Shared.DTO.PubSub; namespace GB5Shared.RuleEngine { /// /// Evaluates a condition expression string against an . /// Injected into EventSubBLL to filter MACTION rows before queueing. /// /// Expression format: "LHS operator RHS" /// LHS: top-level property of OutboxEventMessage OR Payload.JsonFieldName /// Operators: == != > < >= <= /// RHS: literal value (number, string — no quotes needed) /// /// Examples: /// "ObjectTypeId == 5" /// "Payload.Amount > 100000" /// "Payload.Status == Approved" /// /// Returns true when the expression is null/empty (pass-through — preserves existing behaviour). /// public interface IConditionEvaluator { /// /// Evaluates against . /// Returns true when the condition passes or expression is null/empty. /// Returns false when the condition fails. /// Never throws — logs and returns true on parse error (fail-open to preserve existing delivery). /// bool Evaluate(string? expression, OutboxEventMessage message); } }