pub struct StateRegistry { /* private fields */ }Expand description
The kernel’s persistent registry of module metadata and configuration.
Internally backed by an sqlx::SqlitePool. Cheaply cloneable.
Config values are optionally encrypted at rest with AES-256-GCM when the
registry is opened via StateRegistry::open_encrypted (requires the
encrypted Cargo feature).
Implementations§
Source§impl StateRegistry
impl StateRegistry
Sourcepub async fn in_memory() -> Result<Self>
pub async fn in_memory() -> Result<Self>
Create a new in-memory registry. Suitable for tests and early development.
Sourcepub async fn connect(path: &str) -> Result<Self>
pub async fn connect(path: &str) -> Result<Self>
Connect to an on-disk SQLite database. The file is created if missing.
Sourcepub async fn open_encrypted(path: &str, key_str: &str) -> Result<Self>
pub async fn open_encrypted(path: &str, key_str: &str) -> Result<Self>
Open or create an encrypted on-disk registry.
Config values are stored as AES-256-GCM ciphertext; the key is derived
from key_str via SHA-256. Module metadata rows remain plaintext.
To read the key from the environment use
StateRegistry::key_from_env as the key_str argument.
Requires the encrypted Cargo feature.
Sourcepub fn key_from_env() -> Result<String>
pub fn key_from_env() -> Result<String>
Read the registry encryption key from the OXIDE_REGISTRY_KEY
environment variable.
Returns an error if the variable is not set or is empty.
Sourcepub fn pool(&self) -> &SqlitePool
pub fn pool(&self) -> &SqlitePool
Read-only access to the underlying sqlx pool. Used by the XAI
decision log and other in-kernel extensions that need to manage
additional tables alongside the core registry schema.
Sourcepub async fn upsert_module(
&self,
metadata: &ModuleMetadata,
state: ModuleState,
) -> Result<()>
pub async fn upsert_module( &self, metadata: &ModuleMetadata, state: ModuleState, ) -> Result<()>
Insert or update a module’s metadata.
Sourcepub async fn set_module_state(&self, id: &str, state: ModuleState) -> Result<()>
pub async fn set_module_state(&self, id: &str, state: ModuleState) -> Result<()>
Update only the state column for a given module.
Sourcepub async fn get_module(&self, id: &str) -> Result<Option<ModuleRecord>>
pub async fn get_module(&self, id: &str) -> Result<Option<ModuleRecord>>
Fetch a single module record by id.
Sourcepub async fn list_modules(&self) -> Result<Vec<ModuleRecord>>
pub async fn list_modules(&self) -> Result<Vec<ModuleRecord>>
List all module records.
Sourcepub async fn set_config<T: Serialize>(&self, key: &str, value: &T) -> Result<()>
pub async fn set_config<T: Serialize>(&self, key: &str, value: &T) -> Result<()>
Persist a configuration value. The value is serialized to JSON.
When the registry was opened via Self::open_encrypted the stored
value is AES-256-GCM ciphertext; otherwise it is plain JSON.
Sourcepub async fn get_config<T: DeserializeOwned>(&self, key: &str) -> Result<T>
pub async fn get_config<T: DeserializeOwned>(&self, key: &str) -> Result<T>
Fetch a configuration value and deserialize it. Returns
KernelError::ConfigNotFound if the key does not exist.
Transparently decrypts when the registry is encrypted.
Sourcepub async fn try_get_config<T: DeserializeOwned>(
&self,
key: &str,
) -> Result<Option<T>>
pub async fn try_get_config<T: DeserializeOwned>( &self, key: &str, ) -> Result<Option<T>>
Fetch a configuration value, returning None if missing instead of an error.
Sourcepub async fn delete_config(&self, key: &str) -> Result<bool>
pub async fn delete_config(&self, key: &str) -> Result<bool>
Delete a configuration value. Returns true if a row was removed.
Trait Implementations§
Source§impl Clone for StateRegistry
impl Clone for StateRegistry
Source§fn clone(&self) -> StateRegistry
fn clone(&self) -> StateRegistry
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for StateRegistry
impl !RefUnwindSafe for StateRegistry
impl Send for StateRegistry
impl Sync for StateRegistry
impl Unpin for StateRegistry
impl UnsafeUnpin for StateRegistry
impl !UnwindSafe for StateRegistry
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more