linera_views::store

Trait AdminKeyValueStore

Source
pub trait AdminKeyValueStore:
    WithError
    + Sized
    + Send {
    type Config: Send + Sync;

    // Required methods
    fn get_name() -> String;
    fn connect(
        config: &Self::Config,
        namespace: &str,
    ) -> impl Future<Output = Result<Self, Self::Error>> + Send;
    fn clone_with_root_key(&self, root_key: &[u8]) -> Result<Self, Self::Error>;
    fn list_all(
        config: &Self::Config,
    ) -> impl Future<Output = Result<Vec<String>, Self::Error>> + Send;
    fn list_root_keys(
        config: &Self::Config,
        namespace: &str,
    ) -> impl Future<Output = Result<Vec<Vec<u8>>, Self::Error>> + Send;
    fn exists(
        config: &Self::Config,
        namespace: &str,
    ) -> impl Future<Output = Result<bool, Self::Error>> + Send;
    fn create(
        config: &Self::Config,
        namespace: &str,
    ) -> impl Future<Output = Result<(), Self::Error>> + Send;
    fn delete(
        config: &Self::Config,
        namespace: &str,
    ) -> impl Future<Output = Result<(), Self::Error>> + Send;

    // Provided methods
    fn delete_all(
        config: &Self::Config,
    ) -> impl Future<Output = Result<(), Self::Error>> + Send { ... }
    fn maybe_create_and_connect(
        config: &Self::Config,
        namespace: &str,
    ) -> impl Future<Output = Result<Self, Self::Error>> + Send { ... }
    fn recreate_and_connect(
        config: &Self::Config,
        namespace: &str,
    ) -> impl Future<Output = Result<Self, Self::Error>> + Send { ... }
}
Expand description

Low-level trait for the administration of stores and their namespaces.

Required Associated Types§

Source

type Config: Send + Sync

The configuration needed to interact with a new store.

Required Methods§

Source

fn get_name() -> String

The name of this class of stores

Source

fn connect( config: &Self::Config, namespace: &str, ) -> impl Future<Output = Result<Self, Self::Error>> + Send

Connects to an existing namespace using the given configuration.

Source

fn clone_with_root_key(&self, root_key: &[u8]) -> Result<Self, Self::Error>

Takes a connection and creates a new one with a different root_key.

Source

fn list_all( config: &Self::Config, ) -> impl Future<Output = Result<Vec<String>, Self::Error>> + Send

Obtains the list of existing namespaces.

Source

fn list_root_keys( config: &Self::Config, namespace: &str, ) -> impl Future<Output = Result<Vec<Vec<u8>>, Self::Error>> + Send

Lists the root keys of the namespace. It is possible that some root keys have no keys.

Source

fn exists( config: &Self::Config, namespace: &str, ) -> impl Future<Output = Result<bool, Self::Error>> + Send

Tests if a given namespace exists.

Source

fn create( config: &Self::Config, namespace: &str, ) -> impl Future<Output = Result<(), Self::Error>> + Send

Creates a namespace. Returns an error if the namespace exists.

Source

fn delete( config: &Self::Config, namespace: &str, ) -> impl Future<Output = Result<(), Self::Error>> + Send

Deletes the given namespace.

Provided Methods§

Source

fn delete_all( config: &Self::Config, ) -> impl Future<Output = Result<(), Self::Error>> + Send

Deletes all the existing namespaces.

Source

fn maybe_create_and_connect( config: &Self::Config, namespace: &str, ) -> impl Future<Output = Result<Self, Self::Error>> + Send

Initializes a storage if missing and provides it.

Source

fn recreate_and_connect( config: &Self::Config, namespace: &str, ) -> impl Future<Output = Result<Self, Self::Error>> + Send

Creates a new storage. Overwrites it if this namespace already exists.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§