Class: RailsDrips::CompareDefinition

Inherits:
Object
  • Object
show all
Defined in:
app/services/rails_drips/compare_definition.rb

Constant Summary collapse

EXECUTABLE_FIELDS =
%w[position name kind delay_amount delay_unit email_key email_category data].freeze

Class Method Summary collapse

Class Method Details

.fingerprint_definition(definition) ⇒ Object



9
10
11
12
13
14
# File 'app/services/rails_drips/compare_definition.rb', line 9

def self.fingerprint_definition(definition)
  steps = definition.fetch("campaign").fetch("steps").map do |step|
    EXECUTABLE_FIELDS.to_h { |field| [field, step[field]] }
  end
  JSON.generate(steps.sort_by { |step| step["position"] })
end

.fingerprint_version(version) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'app/services/rails_drips/compare_definition.rb', line 16

def self.fingerprint_version(version)
  steps = version.steps.order(:position).map do |step|
    {
      "position" => step.position, "name" => step.name, "kind" => step.kind,
      "delay_amount" => step.delay_amount, "delay_unit" => step.delay_unit,
      "email_key" => step.email_key, "email_category" => step.email_category,
      "data" => step.data_value.presence
    }
  end
  JSON.generate(steps)
end