pub struct JournalingKeyValueStore<K> { /* private fields */ }
Expand description

A journaling Key Value Store built from an inner DirectKeyValueStore.

Implementations§

source§

impl<K> JournalingKeyValueStore<K>

source

pub fn new(store: K) -> Self

Creates a new journaling store.

Trait Implementations§

source§

impl<K> AdminKeyValueStore for JournalingKeyValueStore<K>

§

type Config = <K as AdminKeyValueStore>::Config

The configuration needed to interact with a new store.
source§

fn get_name() -> String

The name of this class of stores
source§

async fn connect( config: &Self::Config, namespace: &str, root_key: &[u8], ) -> Result<Self, Self::Error>

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§

async fn list_all(config: &Self::Config) -> Result<Vec<String>, Self::Error>

Obtains the list of existing namespaces.
source§

async fn list_root_keys( config: &Self::Config, namespace: &str, ) -> Result<Vec<Vec<u8>>, Self::Error>

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

async fn delete_all(config: &Self::Config) -> Result<(), Self::Error>

Deletes all the existing namespaces.
source§

async fn exists( config: &Self::Config, namespace: &str, ) -> Result<bool, Self::Error>

Tests if a given namespace exists.
source§

async fn create( config: &Self::Config, namespace: &str, ) -> Result<(), Self::Error>

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

async fn delete( config: &Self::Config, namespace: &str, ) -> Result<(), Self::Error>

Deletes the given namespace.
source§

fn maybe_create_and_connect( config: &Self::Config, namespace: &str, root_key: &[u8], ) -> 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, root_key: &[u8], ) -> impl Future<Output = Result<Self, Self::Error>> + Send

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

impl<K: Clone> Clone for JournalingKeyValueStore<K>

source§

fn clone(&self) -> JournalingKeyValueStore<K>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<K> DeletePrefixExpander for &JournalingKeyValueStore<K>

§

type Error = <K as WithError>::Error

The error type that can happen when expanding the key prefix.
source§

async fn expand_delete_prefix( &self, key_prefix: &[u8], ) -> Result<Vec<Vec<u8>>, Self::Error>

Returns the list of keys to be appended to the list.
source§

impl<K> ReadableKeyValueStore for JournalingKeyValueStore<K>

source§

const MAX_KEY_SIZE: usize = K::MAX_KEY_SIZE

The size constant do not change

§

type Keys = <K as ReadableKeyValueStore>::Keys

The basic types do not change

source§

fn max_stream_queries(&self) -> usize

The read stuff does not change

§

type KeyValues = <K as ReadableKeyValueStore>::KeyValues

Returns type for key-value search operations.
source§

async fn read_value_bytes( &self, key: &[u8], ) -> Result<Option<Vec<u8>>, Self::Error>

Retrieves a Vec<u8> from the database using the provided key.
source§

async fn contains_key(&self, key: &[u8]) -> Result<bool, Self::Error>

Tests whether a key exists in the database
source§

async fn contains_keys( &self, keys: Vec<Vec<u8>>, ) -> Result<Vec<bool>, Self::Error>

Tests whether a list of keys exist in the database
source§

async fn read_multi_values_bytes( &self, keys: Vec<Vec<u8>>, ) -> Result<Vec<Option<Vec<u8>>>, Self::Error>

Retrieves multiple Vec<u8> from the database using the provided keys.
source§

async fn find_keys_by_prefix( &self, key_prefix: &[u8], ) -> Result<Self::Keys, Self::Error>

Finds the key matching the prefix. The prefix is not included in the returned keys.
source§

async fn find_key_values_by_prefix( &self, key_prefix: &[u8], ) -> Result<Self::KeyValues, Self::Error>

Finds the (key,value) pairs matching the prefix. The prefix is not included in the returned keys.
source§

fn read_value<V: DeserializeOwned>( &self, key: &[u8], ) -> impl Future<Output = Result<Option<V>, Self::Error>> + Send
where Self: Sync,

Reads a single key and deserializes the result if present.
source§

fn read_multi_values<V: DeserializeOwned + Send>( &self, keys: Vec<Vec<u8>>, ) -> impl Future<Output = Result<Vec<Option<V>>, Self::Error>> + Send
where Self: Sync,

Reads multiple keys and deserializes the results if present.
source§

impl TestKeyValueStore for JournalingKeyValueStore<DynamoDbStoreInternal>

source§

async fn new_test_config() -> Result<DynamoDbStoreInternalConfig, DynamoDbStoreInternalError>

Obtains a test config
source§

fn new_test_store() -> impl Future<Output = Result<Self, Self::Error>> + Send

Creates a store for testing purposes
source§

impl TestKeyValueStore for JournalingKeyValueStore<ScyllaDbStoreInternal>

source§

async fn new_test_config() -> Result<ScyllaDbStoreInternalConfig, ScyllaDbStoreInternalError>

Obtains a test config
source§

fn new_test_store() -> impl Future<Output = Result<Self, Self::Error>> + Send

