module

Memo::Database

Database initialization and schema management

Instance methods

create(path : String) : DB::Database

Create database connection and initialize schema (standalone mode)

Accepts either a file path (SQLite) or connection string (postgres://...). Sets the appropriate dialect automatically.

Source
init(db : DB::Database)

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), then migrates a database written by an earlier version (see Migration). Safe to call multiple times (uses IF NOT EXISTS)

Source
load_schema(db : DB::Database)

Load memo schema into the provided database (embedded mode) Safe to call multiple times (uses IF NOT EXISTS)

Source
sqlite_url(path : String) : String

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.

Source
transaction(db : DBHandle, & : DB::Connection -> )

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.

Source