Module: Async::Matrix::Bridge::Discord::DB
- Defined in:
- lib/async/matrix/bridge/discord/db.rb,
lib/async/matrix/bridge/discord/db/file.rb,
lib/async/matrix/bridge/discord/db/user.rb,
lib/async/matrix/bridge/discord/db/guild.rb,
lib/async/matrix/bridge/discord/db/portal.rb,
lib/async/matrix/bridge/discord/db/puppet.rb,
lib/async/matrix/bridge/discord/db/message.rb,
lib/async/matrix/bridge/discord/db/reaction.rb,
lib/async/matrix/bridge/discord/db/connection.rb
Overview
Database module for the Discord bridge.
Establishes a connection using the bridge config’s database section, runs Sequel migrations, and wires up all model classes to the database.
Supports both SQLite (with foreign keys + WAL) and PostgreSQL.
db = Async::Matrix::Bridge::Discord::DB.connect(config)
# All models are now ready:
DB::User.create(mxid: "@alice:example.com")
DB::Portal.where(discord_guild_id: "123").all
Defined Under Namespace
Modules: Connection Classes: CachedFile, Guild, Message, Portal, Puppet, Reaction, User
Constant Summary collapse
- MIGRATIONS_PATH =
File.join(__dir__, "db", "migrations").freeze
Class Method Summary collapse
-
.bind_models(db) ⇒ Object
Bind all model classes to the given database.
-
.connect(config) ⇒ Sequel::Database
Connect to the database, run migrations, and bind all models.
-
.migrate!(db) ⇒ Object
Run pending migrations.
Class Method Details
.bind_models(db) ⇒ Object
Bind all model classes to the given database.
63 64 65 66 67 68 69 70 71 |
# File 'lib/async/matrix/bridge/discord/db.rb', line 63 def self.bind_models(db) Async::Matrix::Bridge::Discord::DB::User.dataset = db[:users] Async::Matrix::Bridge::Discord::DB::Guild.dataset = db[:guilds] Async::Matrix::Bridge::Discord::DB::Portal.dataset = db[:portals] Async::Matrix::Bridge::Discord::DB::Puppet.dataset = db[:puppets] Async::Matrix::Bridge::Discord::DB::Message.dataset = db[:messages] Async::Matrix::Bridge::Discord::DB::Reaction.dataset = db[:reactions] Async::Matrix::Bridge::Discord::DB::CachedFile.dataset = db[:files] end |
.connect(config) ⇒ Sequel::Database
Connect to the database, run migrations, and bind all models.
46 47 48 49 50 51 |
# File 'lib/async/matrix/bridge/discord/db.rb', line 46 def self.connect(config) db = Connection.establish(config.database) migrate!(db) bind_models(db) db end |
.migrate!(db) ⇒ Object
Run pending migrations.
56 57 58 |
# File 'lib/async/matrix/bridge/discord/db.rb', line 56 def self.migrate!(db) Sequel::Migrator.run(db, MIGRATIONS_PATH) end |