Skip to main content

TableDB

Struct TableDB 

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

A handle to an opened encrypted key-value table. Cheap to clone; clones share the same underlying database.

Implementations§

Source§

impl TableDB

Source

pub fn table_name(&self) -> String

Get the internal name of the table

Source

pub fn io_stats(&self, kind: IoStatsKind) -> IoStats

Get the io stats for the table

Source

pub async fn cleanup(&self) -> VeilidAPIResult<()>

Cleanup the database

Blocks on on-disk database maintenance (vacuum).

Errors with VeilidAPIError::Internal if the backing-store vacuum fails.

Source

pub fn get_column_count(&self) -> VeilidAPIResult<u32>

Get the total number of columns in the TableDB. Not the number of columns that were opened, rather the total number that could be opened.

Errors with VeilidAPIError::Generic if the backing store fails to report its column count.

Source

pub fn estimate_storage_size( &self, _col: u32, key: &[u8], value: &[u8], ) -> VeilidAPIResult<u64>

Estimate the storage size for a table entry Overestimates size on disk because records are compressed in the tabledb Rough guess for sqlite based on their file format. Other databases may vary.

Infallible on all supported targets (the usizeu64 conversion only widens).

Source

pub fn estimate_storage_size_json<T>( &self, col: u32, key: &[u8], value: &T, ) -> VeilidAPIResult<u64>
where T: Serialize,

Estimate the storage size for a table entry if it is json encoded

Errors with VeilidAPIError::Internal if value fails to JSON-serialize.

Source

pub async fn get_keys(&self, col: u32) -> VeilidAPIResult<Vec<Vec<u8>>>

Get the list of keys in a column of the TableDB

Blocks on on-disk reads.

Errors with VeilidAPIError::Generic if col is at or above the opened column count, if the backing-store read fails, or if a stored key fails to decompress (wrong device encryption key or corrupt data).

Source

pub async fn get_key_count(&self, col: u32) -> VeilidAPIResult<u64>

Get the number of keys in a column of the TableDB

Blocks on on-disk reads.

Errors with VeilidAPIError::Generic if col is at or above the opened column count or the backing-store read fails.

Source

pub fn transact(&self) -> TableDBTransaction

Start a TableDB write transaction. The transaction object must be committed or rolled back before dropping.

Returns a handle whose commit or rollback the caller must call; dropping it uncompleted logs an error and silently discards the writes.

Source

pub async fn store( &self, col: u32, key: &[u8], value: &[u8], ) -> VeilidAPIResult<()>

Store a key with a value in a column in the TableDB. Performs a single transaction immediately.

Blocks on the on-disk write.

Errors with VeilidAPIError::Generic if col is at or above the opened column count or the backing-store write fails.

Source

pub async fn store_json<T>( &self, col: u32, key: &[u8], value: &T, ) -> VeilidAPIResult<()>
where T: Serialize,

Store a key in json format with a value in a column in the TableDB. Performs a single transaction immediately.

Blocks on the on-disk write.

Errors with VeilidAPIError::Internal if value fails to JSON-serialize, otherwise the same errors as store.

Source

pub async fn load( &self, col: u32, key: &[u8], ) -> VeilidAPIResult<Option<Vec<u8>>>

Read a key from a column in the TableDB immediately.

Blocks on the on-disk read.

Returns Ok(None) if the key is absent. Errors with VeilidAPIError::Generic if col is at or above the opened column count, if the backing-store read fails, or if the stored value fails to decompress (wrong device encryption key or corrupt data).

Source

pub async fn load_json<T>( &self, col: u32, key: &[u8], ) -> VeilidAPIResult<Option<T>>
where T: for<'de> Deserialize<'de>,

Read an serde-json key from a column in the TableDB immediately

Blocks on the on-disk read.

Errors with VeilidAPIError::Internal if the stored value fails to JSON-deserialize into T, otherwise the same errors as load.

Source

pub async fn delete( &self, col: u32, key: &[u8], ) -> VeilidAPIResult<Option<Vec<u8>>>

Delete key with from a column in the TableDB

Blocks on the on-disk write.

Returns Ok(None) if the key was absent. Errors with VeilidAPIError::Generic if col is at or above the opened column count, if the backing-store delete fails, or if the prior value fails to decompress (wrong device encryption key or corrupt data).

Source

pub async fn delete_json<T>( &self, col: u32, key: &[u8], ) -> VeilidAPIResult<Option<T>>
where T: for<'de> Deserialize<'de>,

Delete serde-json key with from a column in the TableDB

Blocks on the on-disk write.

Errors with VeilidAPIError::Internal if the prior value fails to JSON-deserialize into T, otherwise the same errors as delete.

Trait Implementations§

Source§

impl Clone for TableDB

Source§

fn clone(&self) -> TableDB

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for TableDB

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

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

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
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<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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

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