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);
}
}