# frozen_string_literal: true # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later require 'qx' require 'delayed_job' module DelayedJobHelper # Create a serialized delayed job handler for use in inserting new delayed jobs with raw sql # Be sure to wrap the handler in double quotes when inserting, not single def self.create_handler(obj, method_name, args) Delayed::PerformableMethod.new(obj, method_name, args).to_yaml.to_s end # Manually enqueue a job def self.enqueue_job(obj, method_name, args, options = {}) handler = Delayed::PerformableMethod.new(obj, method_name, args).to_yaml.to_s Qx.insert_into(:delayed_jobs) .values( created_at: Time.current, updated_at: Time.current, priority: options[:priority] || 0, attempts: 0, handler: handler, run_at: options[:run_at] || Time.current, queue: options[:queue] ).returning('*').execute end end