Class: SpreeCmCommissioner::WaitingRoomSystemMetadataFetcher

Inherits:
Object
  • Object
show all
Defined in:
app/services/spree_cm_commissioner/waiting_room_system_metadata_fetcher.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(firestore: nil) ⇒ WaitingRoomSystemMetadataFetcher

Returns a new instance of WaitingRoomSystemMetadataFetcher.



7
8
9
# File 'app/services/spree_cm_commissioner/waiting_room_system_metadata_fetcher.rb', line 7

def initialize(firestore: nil)
  @firestore = firestore if firestore.present?
end

Instance Attribute Details

#document_dataObject (readonly)

Returns the value of attribute document_data.



5
6
7
# File 'app/services/spree_cm_commissioner/waiting_room_system_metadata_fetcher.rb', line 5

def document_data
  @document_data
end

Instance Method Details

#documentObject



42
43
44
# File 'app/services/spree_cm_commissioner/waiting_room_system_metadata_fetcher.rb', line 42

def document
  @document ||= firestore.col('metadata').doc('system')
end

#firestoreObject



46
47
48
# File 'app/services/spree_cm_commissioner/waiting_room_system_metadata_fetcher.rb', line 46

def firestore
  @firestore ||= Google::Cloud::Firestore.new(project_id: [:project_id], credentials: )
end

#load_document_dataObject



11
12
13
# File 'app/services/spree_cm_commissioner/waiting_room_system_metadata_fetcher.rb', line 11

def load_document_data
  @document_data = document.get.data
end

#max_sessions_countObject



15
16
17
# File 'app/services/spree_cm_commissioner/waiting_room_system_metadata_fetcher.rb', line 15

def max_sessions_count
  @max_sessions_count ||= server_running_count * max_thread_count * multiplier / 100
end

#max_sessions_count_with_minObject



23
24
25
# File 'app/services/spree_cm_commissioner/waiting_room_system_metadata_fetcher.rb', line 23

def max_sessions_count_with_min
  @max_sessions_count_with_min ||= [max_sessions_count, min_session_count].max
end

#max_thread_countObject



33
34
35
# File 'app/services/spree_cm_commissioner/waiting_room_system_metadata_fetcher.rb', line 33

def max_thread_count
  document_data[:max_thread_count]&.to_i || ENV.fetch('WAITING_ROOM_MAX_THREAD_COUNT', '10').to_i
end

#min_session_countObject



19
20
21
# File 'app/services/spree_cm_commissioner/waiting_room_system_metadata_fetcher.rb', line 19

def min_session_count
  @min_session_count ||= ENV.fetch('WAITING_ROOM_MIN_SESSIONS_COUNT', '5').to_i
end

#multiplierObject

percentage



38
39
40
# File 'app/services/spree_cm_commissioner/waiting_room_system_metadata_fetcher.rb', line 38

def multiplier
  document_data[:multiplier]&.to_i || ENV.fetch('WAITING_ROOM_MULTIPLIER', '150').to_i
end

#server_running_countObject

firebase metadata



29
30
31
# File 'app/services/spree_cm_commissioner/waiting_room_system_metadata_fetcher.rb', line 29

def server_running_count
  document_data[:server_running_count]&.to_i || ENV.fetch('WAITING_ROOM_SERVERS_COUNT', '2').to_i
end

#service_accountObject



50
51
52
# File 'app/services/spree_cm_commissioner/waiting_room_system_metadata_fetcher.rb', line 50

def 
  @service_account ||= Rails.application.credentials.
end