Class: Botiasloop::Database

Inherits:
Object
  • Object
show all
Defined in:
lib/botiasloop/database.rb

Overview

Database connection and schema management for SQLite

Constant Summary collapse

DEFAULT_PATH =

Default database path

File.expand_path("~/.config/botiasloop/db.sqlite")

Class Method Summary collapse

Class Method Details

.connectSequel::SQLite::Database

Get or create database connection Automatically sets up schema on first connection

Returns:

  • (Sequel::SQLite::Database)


17
18
19
20
21
22
23
# File 'lib/botiasloop/database.rb', line 17

def connect
  @db ||= begin
    db = Sequel.sqlite(DEFAULT_PATH)
    setup_schema!(db)
    db
  end
end

.disconnectObject

Close database connection



41
42
43
44
# File 'lib/botiasloop/database.rb', line 41

def disconnect
  @db&.disconnect
  @db = nil
end

.reset!Object

Reset database - delete all data



33
34
35
36
37
38
# File 'lib/botiasloop/database.rb', line 33

def reset!
  db = connect
  db[:messages].delete if db.table_exists?(:messages)
  db[:conversations].delete if db.table_exists?(:conversations)
  db[:chats].delete if db.table_exists?(:chats)
end

.setup!Object

Set up database schema Creates tables if they don’t exist



27
28
29
30
# File 'lib/botiasloop/database.rb', line 27

def setup!
  db = @db || connect
  setup_schema!(db)
end