vareldb
fn connect #
fn connect(config Config) !DB
Connect to database (single connection, no pooling)
fn ensure_test_db #
fn ensure_test_db() !
Helper to create test database if it doesn't exist
fn generate_migration #
fn generate_migration(migrations_dir string, name string) !
Generate a new migration file (timestamp-based like Sequel)
fn get_test_config #
fn get_test_config() Config
Test database configuration
fn is_null #
fn is_null(val ?string) bool
Check if value is NULL
fn new_migrator #
fn new_migrator(mut db DB, migrations_dir string) Migrator
Create a new migrator
fn setup_test_db #
fn setup_test_db() !DB
Helper to clean up test database and return a fresh connection
fn to_bool #
fn to_bool(val ?string) !bool
Convert Option string to bool (handles PostgreSQL boolean values)
fn to_f64 #
fn to_f64(val ?string) !f64
Convert Option string to f64
fn to_i64 #
fn to_i64(val ?string) !i64
Convert Option string to i64
fn to_int #
fn to_int(val ?string) !int
Convert Option string to int
fn to_string #
fn to_string(val ?string, default_val string) string
Get string value or default if NULL
struct Config #
struct Config {
pub:
host string = 'localhost'
port int = 5432
database string
user string
password string
sslmode string = 'prefer' // disable, allow, prefer, require, verify-ca, verify-full
connect_timeout int = 30 // seconds
}
Database configuration
struct DB #
struct DB {
pub mut:
conn pg.DB
pub:
config Config
}
Database connection wrapper Single connection per process (v0.4.0 - no connection pooling)
fn (DB) close #
fn (mut db DB) close() !
Close database connection
fn (DB) exec #
fn (mut db DB) exec(query string) ![]pg.Row
Execute a query and return all rows
fn (DB) exec_params #
fn (mut db DB) exec_params(query string, params []string) ![]pg.Row
Execute a query with parameters ($1, $2, etc.)
fn (DB) exec_one #
fn (mut db DB) exec_one(query string) !pg.Row
Execute a query and return the first row, or error if no rows
fn (DB) exec_one_params #
fn (mut db DB) exec_one_params(query string, params []string) !pg.Row
Execute a query with params and return the first row
fn (DB) query_int #
fn (mut db DB) query_int(query string) !int
Execute a query and return a single integer value
fn (DB) query_string #
fn (mut db DB) query_string(query string) !string
Execute a query and return a single string value
fn (DB) transaction #
fn (mut db DB) transaction(callback fn (mut Transaction) !) !
Run a function within a transaction (Sequel pattern with auto-commit/rollback)
Example
db.transaction() fn (mut tx Transaction) ! { ... }!
struct Migration #
struct Migration {
pub:
version string // timestamp: 20250112120000
name string // create_users
up_file string // full path to .up.sql
down_file string // full path to .down.sql
}
Migration file representation
struct MigrationStatus #
struct MigrationStatus {
pub:
version string
name string
applied_at string
applied bool
}
Migration status
struct Migrator #
struct Migrator {
mut:
db &DB
migrations_dir string
}
Migrator manages database migrations (Sequel-inspired)
fn (Migrator) ensure_schema_table #
fn (mut m Migrator) ensure_schema_table() !
Ensure schema_migrations table exists
fn (Migrator) find_migrations #
fn (m &Migrator) find_migrations() ![]Migration
Find all migration files in directory
fn (Migrator) get_applied_migrations #
fn (mut m Migrator) get_applied_migrations() ![]string
Get applied migrations from database
fn (Migrator) get_pending_migrations #
fn (mut m Migrator) get_pending_migrations() ![]Migration
Get pending migrations
fn (Migrator) migrate #
fn (mut m Migrator) migrate() !
Run all pending migrations
fn (Migrator) migrate_up #
fn (mut m Migrator) migrate_up(migration Migration) !
Run a single migration up
fn (Migrator) rollback #
fn (mut m Migrator) rollback() !
Rollback the last migration
fn (Migrator) migrate_down #
fn (mut m Migrator) migrate_down(migration Migration) !
Run a single migration down
fn (Migrator) status #
fn (mut m Migrator) status() ![]MigrationStatus
Get migration status (all migrations with applied status)
struct Transaction #
struct Transaction {
mut:
conn &pg.DB
active bool
}
Transaction wrapper (Sequel-inspired pattern)
fn (Transaction) exec #
fn (mut tx Transaction) exec(query string) ![]pg.Row
Execute a query within the transaction
fn (Transaction) exec_params #
fn (mut tx Transaction) exec_params(query string, params []string) ![]pg.Row
Execute a query with parameters within the transaction
fn (Transaction) exec_one #
fn (mut tx Transaction) exec_one(query string) !pg.Row
Execute a query and return first row
fn (Transaction) exec_one_params #
fn (mut tx Transaction) exec_one_params(query string, params []string) !pg.Row
Execute a query with params and return first row
fn (Transaction) savepoint #
fn (mut tx Transaction) savepoint(name string) !
Create a savepoint (nested transaction support)
fn (Transaction) rollback_to #
fn (mut tx Transaction) rollback_to(name string) !
Rollback to a savepoint
fn (Transaction) commit #
fn (mut tx Transaction) commit() !
Manually commit the transaction (usually auto-committed)
fn (Transaction) rollback #
fn (mut tx Transaction) rollback() !
Manually rollback the transaction (usually auto-rolled back on error)