Expand description
PersistAnt’s relational kind: a deliberately small trait, no driver.
docs/DESIGN-KINDS.md §3 rule 4 and D1 (C+): the trait runs a statement with parameters,
begins a transaction, and reports the dialect and server version. It is not a query builder or
a row mapper; a program that wants its own SQL checked at compile time (Humboldt’s
sqlx::query!) uses the concrete driver handle the driver crate hands out, not this trait. The
trait exists so the key-value adapter, the capability matrix and migrations have one thing to
call.
Growth toward statement construction would turn this into Option B (§4.2) and carry its leaks; resist it.
Modules§
- conformance
- Contract tests for the relational kind: what
RelationalBackendpromises, decided against a real database. Each leaf produces a matrix row, on only when the controls held.
Structs§
- Redacted
- A string that prints as
<redacted>; its text comes out only throughRedacted::expose. - Row
- One result row, columns in select order.
Enums§
- Connection
Secret - A connection string that never appears in a
Debugprint, a log line or an error. - Dialect
- The SQL dialect a backend speaks, which decides how a statement is written.
- Isolation
- The isolation level a transaction asks for. A backend gives the level asked for or a stronger one;
which it can actually show is what the
rel.isolation.*leaves certify. - RelError
- Why a relational operation failed, classified so a caller can branch without parsing driver text (Humboldt hand-maps constraint names in at least seven places today). Plain data.
- Value
- A portable parameter or column value. Deliberately narrow: what a key-value or migration statement needs. A program with richer types uses the driver’s own handle.
Traits§
- Relational
Backend - A relational database, as small as it can be.
- Relational
Tx - A transaction. Statements run inside it are committed or rolled back together.