Class: LcpRuby::BackgroundJobs::Triggers::EventTrigger

Inherits:
Object
  • Object
show all
Defined in:
lib/lcp_ruby/background_jobs/triggers/event_trigger.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#definitionObject (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_configObject (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