Module: Async::Matrix::Bridge::Discord::DB::Connection

Defined in:
lib/async/matrix/bridge/discord/db/connection.rb

Overview

Establishes a Sequel database connection from the bridge config’s database section.

Supports both SQLite (with foreign keys and WAL mode) and PostgreSQL, matching the mautrix bridgev2 database config schema.

db = Connection.establish(config.database)
db[:users].all  # => [...]

Constant Summary collapse

SQLITE_TYPE =
"sqlite3-fk-wal"
POSTGRES_TYPE =
"postgres"

Class Method Summary collapse

Class Method Details

.establish(database_config) ⇒ Sequel::Database

Establish a database connection from a config.database section.

Parameters:

  • database_config (Hash, Vivify)

    config.database with :type, :uri, :max_open_conns

Returns:

  • (Sequel::Database)


31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/async/matrix/bridge/discord/db/connection.rb', line 31

def self.establish(database_config)
  type = database_config.type || SQLITE_TYPE
  uri  = database_config.uri  || "sqlite://bridge.db"

  db = case type
       when SQLITE_TYPE
         connect_sqlite(uri, database_config)
       when POSTGRES_TYPE
         connect_postgres(uri, database_config)
       else
         raise ArgumentError, "Unknown database type: #{type.inspect}. Expected #{SQLITE_TYPE.inspect} or #{POSTGRES_TYPE.inspect}."
       end

  db
end