Class: OllamaChat::Switches::DatabaseSwitch

Inherits:
Object
  • Object
show all
Includes:
CheckSwitch, PerformCallbacks
Defined in:
lib/ollama_chat/switches.rb

Overview

Manages boolean configuration states that are persisted in the database.

This class acts as a wrapper around a database attribute, allowing for toggling and setting of boolean values while ensuring that changes are immediately saved to the associated session.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from CheckSwitch

#off?, #show

Methods included from PerformCallbacks

#perform_callbacks

Constructor Details

#initialize(chat:, msg:, attribute:, callbacks: {}) ⇒ DatabaseSwitch

Initializes a new DatabaseSwitch instance.

Parameters:

  • chat (OllamaChat::Chat) —

    the chat instance providing session access

  • msg (Hash{Boolean => String}) —

    the message hash containing display messages

  • attribute (Symbol) —

    the database attribute name to manage

  • callbacks (Hash{[Boolean, Boolean] => Proc}) (defaults to: {}) —

    optional mapping of state transitions to callback procs. Keys are [old_value, new_value].



194
195
196
197
198
199
# File 'lib/ollama_chat/switches.rb', line 194

def initialize(chat:, msg:, attribute:, callbacks: {})
  @chat      = chat
  @attribute = attribute
  @msg       = msg
  @callbacks = callbacks.to_h
end

Instance Attribute Details

#attribute ⇒ Object (readonly)

Returns the value of attribute attribute.



210
211
212
# File 'lib/ollama_chat/switches.rb', line 210

def attribute
  @attribute
end

Instance Method Details

#set(value, show: false, output: STDOUT) ⇒ Object

Updates the session attribute with the given value and optionally displays it.

Parameters:

  • value (Object) —

    the value to be coerced to a boolean and saved

  • show (Boolean) (defaults to: false) —

    whether to show the updated value

  • output (IO) (defaults to: STDOUT) —

    the output stream to use when showing the value



217
218
219
220
221
# File 'lib/ollama_chat/switches.rb', line 217

def set(value, show: false, output: STDOUT)
  @chat.session.update("#{attribute}": !!value)
  show && self.show(output:)
  nil
end

#toggle(show: true) ⇒ String, ...

Toggles the value of a session attribute and optionally displays the new state.

Parameters:

  • show (Boolean) (defaults to: true) —

    whether to show the updated state after toggling

Returns:

  • (String, nil, Boolean) —

    the result of the display operation or the show flag



227
228
229
230
# File 'lib/ollama_chat/switches.rb', line 227

def toggle(show: true)
  @chat.session.update("#{attribute}": !value)
  show && self.show
end

#value ⇒ Boolean

Returns the current value of the attribute from the session.

Returns:

  • (Boolean) —

    the value of the attribute



204
205
206
# File 'lib/ollama_chat/switches.rb', line 204

def value
  @chat.session.send(@attribute)
end