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
impl TableDB
Sourcepub fn table_name(&self) -> String
pub fn table_name(&self) -> String
Get the internal name of the table
Sourcepub fn io_stats(&self, kind: IoStatsKind) -> IoStats
pub fn io_stats(&self, kind: IoStatsKind) -> IoStats
Get the io stats for the table
Sourcepub async fn cleanup(&self) -> VeilidAPIResult<()>
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.
Sourcepub fn get_column_count(&self) -> VeilidAPIResult<u32>
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.
Sourcepub fn estimate_storage_size(
&self,
_col: u32,
key: &[u8],
value: &[u8],
) -> VeilidAPIResult<u64>
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 usize→u64 conversion only widens).
Sourcepub fn estimate_storage_size_json<T>(
&self,
col: u32,
key: &[u8],
value: &T,
) -> VeilidAPIResult<u64>where
T: Serialize,
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.
Sourcepub async fn get_keys(&self, col: u32) -> VeilidAPIResult<Vec<Vec<u8>>>
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).
Sourcepub async fn get_key_count(&self, col: u32) -> VeilidAPIResult<u64>
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.
Sourcepub fn transact(&self) -> TableDBTransaction
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.
Sourcepub async fn store(
&self,
col: u32,
key: &[u8],
value: &[u8],
) -> VeilidAPIResult<()>
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.
Sourcepub async fn store_json<T>(
&self,
col: u32,
key: &[u8],
value: &T,
) -> VeilidAPIResult<()>where
T: Serialize,
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.
Sourcepub async fn load(
&self,
col: u32,
key: &[u8],
) -> VeilidAPIResult<Option<Vec<u8>>>
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).
Sourcepub async fn load_json<T>(
&self,
col: u32,
key: &[u8],
) -> VeilidAPIResult<Option<T>>where
T: for<'de> Deserialize<'de>,
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.
Sourcepub async fn delete(
&self,
col: u32,
key: &[u8],
) -> VeilidAPIResult<Option<Vec<u8>>>
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).
Sourcepub async fn delete_json<T>(
&self,
col: u32,
key: &[u8],
) -> VeilidAPIResult<Option<T>>where
T: for<'de> Deserialize<'de>,
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§
Auto Trait Implementations§
impl !RefUnwindSafe for TableDB
impl !UnwindSafe for TableDB
impl Freeze for TableDB
impl Send for TableDB
impl Sync for TableDB
impl Unpin for TableDB
impl UnsafeUnpin for TableDB
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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