module
Memo::Database
Overview
Database initialization and schema management
Extended Modules
Defined in:
memo/database.crInstance Method Summary
-
#create(path : String) : DB::Database
Create database connection and initialize schema (standalone mode)
-
#init(db : DB::Database)
Initialize Memo schema in provided database
-
#load_schema(db : DB::Database)
Load memo schema into the provided database (embedded mode) Safe to call multiple times (uses IF NOT EXISTS)
-
#sqlite_url(path : String) : String
Connection URL for a SQLite file.
-
#transaction(db : DBHandle, & : DB::Connection -> )
Run the block in a transaction, yielding the connection it holds.
Instance Method Detail
Create database connection and initialize schema (standalone mode)
Accepts either a file path (SQLite) or connection string (postgres://...). Sets the appropriate dialect automatically.
Initialize Memo schema in provided database
Uses the dialect attached to the db connection to generate the correct DDL for the backend (SQLite or PostgreSQL). Safe to call multiple times (uses IF NOT EXISTS)
Load memo schema into the provided database (embedded mode) Safe to call multiple times (uses IF NOT EXISTS)
Connection URL for a SQLite file. busy_timeout makes a connection wait up to 5 s for another's write lock instead of failing at once.
Run the block in a transaction, yielding the connection it holds.
Every statement in the block must go through the yielded connection (or its memo_queries). Statements sent to the pool run on another connection and commit on their own, outside the transaction.
Given a connection (already inside a transaction), joins it.