class WipeOut::Execution::ExecutePlan

Public Instance Methods

call() click to toggle source
# File lib/wipe_out/execution/execute_plan.rb, line 11
def call
  execution.notify(:before_execution)

  process_relations
  plan.attributes.each(&method(:execute_on_attribute))

  execution.run

  execution.notify(:after_execution)
end
collection?(record, relation_name) click to toggle source
# File lib/wipe_out/execution/execute_plan.rb, line 48
def collection?(record, relation_name)
  record.class.reflect_on_association(relation_name).collection?
end
execute_on_attribute(attribute) click to toggle source
# File lib/wipe_out/execution/execute_plan.rb, line 36
def execute_on_attribute(attribute)
  name, strategy = attribute
  value = strategy.call(record, name)
  record.send("#{name}=", value)
end
execute_on_record(plan, record) click to toggle source
# File lib/wipe_out/execution/execute_plan.rb, line 42
def execute_on_record(plan, record)
  execution_plan = plan.establish_execution_plan(record)

  ExecutePlan.call(execution.subexecution(execution_plan, record))
end
process_relations() click to toggle source
# File lib/wipe_out/execution/execute_plan.rb, line 22
def process_relations
  plan.relations.each do |name, plan|
    relation = record.send(name)

    next unless relation.present?

    if collection?(record, name)
      relation.find_each { |record| execute_on_record(plan, record) }
    else
      execute_on_record(plan, relation)
    end
  end
end