Class: GoodJob::DNUpdateWorker

Inherits:
HasUtils::GoodJob::BaseWorker
  • Object
show all
Includes:
HasUtils::GoodJob::UniqueJob
Defined in:
app/workers/good_job/dn_update_worker.rb

Instance Method Summary collapse

Instance Method Details

#perform(table_name, ids, update_statement, disable_triggers = true) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/workers/good_job/dn_update_worker.rb', line 16

def perform(table_name, ids, update_statement, disable_triggers = true)
  disable_trigger_statement = disable_triggers ? "SELECT set_config('psql_hq.skip_triggers.ALL', 'true', true);" : nil
  inner_id_clause = "'#{ids.join("','")}'"
  sql = <<~SQL
    #{disable_trigger_statement}
    UPDATE #{table_name}
    SET #{update_statement}
    WHERE #{table_name}.id IN (
      #{inner_id_clause}
    );
  SQL
  ActiveRecord::Base.connection.execute(sql)
end