module EnqueueExport

Constants

VERSION

Attributes

pending_exports[RW]

Public Class Methods

batch_size(data) click to toggle source
# File lib/enqueue_export.rb, line 52
def self.batch_size(data)
  args = {
    channel_id: data[0][2],
    name: 'batch_size'
  }
  size = Config.find_by(args).value.to_i
  data[1].in_groups_of(size, false)
end
delayed_job(model, worker_id) click to toggle source
# File lib/enqueue_export.rb, line 61
def self.delayed_job(model, worker_id)
  service = if %w[export response].include? model
              Kernel.const_get("Worker::#{model.capitalize}Service")
            else
              Kernel.const_get("Check#{model.capitalize}Service")
            end
  Delayed::Job.enqueue(service.new(worker_id: worker_id))
end
export() click to toggle source
# File lib/enqueue_export.rb, line 24
def self.export
  @pending_export = PendingExport.where(local_feed_id: nil, worker_id: nil)
  @pending_export.where(response_id: nil, processed: false)
end
generate_id() click to toggle source
# File lib/enqueue_export.rb, line 20
def self.generate_id
  SecureRandom.hex(32)
end
group_by(model) click to toggle source
# File lib/enqueue_export.rb, line 46
def self.group_by(model)
  public_send(model).group_by do |obj|
    [obj.mode, obj.account_id, obj.channel_id]
  end.to_a
end
perform(model) click to toggle source
# File lib/enqueue_export.rb, line 9
def self.perform(model)
  group_by(model).each do |data|
    batch_size(data).each do |batch|
      worker_id = generate_id
      ids = batch.map(&:id)
      public_send(model).where(id: ids).update_all(worker_id: worker_id)
      delayed_job(model, worker_id)
    end
  end
end
qc() click to toggle source
# File lib/enqueue_export.rb, line 42
def self.qc
  @pending_qc = PendingQc.where(worker_id: nil)
end
response() click to toggle source
# File lib/enqueue_export.rb, line 29
def self.response
  @pending_export = PendingExport.where(local_feed_id: nil, worker_id: nil)
  @pending_export.where(processed: false).where.not(response_id: nil)
end
validity() click to toggle source
# File lib/enqueue_export.rb, line 34
def self.validity
  @pending_validity = PendingValidity.where(
    worker_id: nil,
    validity: false,
    processed: false
  )
end