module Rocketman
  class Event
    def initialize(event, payload)
      @event = event
      @payload = payload
      Rocketman::Registry.register_event(event)
    end

    def notify_consumers
      consumers = Rocketman::Registry.get_consumers_for(@event)

      return if consumers.nil? || consumers.empty?

      consumers.each do |consumer, action|
        consumer.instance_exec(@payload, &action)
      end
    end
  end
end