scinote-web/app/jobs/cleanup_user_settings_job.rb
2024-07-30 09:33:27 +02:00

22 lines
696 B
Ruby

# frozen_string_literal: true
class CleanupUserSettingsJob < ApplicationJob
queue_as :default
def perform(record_type, record_id)
unless %w(task_step_states results_order result_states).include?(record_type)
raise ArgumentError, 'Invalid record_type'
end
sanitized_record_id = record_id.to_i.to_s
raise ArgumentError, 'Invalid record_id' unless sanitized_record_id == record_id.to_s
sql = <<-SQL.squish
UPDATE users
SET settings = (settings#>>'{}')::jsonb #- '{#{record_type},#{sanitized_record_id}}'
WHERE (settings#>>'{}')::jsonb->'#{record_type}' ? '#{sanitized_record_id}';
SQL
ActiveRecord::Base.connection.execute(sql)
end
end