Class: Ask::Rails::Harness::Persistence

Inherits:
State::Adapter
  • Object
show all
Defined in:
lib/ask/rails/harness/persistence.rb

Instance Method Summary collapse

Constructor Details

#initialize(model_class: nil) ⇒ Persistence

Returns a new instance of Persistence.



7
8
9
# File 'lib/ask/rails/harness/persistence.rb', line 7

def initialize(model_class: nil)
  @model_class = model_class
end

Instance Method Details

#clearObject



38
39
40
# File 'lib/ask/rails/harness/persistence.rb', line 38

def clear
  model_class.delete_all
end

#delete(session_id) ⇒ Object



22
23
24
# File 'lib/ask/rails/harness/persistence.rb', line 22

def delete(session_id)
  model_class.where(session_id: session_id).delete_all
end

#get(key) ⇒ Object



18
19
20
# File 'lib/ask/rails/harness/persistence.rb', line 18

def get(key)
  load(key)
end

#listObject



42
43
44
# File 'lib/ask/rails/harness/persistence.rb', line 42

def list
  model_class.pluck(:session_id)
end

#load(session_id) ⇒ Object



33
34
35
36
# File 'lib/ask/rails/harness/persistence.rb', line 33

def load(session_id)
  record = model_class.find_by(session_id: session_id)
  record&.data
end

#save(session_id, data) ⇒ Object

Backward-compatible interface (used by old code and list queries)



28
29
30
31
# File 'lib/ask/rails/harness/persistence.rb', line 28

def save(session_id, data)
  record = model_class.find_or_initialize_by(session_id: session_id)
  record.update!(data: data)
end

#set(key, value, ttl: nil) ⇒ Object

State::Adapter contract — set/get/delete (aliased through save/load for backward compatibility)



14
15
16
# File 'lib/ask/rails/harness/persistence.rb', line 14

def set(key, value, ttl: nil)
  save(key, value)
end