Module: OllamaChat::Database
- Defined in:
- lib/ollama_chat/database.rb
Overview
The OllamaChat::Database module is responsible for managing the application's persistence layer, including the initialization of the database connection and the dynamic loading of models.
Defined Under Namespace
Modules: Duplicatable, Models, SessionLocking
Class Method Summary collapse
-
.setup_models ⇒ Object
Bootstraps the database layer by establishing a connection, running migrations, and dynamically loading all models.
Class Method Details
.setup_models ⇒ Object
Bootstraps the database layer by establishing a connection, running migrations, and dynamically loading all models.
This method performs the following sequence:
- Identifies the SQLite database path within the XDG state directory.
- Establishes a connection using
Sequeland assigns it to theOllamaChat::DBconstant. - Executes the database migrations via
OllamaChat::Database::Models::Migrations.run. - Iteratively requires all Ruby files found in the
database/models/directory, ensuring the migration file itself is skipped.
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/ollama_chat/database.rb', line 27 def self.setup_models db_path = OC::XDG_STATE_HOME.join('settings.db'). url = 'sqlite://' + db_path.to_path db_log = OC::OLLAMA::CHAT::LOG::DATABASE db_log.dirname.mkpath logger = Logger.new(db_log) logger.level = Logger::WARN unless OllamaChat.const_defined?('DB') OllamaChat.const_set('DB', Sequel.connect(url, logger:)) end # Load and apply migrations first require_relative 'database/migrations' OllamaChat::Database::Models::Migrations.run(OllamaChat::DB) # Load the rest of the models Pathname.new(__dir__).glob('database/models/*.rb').map do |file| next if file.basename.to_s == 'migrations.rb' require file OllamaChat::Database::Models.const_get( Pathname.new(file).basename.sub_ext('').to_path.camelize ) end end |