Class: OllamaChat::Switches::DatabaseSwitch

Inherits:
Object
  • Object
show all
Includes:
CheckSwitch
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

Constructor Details

#initialize(chat:, msg:, attribute:) ⇒ 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



108
109
110
111
112
# File 'lib/ollama_chat/switches.rb', line 108

def initialize(chat:, msg:, attribute:)
  @chat      = chat
  @attribute = attribute
  @msg      = msg
end

Instance Attribute Details

#attributeObject (readonly)

Returns the value of attribute attribute.



123
124
125
# File 'lib/ollama_chat/switches.rb', line 123

def attribute
  @attribute
end

Instance Method Details

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

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

Returns:

  • (String, nil, Boolean)

    the result of the display operation or the show flag



131
132
133
134
# File 'lib/ollama_chat/switches.rb', line 131

def set(value, show: false, output: STDOUT)
  @chat.session.update("#{attribute}": !!value)
  show && self.show(output:)
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



140
141
142
143
# File 'lib/ollama_chat/switches.rb', line 140

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

#valueBoolean

Returns the current value of the attribute from the session.

Returns:

  • (Boolean)

    the value of the attribute



117
118
119
# File 'lib/ollama_chat/switches.rb', line 117

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