Expand description
SQLite-backed rmcp CredentialStore and StateStore adapters.
Both adapters are per-(upstream_name, subject) — construct a fresh pair for each
upstream × subject combination. The underlying SqliteStore is Clone so the
shared connection pool is cheap to duplicate.
§StateStore::load is a consuming take
StateStore::load calls take_upstream_oauth_state (DELETE … RETURNING) rather than
a plain SELECT. This is intentional: consuming state on first read closes the replay
window. StateStore::delete is therefore a no-op — the row is already gone after
a successful load.
§Lifetime pattern
#[async_trait] expands async fn foo(&self) to a two-lifetime form:
fn foo<'life0, 'async_trait>(&'life0 self) where 'life0: 'async_trait, Self: 'async_trait.
All method impls below match that exact pattern without importing the async-trait crate.
Structs§
- Sqlite
Credential Store - Per-
(upstream_name, subject)credential store backed by SQLite. - Sqlite
State Store - Per-
(upstream_name, subject)state store backed by SQLite.