|
|
2 هفته پیش | |
|---|---|---|
| .. | ||
| src | 3 روز پیش | |
| tests | 3 روز پیش | |
| Cargo.toml | 3 روز پیش | |
| README.md | 3 روز پیش | |
SQL-backed Store implementation for the kuatia ledger.
Uses sqlx::Any for database-agnostic queries. Enable features to select
the backend:
[dependencies]
kuatia-storage-sql = { features = ["sqlite"] } # or "postgres"
| Feature | Backend | Status |
|---|---|---|
sqlite (default) |
SQLite via sqlx | Conformance tests pass |
postgres |
PostgreSQL via sqlx | Portable DDL/queries; needs a running instance to test |
The backend is detected at migration time and the matching DDL is applied from
src/migrations/{sqlite,postgres}/ (SQLite uses BLOB, PostgreSQL uses
BYTEA). Applied migrations are tracked in a _migrations table, so
migrate() is idempotent. Upserts use portable ON CONFLICT … DO UPDATE, and
all ids are generated in Rust (no AUTOINCREMENT/SERIAL).
use kuatia_storage_sql::SqlStore;
let pool = sqlx::any::AnyPoolOptions::new()
.connect("sqlite::memory:").await?;
let store = SqlStore::new(pool);
store.migrate().await?;
Tables: accounts, postings, transfers, transfer_accounts, sagas,
events, books. Migrations run via store.migrate().