class Tartarus::ScheduleArchivingModel

Attributes

registry[R]

Public Class Methods

new(registry: Tartarus.registry) click to toggle source
# File lib/tartarus/schedule_archiving_model.rb, line 5
def initialize(registry: Tartarus.registry)
  @registry = registry
end

Public Instance Methods

schedule(archivable_item_name) click to toggle source
# File lib/tartarus/schedule_archiving_model.rb, line 9
def schedule(archivable_item_name)
  archivable_item = registry.find_by_name(archivable_item_name)

  if archivable_item.scope_by_tenant?
    each_tenant(archivable_item) do |tenant|
      enqueue(Tartarus::Sidekiq::ArchiveModelWithTenantJob, archivable_item.queue, archivable_item.name, tenant)
    end
  else
    enqueue(Tartarus::Sidekiq::ArchiveModelWithoutTenantJob, archivable_item.queue, archivable_item.name)
  end
end

Private Instance Methods

each_tenant(archivable_item) { |public_send| ... } click to toggle source
# File lib/tartarus/schedule_archiving_model.rb, line 23
def each_tenant(archivable_item)
  collection = archivable_item.tenants_range.call

  if collection.respond_to?(:find_each)
    collection.find_each { |element| yield element.public_send(archivable_item.tenant_value_source) }
  else
    collection.each { |element| yield element }
  end
end
enqueue(job_class, queue, *args) click to toggle source
# File lib/tartarus/schedule_archiving_model.rb, line 33
def enqueue(job_class, queue, *args)
  job_class.set(queue: queue).perform_async(*args)
end