class Tartarus::ArchiveModelWithTenant

Attributes

registry[R]
repository[R]

Public Class Methods

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

Public Instance Methods

archive(archivable_item_name, tenant_id) click to toggle source
# File lib/tartarus/archive_model_with_tenant.rb, line 10
def archive(archivable_item_name, tenant_id)
  archivable_item = registry.find_by_name(archivable_item_name)
  collection = collection_to_archive(archivable_item, tenant_id)
  archivable_item.remote_storage.store(collection, archivable_item.name, tenant_id: tenant_id,
    tenant_id_field: archivable_item.tenant_id_field)
  archivable_item.archive_strategy.call(collection)
end

Private Instance Methods

collection_to_archive(archivable_item, tenant_id) click to toggle source
# File lib/tartarus/archive_model_with_tenant.rb, line 20
def collection_to_archive(archivable_item, tenant_id)
  repository
    .items_older_than_for_tenant(
      archivable_item.model,
      archivable_item.timestamp_field, archivable_item.archive_items_older_than.call,
      archivable_item.tenant_id_field, tenant_id
    )
end