Skip to content

DB effect Phase 2/3: named columns, typed rows, multi-backend #1143

Description

@aallan

Tracks the follow-on phases for the built-in <DB> effect. #229 adds Phase 1; this issue collects the work deliberately left out of it.

Phase 1 (#229) covers positional Array<Option<String>> rows and parameters on SQLite (sqlite::memory: / sqlite:///path), with DB.query and DB.execute returning Result. It is intentionally minimal: every cell is an Option<String>, rows are addressed positionally, and SQLite is the only backend.

Phase 2 — named columns / typed rows

  • Column access by name rather than by position (a Row abstraction, or a Map-keyed result).
  • Typed cell coercions (Int, Float64, Bool) instead of stringly-typed Option<String> everywhere, with an explicit, checked conversion story that preserves DESIGN principle 2 (no implicit behaviour).

Phase 3 — connection & backend surface

  • Additional backends behind VERA_DB_URL (PostgreSQL, MySQL) through the host driver.
  • Multiple / pooled connections (Phase 1 uses a single connection per program run).
  • Transactions (BEGIN / COMMIT / ROLLBACK) as first-class operations.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions