Class: SmartCacheTenant::VersionStore

Inherits:
Object
  • Object
show all
Defined in:
lib/smart_cache_tenant/version_store.rb

Class Method Summary collapse

Class Method Details

.build_key(model_klass, tenant_id = nil) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/smart_cache_tenant/version_store.rb', line 18

def self.build_key(model_klass, tenant_id = nil)
  database_name = model_klass.connection_db_config.database
  tenant_column = SmartCacheTenant.config.tenant_column

  parts = [database_name, 'smart_cache', 'table_version', model_klass.table_name]
  parts << "#{tenant_column}:#{tenant_id}" if tenant_id.present? && tenant_column.present?
  parts.join(':').downcase
end

.bump!(model_klass, tenant_id = nil) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/smart_cache_tenant/version_store.rb', line 10

def self.bump!(model_klass, tenant_id = nil)
  key = build_key(model_klass, tenant_id)
  new_version = generate_version
  Rails.cache.write(key, new_version, expires_in: SmartCacheTenant.config.ttl)

  new_version
end

.current(model_klass, tenant_id = nil) ⇒ Object



5
6
7
8
# File 'lib/smart_cache_tenant/version_store.rb', line 5

def self.current(model_klass, tenant_id = nil)
  key = build_key(model_klass, tenant_id)
  Rails.cache.fetch(key, expires_in: SmartCacheTenant.config.ttl) { generate_version }
end

.generate_versionObject



27
28
29
# File 'lib/smart_cache_tenant/version_store.rb', line 27

def self.generate_version
  Time.zone.now.strftime('%d%m%Y%H%M%S%L')
end