Class: Bulkrax::CsvTemplate::FilePathGenerator

Inherits:
Object
  • Object
show all
Defined in:
app/services/bulkrax/csv_template/file_path_generator.rb

Overview

Utility class for generating template file paths

Constant Summary collapse

TEMPLATE_PREFIX =
'import_template'

Class Method Summary collapse

Class Method Details

.build_filename(context, tenant) ⇒ Object



34
35
36
37
38
39
40
# File 'app/services/bulkrax/csv_template/file_path_generator.rb', line 34

def self.build_filename(context, tenant)
  parts = [TEMPLATE_PREFIX]
  parts << "context-#{context}" if context.present?
  parts << "tenant-#{tenant}" if tenant.present?
  parts << timestamp
  "#{parts.join('_')}.csv"
end

.default_path(admin_set_id) ⇒ Object



9
10
11
12
13
14
15
16
# File 'app/services/bulkrax/csv_template/file_path_generator.rb', line 9

def self.default_path(admin_set_id)
  context = load_context(admin_set_id)
  tenant = load_tenant
  filename = build_filename(context, tenant)
  path = Rails.root.join('tmp', 'imports', filename)
  FileUtils.mkdir_p(path.dirname.to_s)
  path
end

.load_context(admin_set_id) ⇒ Object



18
19
20
21
22
23
# File 'app/services/bulkrax/csv_template/file_path_generator.rb', line 18

def self.load_context(admin_set_id)
  return nil if admin_set_id.blank?

  admin_set = Bulkrax.object_factory.find(admin_set_id)
  admin_set.respond_to?(:contexts) ? admin_set.contexts.first : nil
end

.load_tenantObject



25
26
27
28
29
30
31
32
# File 'app/services/bulkrax/csv_template/file_path_generator.rb', line 25

def self.load_tenant
  return nil unless defined?(Apartment::Tenant) && defined?(Account)

  tenant_id = Apartment::Tenant.current
  return nil if tenant_id.blank?

  Account.find_by(tenant: tenant_id)&.name
end

.timestampObject



42
43
44
# File 'app/services/bulkrax/csv_template/file_path_generator.rb', line 42

def self.timestamp
  Time.current.utc.strftime('%Y%m%d_%H%M%S')
end