pub struct VersionedKeyStore { /* private fields */ }Expand description
Versioned key store. Each key maps to an ordered list of versions (newest first). The first entry is the “latest” version for any key.
Implementations§
Source§impl VersionedKeyStore
impl VersionedKeyStore
Sourcepub fn put(&mut self, object: S3Object)
pub fn put(&mut self, object: S3Object)
Insert an object, generating a new version ID and prepending to the version list.
Sourcepub fn get(&self, key: &str) -> Option<&S3Object>
pub fn get(&self, key: &str) -> Option<&S3Object>
Get the current object for a key.
Returns None if the key doesn’t exist or if the latest version is a
delete marker (per S3 semantics, the object appears deleted).
Sourcepub fn get_version(&self, key: &str, version_id: &str) -> Option<&S3Object>
pub fn get_version(&self, key: &str, version_id: &str) -> Option<&S3Object>
Get a specific version of an object.
Sourcepub fn get_mut(&mut self, key: &str) -> Option<&mut S3Object>
pub fn get_mut(&mut self, key: &str) -> Option<&mut S3Object>
Get a mutable reference to the current (latest non-delete-marker) object.
Sourcepub fn get_version_mut(
&mut self,
key: &str,
version_id: &str,
) -> Option<&mut S3Object>
pub fn get_version_mut( &mut self, key: &str, version_id: &str, ) -> Option<&mut S3Object>
Get a mutable reference to a specific version of an object.
Sourcepub fn is_delete_marker(&self, key: &str, version_id: &str) -> bool
pub fn is_delete_marker(&self, key: &str, version_id: &str) -> bool
Check if a specific version ID for a key is a delete marker.
Sourcepub fn delete(&mut self, key: &str, owner: &Owner) -> (Option<String>, bool)
pub fn delete(&mut self, key: &str, owner: &Owner) -> (Option<String>, bool)
Delete an object by inserting a delete marker at the front.
Returns (version_id_of_marker, had_real_object).
Sourcepub fn delete_version(
&mut self,
key: &str,
version_id: &str,
) -> Option<ObjectVersion>
pub fn delete_version( &mut self, key: &str, version_id: &str, ) -> Option<ObjectVersion>
Remove a specific version (object or delete marker) entirely.
Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Count of keys that have at least one non-delete-marker version as their latest entry.
Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Whether the store contains zero entries (no versions or delete markers).
This checks if the underlying BTreeMap is completely empty, which is
the correct semantics for DeleteBucket (AWS requires all versions
and delete markers to be removed before bucket deletion).
Sourcepub fn list_objects(
&self,
prefix: &str,
delimiter: &str,
start_after: &str,
max_keys: usize,
) -> ListResult
pub fn list_objects( &self, prefix: &str, delimiter: &str, start_after: &str, max_keys: usize, ) -> ListResult
List the latest non-delete-marker object for each key.
Sourcepub fn list_object_versions(
&self,
prefix: &str,
delimiter: &str,
key_marker: &str,
version_id_marker: &str,
max_keys: usize,
) -> VersionListResult
pub fn list_object_versions( &self, prefix: &str, delimiter: &str, key_marker: &str, version_id_marker: &str, max_keys: usize, ) -> VersionListResult
List all versions (objects and delete markers).