Creates a store for testing purposes
source§

impl<K> WithError for JournalingKeyValueStore<K>
where K: WithError,

§

type Error = <K as WithError>::Error

The error type.
source§

impl<K> WritableKeyValueStore for JournalingKeyValueStore<K>

source§

const MAX_VALUE_SIZE: usize = K::MAX_VALUE_SIZE

The size constant do not change

source§

async fn write_batch(&self, batch: Batch) -> Result<(), Self::Error>

Writes the batch in the database.
source§

async fn clear_journal(&self) -> Result<(), Self::Error>

Clears any journal entry that may remain. The journal is located at the root_key.

Auto Trait Implementations§

§

impl<K> Freeze for JournalingKeyValueStore<K>
where K: Freeze,

§

impl<K> RefUnwindSafe for JournalingKeyValueStore<K>
where K: RefUnwindSafe,

§

impl<K> Send for JournalingKeyValueStore<K>
where K: Send,

§

impl<K> Sync for JournalingKeyValueStore<K>
where K: Sync,

§

impl<K> Unpin for JournalingKeyValueStore<K>
where K: Unpin,

§

impl<K> UnwindSafe for JournalingKeyValueStore<K>
where K: UnwindSafe,

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> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
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
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<Choices> CoproductSubsetter<CNil, HNil> for Choices

§

type Remainder = Choices

source§

fn subset( self, ) -> Result<CNil, <Choices as CoproductSubsetter<CNil, HNil>>::Remainder>

Extract a subset of the possible types in a coproduct (or get the remaining possibilities) Read more
source§

impl<F, W, T, D> Deserialize<With<T, W>, D> for F
where W: DeserializeWith<F, T, D>, D: Fallible + ?Sized, F: ?Sized,

source§

fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>

Deserializes using the given deserializer
source§

impl<To, From> DynInto<To> for From
where From: Into<To>,

source§

fn into_box(self: Box<From>) -> To

Converts a boxed object into the target type.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

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

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

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

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
source§

impl<T> LayoutRaw for T

source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Gets the layout of the type.
source§

impl<T, U, I> LiftInto<U, I> for T
where U: LiftFrom<T, I>,

source§

fn lift_into(self) -> U

Performs the indexed conversion.
source§

impl<TraitVariantBlanketType> LocalAdminKeyValueStore for TraitVariantBlanketType
where TraitVariantBlanketType: AdminKeyValueStore,

§

type Config = <TraitVariantBlanketType as AdminKeyValueStore>::Config

The configuration needed to interact with a new store.
source§

fn get_name() -> String

The name of this class of stores
source§

async fn connect( config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config, namespace: &str, root_key: &[u8], ) -> Result<TraitVariantBlanketType, <TraitVariantBlanketType as WithError>::Error>

Connects to an existing namespace using the given configuration.
source§

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

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

async fn list_all( config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config, ) -> Result<Vec<String>, <TraitVariantBlanketType as WithError>::Error>

Obtains the list of existing namespaces.
source§

async fn list_root_keys( config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config, namespace: &str, ) -> Result<Vec<Vec<u8>>, <TraitVariantBlanketType as WithError>::Error>

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

fn delete_all( config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config, ) -> impl Future<Output = Result<(), <TraitVariantBlanketType as WithError>::Error>>

Deletes all the existing namespaces.
source§

async fn exists( config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config, namespace: &str, ) -> Result<bool, <TraitVariantBlanketType as WithError>::Error>

Tests if a given namespace exists.
source§

async fn create( config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config, namespace: &str, ) -> Result<(), <TraitVariantBlanketType as WithError>::Error>

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

async fn delete( config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config, namespace: &str, ) -> Result<(), <TraitVariantBlanketType as WithError>::Error>

Deletes the given namespace.
source§

fn maybe_create_and_connect( config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config, namespace: &str, root_key: &[u8], ) -> impl Future<Output = Result<TraitVariantBlanketType, <TraitVariantBlanketType as WithError>::Error>>

Initializes a storage if missing and provides it.
source§

fn recreate_and_connect( config: &<TraitVariantBlanketType as LocalAdminKeyValueStore>::Config, namespace: &str, root_key: &[u8], ) -> impl Future<Output = Result<TraitVariantBlanketType, <TraitVariantBlanketType as WithError>::Error>>

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

impl<TraitVariantBlanketType> LocalReadableKeyValueStore for TraitVariantBlanketType
where TraitVariantBlanketType: ReadableKeyValueStore,

source§

const MAX_KEY_SIZE: usize = const MAX_KEY_SIZE: usize = <Self as ReadableKeyValueStore>::MAX_KEY_SIZE;

The maximal size of keys that can be stored.
§

type Keys = <TraitVariantBlanketType as ReadableKeyValueStore>::Keys

Returns type for key search operations.
§

type KeyValues = <TraitVariantBlanketType as ReadableKeyValueStore>::KeyValues

Returns type for key-value search operations.
source§

fn max_stream_queries(&self) -> usize

