Class: Vert::Concerns::Current

Inherits:
ActiveSupport::CurrentAttributes
  • Object
show all
Defined in:
lib/vert/concerns/current_attributes.rb

Overview

CurrentAttributes - Thread-safe request context

Class Method Summary collapse

Class Method Details

.company_set?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/vert/concerns/current_attributes.rb', line 38

def self.company_set?
  company_id.present?
end

.deserialize(hash) ⇒ Object



24
25
26
27
28
29
30
31
32
# File 'lib/vert/concerns/current_attributes.rb', line 24

def self.deserialize(hash)
  return unless hash.is_a?(Hash)
  set_context(
    tenant_id: hash[:tenant_id] || hash["tenant_id"],
    user_id: hash[:user_id] || hash["user_id"],
    company_id: hash[:company_id] || hash["company_id"],
    request_id: hash[:request_id] || hash["request_id"]
  )
end

.require_company!Object



46
47
48
# File 'lib/vert/concerns/current_attributes.rb', line 46

def self.require_company!
  raise Vert::CompanyNotSetError, "Company context not set" unless company_set?
end

.require_tenant!Object



42
43
44
# File 'lib/vert/concerns/current_attributes.rb', line 42

def self.require_tenant!
  raise Vert::TenantNotSetError, "Tenant context not set" unless tenant_set?
end

.reset_allObject



9
10
11
# File 'lib/vert/concerns/current_attributes.rb', line 9

def self.reset_all
  reset
end

.serializeObject



20
21
22
# File 'lib/vert/concerns/current_attributes.rb', line 20

def self.serialize
  { tenant_id: tenant_id, user_id: user_id, company_id: company_id, request_id: request_id }
end

.set_context(tenant_id:, user_id: nil, company_id: nil, request_id: nil) ⇒ Object



13
14
15
16
17
18
# File 'lib/vert/concerns/current_attributes.rb', line 13

def self.set_context(tenant_id:, user_id: nil, company_id: nil, request_id: nil)
  self.tenant_id = tenant_id
  self.user_id = user_id
  self.company_id = company_id
  self.request_id = request_id || SecureRandom.uuid
end

.tenant_set?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/vert/concerns/current_attributes.rb', line 34

def self.tenant_set?
  tenant_id.present?
end