class Tartarus::RemoteStorage::Glacier

Attributes

clock[R]
configuration[R]

Public Class Methods

new(configuration, clock: Time) click to toggle source
# File lib/tartarus/remote_storage/glacier.rb, line 14
def initialize(configuration, clock: Time)
  @configuration = configuration
  @clock = clock
end

Public Instance Methods

store(collection, archivable_model, tenant_id: nil, tenant_id_field: nil) click to toggle source
# File lib/tartarus/remote_storage/glacier.rb, line 19
def store(collection, archivable_model, tenant_id: nil, tenant_id_field: nil)
  path_to_file = path_to_file_for(archivable_model, tenant_id_field, tenant_id)
  export_to_csv(collection, path_to_file)
  glacier_file = Tartarus::RemoteStorage::Glacier::File.new(::File.new(path_to_file))
  glacier_response = upload(glacier_file)
  register_upload(glacier_response, archivable_model, tenant_id_field, tenant_id)
ensure
  glacier_file.delete_from_local_storage if glacier_file
end

Private Instance Methods

client() click to toggle source
# File lib/tartarus/remote_storage/glacier.rb, line 35
def client
  @client ||= begin
    Tartarus::RemoteStorage::Glacier::Client.new(
      key: configuration.aws_key,
      secret: configuration.aws_secret,
      region: configuration.aws_region,
      account_id: configuration.account_id,
    )
  end
end
export_to_csv(collection, path_to_file) click to toggle source
# File lib/tartarus/remote_storage/glacier.rb, line 46
def export_to_csv(collection, path_to_file)
  Tartarus::RemoteStorage::Glacier::CsvExport
    .new(configuration.storage_directory)
    .export(collection, path_to_file)
end
path_to_file_for(archivable_model, tenant_id_field, tenant_id) click to toggle source
# File lib/tartarus/remote_storage/glacier.rb, line 62
def path_to_file_for(archivable_model, tenant_id_field, tenant_id)
  "#{configuration.storage_directory}/#{archivable_model}_#{tenant_id_field}_#{tenant_id}_#{clock.now.to_i}.csv"
end
register_upload(glacier_response, archivable_model, tenant_id_field, tenant_id) click to toggle source
# File lib/tartarus/remote_storage/glacier.rb, line 53
def register_upload(glacier_response, archivable_model, tenant_id_field, tenant_id)
  Tartarus::RemoteStorage::Glacier::RegisterUpload.new(configuration.archive_registry_factory).register(
    glacier_response,
    archivable_model,
    tenant_id_field,
    tenant_id
  )
end
upload(file) click to toggle source
# File lib/tartarus/remote_storage/glacier.rb, line 31
def upload(file)
  client.upload_archive(configuration.vault_name, file)
end