arcature-data 2026.2.0

Arcature high-level data layer: explicit-ownership model/query ergonomics over SeaORM/SQLx, N+1 detection, and migration lint.
Documentation

arcature-data

The Arcature high-level data layer over arcature-db (AP2.1-6, ADR-0006).

A high-level model/query experience for ordinary CRUD over SeaORM, preserving the SeaORM and SQLx escape hatches. No new database engine, no ORM, no hidden global pool, no task-local connection, and no request-global DB. Every public API takes the Db handle by reference — ownership is explicit on every call.

This crate is an internal workspace member (publish = false); its public surface is re-exported through the arcature facade behind the existing db feature. ADR-0006 authorizes no new public crate for AP2.1-6.

Features

  • Explicit-ownership query ergonomicsEntity::query(&db) (a blanket QueryModel trait; no app-side trait impl), with .filter(), .order_by(), .limit(), .offset(), .paginate(), and eager-load (Relation::of::<R>()).
  • Typed transactionsTransaction::orm (SeaORM) and Transaction::sqlx (raw SQLx), explicit &Db, no hidden nesting/savepoint magic.
  • N+1 detection (behind the n1 feature) — a request-scoped Tracker with source attribution, zero production hot-path overhead when off.
  • Migration lintclassify / classify_statements: a deterministic, database-free classifier of real PostgreSQL migration risks.

Postgres

arcature-data does not open connections — it borrows arcature-db::Db.

See the crate rustdoc (cargo doc -p arcature-data --no-deps --open) for the full API, the request lifecycle, and the security note.