Skip to main content

Module store

Module store 

Source
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§

SqliteCredentialStore
Per-(upstream_name, subject) credential store backed by SQLite.
SqliteStateStore
Per-(upstream_name, subject) state store backed by SQLite.