package engine import ( "context" "fmt" "aiaa-notification-service/internal/cache" "aiaa-notification-service/internal/model" "aiaa-notification-service/internal/store" ) type Matcher struct { store *store.Store } func NewMatcher(s *store.Store, _ *cache.Cache) *Matcher { return &Matcher{store: s} } func (m *Matcher) Match(ctx context.Context, sourceID int, event string) ([]model.Rule, error) { rules, err := m.store.ListEnabledRulesBySource(ctx, sourceID) if err != nil { return nil, fmt.Errorf("match rule: %w", err) } picked := PickEventRules(event, rules) if len(picked) == 0 { return nil, fmt.Errorf("match rule: no rule for source %d event %s", sourceID, event) } return picked, nil }