Retrieve the number of stream queries.
source§

async fn read_value_bytes( &self, key: &[u8], ) -> Result<Option<Vec<u8>>, <TraitVariantBlanketType as WithError>::Error>

Retrieves a Vec<u8> from the database using the provided key.
source§

async fn contains_key( &self, key: &[u8], ) -> Result<bool, <TraitVariantBlanketType as WithError>::Error>

Tests whether a key exists in the database
source§

async fn contains_keys( &self, keys: Vec<Vec<u8>>, ) -> Result<Vec<bool>, <TraitVariantBlanketType as WithError>::Error>

Tests whether a list of keys exist in the database
source§

async fn read_multi_values_bytes( &self, keys: Vec<Vec<u8>>, ) -> Result<Vec<Option<Vec<u8>>>, <TraitVariantBlanketType as WithError>::Error>

Retrieves multiple Vec<u8> from the database using the provided keys.
source§

async fn find_keys_by_prefix( &self, key_prefix: &[u8], ) -> Result<<TraitVariantBlanketType as LocalReadableKeyValueStore>::Keys, <TraitVariantBlanketType as WithError>::Error>

Finds the key matching the prefix. The prefix is not included in the returned keys.
source§

async fn find_key_values_by_prefix( &self, key_prefix: &[u8], ) -> Result<<TraitVariantBlanketType as LocalReadableKeyValueStore>::KeyValues, <TraitVariantBlanketType as WithError>::Error>

Finds the (key,value) pairs matching the prefix. The prefix is not included in the returned keys.
source§

fn read_value<V>( &self, key: &[u8], ) -> impl Future<Output = Result<Option<V>, <TraitVariantBlanketType as WithError>::Error>>
where V: DeserializeOwned, TraitVariantBlanketType: Sync,

Reads a single key and deserializes the result if present.
source§

fn read_multi_values<V>( &self, keys: Vec<Vec<u8>>, ) -> impl Future<Output = Result<Vec<Option<V>>, <TraitVariantBlanketType as WithError>::Error>>
where V: DeserializeOwned + Send, TraitVariantBlanketType: Sync,

Reads multiple keys and deserializes the results if present.
source§

impl<TraitVariantBlanketType> LocalWritableKeyValueStore for TraitVariantBlanketType
where TraitVariantBlanketType: WritableKeyValueStore,

source§

const MAX_VALUE_SIZE: usize = const MAX_VALUE_SIZE: usize = <Self as WritableKeyValueStore>::MAX_VALUE_SIZE;

The maximal size of values that can be stored.
source§

async fn write_batch( &self, batch: Batch, ) -> Result<(), <TraitVariantBlanketType as WithError>::Error>

Writes the batch in the database.
source§

async fn clear_journal( &self, ) -> Result<(), <TraitVariantBlanketType as WithError>::Error>

Clears any journal entry that may remain. The journal is located at the root_key.
source§

impl<T> MockResults for T

§

type Results = T

The mock native type of the results for the MockInstance.
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

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

Initializes a with the given initializer. Read more
source§

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

Dereferences the given pointer. Read more
source§

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

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

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

impl<T> Pointee for T

§

type Metadata = ()

The type for metadata in pointers and references to Self.
source§

impl<M, I> RuntimeMemory<&mut I> for M
where M: RuntimeMemory<I>,

source§

fn read<'instance>( &self, instance: &'instance &mut I, location: GuestPointer, length: u32, ) -> Result<Cow<'instance, [u8]>, RuntimeError>

Reads length bytes from memory from the provided location.

source§

fn write( &mut self, instance: &mut &mut I, location: GuestPointer, bytes: &[u8], ) -> Result<(), RuntimeError>

Writes the bytes to memory at the provided location.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<Source> Sculptor<HNil, HNil> for Source

§

type Remainder = Source

source§

fn sculpt(self) -> (HNil, <Source as Sculptor<HNil, HNil>>::Remainder)

Consumes the current HList and returns an HList with the requested shape. Read more
source§

impl<AnyTail> Split<HNil> for AnyTail

§

type Remainder = AnyTail

The tail of remaining elements after splitting up the list.
source§

fn split(self) -> (HNil, <AnyTail as Split<HNil>>::Remainder)

Splits the current heterogeneous list in two.
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

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

§

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>,

§

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.
source§

impl<T> Upcastable for T
where T: Any + Send + Sync + 'static,

source§

fn upcast_any_ref(&self) -> &(dyn Any + 'static)

upcast ref
source§

fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)

upcast mut ref
source§

fn upcast_any_box(self: Box<T>) -> Box<dyn Any>

upcast boxed dyn
source§

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

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> ErasedDestructor for T
where T: 'static,

source§

impl<T> KeyValueStore for T

source§

impl<T> LocalKeyValueStore for T

source§

impl<T> LocalRestrictedKeyValueStore for T

source§

impl<T> MaybeSendSync for T

source§

impl<T> Post for T
where T: Send + Sync,

source§

impl<T> RestrictedKeyValueStore for T