persistant_relational/lib.rs
1// SPDX-License-Identifier: MIT OR Apache-2.0
2//! PersistAnt's relational kind: a **deliberately small** trait, no driver.
3//!
4//! `docs/DESIGN-KINDS.md` §3 rule 4 and D1 (C+): the trait runs a statement with parameters,
5//! begins a transaction, and reports the dialect and server version. It is not a query builder or
6//! a row mapper; a program that wants its own SQL checked at compile time (Humboldt's
7//! `sqlx::query!`) uses the concrete driver handle the driver crate hands out, not this trait. The
8//! trait exists so the key-value adapter, the capability matrix and migrations have one thing to
9//! call.
10//!
11//! Growth toward statement construction would turn this into Option B (§4.2) and carry its leaks;
12//! resist it.
13
14mod backend;
15#[cfg(feature = "catalog")]
16pub mod catalog;
17pub mod choose;
18pub mod conformance;
19pub mod contract;
20mod error;
21mod migrate;
22pub mod migrate_conformance;
23#[cfg(feature = "sql")]
24pub mod row;
25mod secret;
26pub mod speed;
27#[cfg(feature = "sql")]
28mod sql_ext;
29mod sweep;
30mod value;
31
32pub use backend::{Isolation, RelationalBackend, RelationalTx};
33pub use error::RelError;
34pub use migrate::{MigrateError, MigrateReport, Migrates, Migration};
35pub use secret::{ConnectionSecret, Redacted};
36pub use sweep::{SweepError, SweepReport, sweep};
37pub use value::{Dialect, Row, Value};
38
39#[cfg(feature = "sql")]
40pub use row::{Field, FieldKind, FromRow, FromValue, TypedSql};
41#[cfg(feature = "sql")]
42pub use sql_ext::{
43 RelationalRowsExt, RelationalSqlExt, RelationalTxRowsExt, RelationalTxSqlExt, Sql,
44};
45/// `Query`, `Rendered`, `Target` and `Binding`: what `persistant::sql!` expands to (UniSQL's
46/// `unisql-embed`, re-exported so a consumer depends on neither).
47#[cfg(feature = "sql")]
48pub use unisql_embed as embed;