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



22
23
24
25
26
27
28
29
# File 'lib/smart_cache_tenant/version_store.rb', line 22

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
17
18
19
20
# 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)

  if SmartCacheTenant.config.tenant_column.present? && tenant_id.blank?
    Rails.cache.delete_matched("#{key}:*")
  else
    new_version = generate_version
    Rails.cache.write(key, new_version, expires_in: SmartCacheTenant.config.ttl)
    new_version
  end
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



31
32
33
# File 'lib/smart_cache_tenant/version_store.rb', line 31

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