Class: Ni::Storages::ActiveRecordMetadataRepository

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/ni/storages/active_record_metadata_repository.rb,
lib/ni/storages/active_record_metadata_repository.rb

Constant Summary collapse

TIMER_KEY =
'timer'.freeze

Class Method Summary collapse

Class Method Details

.clear_timer!(timer_id) ⇒ Object



29
30
31
# File 'lib/ni/storages/active_record_metadata_repository.rb', line 29

def self.clear_timer!(timer_id)
  self.where(uid: timer_id, key: TIMER_KEY).delete_all
end

.fetch(uid, key) ⇒ Object



14
15
16
17
18
19
20
21
22
# File 'lib/ni/storages/active_record_metadata_repository.rb', line 14

def self.fetch(uid, key)
  record = self.where(uid: uid, key: key).first

  if record.present?
    JSON.parse(record.data, symbolize_names: true)
  else
    {}  
  end  
end

.fetch_timersObject



33
34
35
36
37
# File 'lib/ni/storages/active_record_metadata_repository.rb', line 33

def self.fetch_timers
  self.where(key: TIMER_KEY).where("run_timer_at < ?", Time.now).map do |record|
    [record.uid] + JSON.parse(record.data) 
  end 
end

.setup_timer!(timer_id, datetime, timer_klass_name, timer_action, system_uid) ⇒ Object



24
25
26
27
# File 'lib/ni/storages/active_record_metadata_repository.rb', line 24

def self.setup_timer!(timer_id, datetime, timer_klass_name, timer_action, system_uid)
  data = [timer_klass_name, timer_action, system_uid].to_json
  self.create!(uid: timer_id, key: TIMER_KEY, run_timer_at: datetime, data: data)
end

.store(uid, key, data) ⇒ Object



9
10
11
12
# File 'lib/ni/storages/active_record_metadata_repository.rb', line 9

def self.store(uid, key, data)
  record = self.where(uid: uid, key: key).first_or_initialize
  record.update(data: data.to_json) 
end