Class: LcpRuby::BackgroundJobs::Triggers::EventTrigger
- Inherits:
-
Object
- Object
- LcpRuby::BackgroundJobs::Triggers::EventTrigger
- Defined in:
- lib/lcp_ruby/background_jobs/triggers/event_trigger.rb
Instance Attribute Summary collapse
-
#definition ⇒ Object
readonly
Returns the value of attribute definition.
-
#trigger_config ⇒ Object
readonly
Returns the value of attribute trigger_config.
Instance Method Summary collapse
- #handle_event(context) ⇒ Object
-
#initialize(definition, trigger_config) ⇒ EventTrigger
constructor
A new instance of EventTrigger.
- #install! ⇒ Object
Constructor Details
#initialize(definition, trigger_config) ⇒ EventTrigger
Returns a new instance of EventTrigger.
7 8 9 10 |
# File 'lib/lcp_ruby/background_jobs/triggers/event_trigger.rb', line 7 def initialize(definition, trigger_config) @definition = definition @trigger_config = trigger_config end |
Instance Attribute Details
#definition ⇒ Object (readonly)
Returns the value of attribute definition.
5 6 7 |
# File 'lib/lcp_ruby/background_jobs/triggers/event_trigger.rb', line 5 def definition @definition end |
#trigger_config ⇒ Object (readonly)
Returns the value of attribute trigger_config.
5 6 7 |
# File 'lib/lcp_ruby/background_jobs/triggers/event_trigger.rb', line 5 def trigger_config @trigger_config end |
Instance Method Details
#handle_event(context) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/lcp_ruby/background_jobs/triggers/event_trigger.rb', line 39 def handle_event(context) record = context[:record] conditions = trigger_config["conditions"] if conditions && record unless ConditionEvaluator.evaluate(conditions, record) return end end enqueue_params = build_params(context) target_model = record ? infer_model_name(record) : nil target_id = record&.id BackgroundJobs.enqueue( job_type: definition.name, params: enqueue_params, target_model: target_model, target_id: target_id, triggered_by: context[:current_user] ) end |
#install! ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/lcp_ruby/background_jobs/triggers/event_trigger.rb', line 12 def install! event_name = trigger_config["event"] model = trigger_config["model"] handler_class = build_handler_class if model Events::HandlerRegistry.register(model, event_name, handler_class) else Events::HandlerRegistry.register("*", event_name, handler_class) end end |