Development Documentation (main branch) - For stable release docs, see docs.rs/eidetica

SettingsStore

Struct SettingsStore 

Source
pub struct SettingsStore { /* private fields */ }
Expand description

A settings-specific Store that wraps DocStore and provides specialized methods for managing database settings and authentication configuration.

SettingsStore provides a clean abstraction over the _settings subtree, offering type-safe methods for common settings operations while delegating to AuthSettings for authentication-specific functionality.

Implementations§

Source§

impl SettingsStore

Source

pub async fn get_name(&self) -> Result<String>

Get the database name from settings

§Returns

The database name as a string, or an error if not found or invalid

Source

pub async fn set_name(&self, name: &str) -> Result<()>

Set the database name in settings

§Arguments
  • name - The name to set for the database
§Returns

Result indicating success or failure

Source

pub async fn get(&self, key: impl AsRef<str>) -> Result<Value>

Get a value from settings by key

§Arguments
  • key - The key to retrieve
§Returns

The value associated with the key, or an error if not found

Source

pub async fn get_string(&self, key: impl AsRef<str>) -> Result<String>

Get a string value from settings by key

§Arguments
  • key - The key to retrieve
§Returns

The string value associated with the key, or an error if not found or wrong type

Source

pub async fn get_all(&self) -> Result<Doc>

Get all settings as a Doc

Returns a complete snapshot of all settings in the _settings subtree.

§Returns

A Doc containing all current settings

Source

pub async fn get_height_strategy(&self) -> Result<HeightStrategy>

Get the height strategy for this database.

Returns HeightStrategy::Incremental if no strategy is configured, ensuring backwards compatibility with existing databases.

§Returns

The configured height strategy, or the default (Incremental)

Source

pub async fn set_height_strategy(&self, strategy: HeightStrategy) -> Result<()>

Set the height strategy for this database.

§Arguments
  • strategy - The height strategy to use
Source

pub async fn auth_snapshot(&self) -> Result<AuthSettings>

Get a snapshot of the current authentication settings

Returns a cloned AuthSettings built from the merged CRDT state. Mutations to the returned value do not propagate back to the store; use the dedicated methods (e.g. set_auth_key, rename_auth_key, revoke_auth_key) to persist changes.

§Returns

An AuthSettings snapshot of the current auth configuration

Source

pub async fn set_auth_key(&self, pubkey: &PublicKey, key: AuthKey) -> Result<()>

Set an authentication key in the settings

This method provides upsert behavior for authentication keys:

  • If the pubkey doesn’t exist: creates the key entry
  • If the pubkey exists: updates the key with new permissions/status/name

Keys are stored by pubkey (the cryptographic public key string). The AuthKey contains optional name metadata and permission information.

Writes are incremental: only the specific key path is written to the entry, not the full auth state. The CRDT merge produces the correct merged view when reading.

§Arguments
  • pubkey - The public key
  • key - The AuthKey containing name, permissions, and status
§Returns

Result indicating success or failure

Source

pub async fn set_global_auth_key(&self, key: AuthKey) -> Result<()>

Set the global authentication permission

Stores the global permission at the auth.global path, separate from individual key entries in the auth.keys namespace.

§Arguments
  • key - The AuthKey containing the global permission level and status
§Returns

Result indicating success or failure

Source

pub async fn get_global_auth_key(&self) -> Result<AuthKey>

Get the global authentication permission

Reads from the auth.global path via an auth snapshot.

§Returns

AuthKey if the global permission is configured, or error if not present

Source

pub async fn get_auth_key(&self, pubkey: &PublicKey) -> Result<AuthKey>

Get an authentication key from the settings by public key

§Arguments
  • pubkey - The public key to retrieve
§Returns

AuthKey if found, or error if not present or operation fails

Source

pub async fn rename_auth_key( &self, pubkey: &PublicKey, name: Option<&str>, ) -> Result<()>

Rename an authentication key in the settings

Updates only the display name of an existing key, preserving its permissions and status.

§Arguments
  • pubkey - The public key of the key to rename
  • name - The new display name, or None to remove the name
§Returns

Result indicating success or failure

Source

pub async fn revoke_auth_key(&self, pubkey: &PublicKey) -> Result<()>

Revoke an authentication key in the settings

§Arguments
  • pubkey - The public key of the key to revoke
§Returns

Result indicating success or failure

Source

pub async fn add_delegated_tree(&self, tree_ref: DelegatedTreeRef) -> Result<()>

Add a delegated tree reference to the settings

The delegation is stored by root tree ID, extracted from tree_ref.tree.root.

§Arguments
  • tree_ref - The delegated tree reference to add
§Returns

Result indicating success or failure

Source

pub async fn get_auth_doc_for_validation(&self) -> Result<Doc>

Get the auth document for validation purposes

This returns the raw Doc containing auth configuration, suitable for use with AuthValidator and other validation components that expect the raw CRDT state.

§Returns

A Doc containing the auth configuration

Source

pub fn as_doc_store(&self) -> &DocStore

Get access to the underlying DocStore for advanced operations

This provides direct access to the DocStore for cases where the SettingsStore abstraction is insufficient.

§Returns

A reference to the underlying DocStore

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CompatExt for T

§

fn compat(self) -> Compat<T>

Applies the [Compat] adapter by value. Read more
§

fn compat_ref(&self) -> Compat<&T>

Applies the [Compat] adapter by shared reference. Read more
§

fn compat_mut(&mut self) -> Compat<&mut T>

Applies the [Compat] adapter by mutable reference. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more