Skip to content

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 #

@[heap]
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)