pub struct ObjectStoreAdapter<S> { /* private fields */ }Expand description
Adapter that implements ResourceStore for any store implementing
the generic ObjectStore and AssociationStore traits.
This bridges the typed Resource/ResourceIdent API surface to the
generic Object<ObjectLabel> layer, using the TryFrom conversions
generated by object_conversions!.
Implementations§
Source§impl<S> ObjectStoreAdapter<S>
impl<S> ObjectStoreAdapter<S>
pub fn new(store: S) -> ObjectStoreAdapter<S>
pub fn into_inner(self) -> S
Trait Implementations§
Source§impl<S> ResourceStore for ObjectStoreAdapter<S>where
S: ObjectStore<ObjectLabel> + AssociationStore<ObjectLabel> + SecretObjectReader<ObjectLabel> + Transactional<ObjectLabel> + Send + Sync + 'static,
impl<S> ResourceStore for ObjectStoreAdapter<S>where
S: ObjectStore<ObjectLabel> + AssociationStore<ObjectLabel> + SecretObjectReader<ObjectLabel> + Transactional<ObjectLabel> + Send + Sync + 'static,
Source§fn replace_atomically_versioned<'life0, 'life1, 'async_trait>(
&'life0 self,
delete: &'life1 ResourceIdent,
create: Resource,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef, u64), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
fn replace_atomically_versioned<'life0, 'life1, 'async_trait>(
&'life0 self,
delete: &'life1 ResourceIdent,
create: Resource,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef, u64), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
Run the delete + create in one backend transaction so the two land atomically
(see the trait method’s contract). The transaction closure operates on the raw
StoreExec surface, so the delete ident is resolved to a uuid before the
transaction begins and the create Resource is converted to an Object up front.
Neither StagingTable nor Table (the sole in-tree caller’s resources) carries a
sensitive field, so bypassing the managed sealing layer inside the tx is sound.
Source§fn create_versioned<'life0, 'async_trait>(
&'life0 self,
resource: Resource,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef, u64), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
fn create_versioned<'life0, 'async_trait>(
&'life0 self,
resource: Resource,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef, u64), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
Source§fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 ResourceIdent,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 ResourceIdent,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
Source§fn update_checked<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 ResourceIdent,
resource: Resource,
precondition: Precondition,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef, u64), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
fn update_checked<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 ResourceIdent,
resource: Resource,
precondition: Precondition,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef, u64), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
Source§fn rename<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 ResourceIdent,
new_name: &'life2 ResourceName,
precondition: Precondition,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef, u64), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
fn rename<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
id: &'life1 ResourceIdent,
new_name: &'life2 ResourceName,
precondition: Precondition,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef, u64), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
Source§fn add_association<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
from: &'life1 ResourceIdent,
to: &'life2 ResourceIdent,
label: &'life3 AssociationLabel,
properties: Option<HashMap<String, Value>>,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
fn add_association<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
from: &'life1 ResourceIdent,
to: &'life2 ResourceIdent,
label: &'life3 AssociationLabel,
properties: Option<HashMap<String, Value>>,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
Source§fn remove_association<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
from: &'life1 ResourceIdent,
to: &'life2 ResourceIdent,
label: &'life3 AssociationLabel,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
fn remove_association<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
from: &'life1 ResourceIdent,
to: &'life2 ResourceIdent,
label: &'life3 AssociationLabel,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
Source§fn list_associations<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
resource: &'life1 ResourceIdent,
label: &'life2 AssociationLabel,
target_label: Option<&'life3 ResourceIdent>,
max_results: Option<usize>,
page_token: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<(Vec<ResourceIdent>, Option<String>), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
fn list_associations<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
resource: &'life1 ResourceIdent,
label: &'life2 AssociationLabel,
target_label: Option<&'life3 ResourceIdent>,
max_results: Option<usize>,
page_token: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<(Vec<ResourceIdent>, Option<String>), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
Source§fn list_associations_with_properties<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
resource: &'life1 ResourceIdent,
label: &'life2 AssociationLabel,
target_label: Option<&'life3 ResourceIdent>,
max_results: Option<usize>,
page_token: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<(Vec<(ResourceIdent, Option<HashMap<String, Value>>)>, Option<String>), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
fn list_associations_with_properties<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
resource: &'life1 ResourceIdent,
label: &'life2 AssociationLabel,
target_label: Option<&'life3 ResourceIdent>,
max_results: Option<usize>,
page_token: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<(Vec<(ResourceIdent, Option<HashMap<String, Value>>)>, Option<String>), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
Source§fn create<'life0, 'async_trait>(
&'life0 self,
resource: Resource,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn create<'life0, 'async_trait>(
&'life0 self,
resource: Resource,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Source§fn replace_atomically<'life0, 'life1, 'async_trait>(
&'life0 self,
delete: &'life1 ResourceIdent,
create: Resource,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn replace_atomically<'life0, 'life1, 'async_trait>(
&'life0 self,
delete: &'life1 ResourceIdent,
create: Resource,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Source§fn update<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 ResourceIdent,
resource: Resource,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn update<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 ResourceIdent,
resource: Resource,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Source§impl<S> ResourceStoreReader for ObjectStoreAdapter<S>
impl<S> ResourceStoreReader for ObjectStoreAdapter<S>
Source§fn get_versioned<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 ResourceIdent,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef, u64), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
fn get_versioned<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 ResourceIdent,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef, u64), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
Surface the stored object’s version alongside the resource, so a caller can
pin a later CAS write to it (see ResourceStoreReader::get_versioned).
Source§fn get_with_secrets<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 ResourceIdent,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
fn get_with_secrets<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 ResourceIdent,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
Override the redacting default: read the object with its sensitive fields decrypted
(via the inner store’s SecretObjectReader) so the typed model is fully hydrated.
Source§fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 ResourceIdent,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 ResourceIdent,
) -> Pin<Box<dyn Future<Output = Result<(Resource, ResourceRef), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
Source§fn list<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
label: &'life1 ObjectLabel,
namespace: Option<&'life2 ResourceName>,
max_results: Option<usize>,
page_token: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<(Vec<Resource>, Option<String>), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
fn list<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
label: &'life1 ObjectLabel,
namespace: Option<&'life2 ResourceName>,
max_results: Option<usize>,
page_token: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<(Vec<Resource>, Option<String>), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
ObjectStoreAdapter<S>: 'async_trait,
Source§fn get_many<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [ResourceIdent],
) -> Pin<Box<dyn Future<Output = Result<Vec<(Resource, ResourceRef)>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn get_many<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [ResourceIdent],
) -> Pin<Box<dyn Future<Output = Result<Vec<(Resource, ResourceRef)>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Auto Trait Implementations§
impl<S> Freeze for ObjectStoreAdapter<S>where
S: Freeze,
impl<S> RefUnwindSafe for ObjectStoreAdapter<S>where
S: RefUnwindSafe,
impl<S> Send for ObjectStoreAdapter<S>where
S: Send,
impl<S> Sync for ObjectStoreAdapter<S>where
S: Sync,
impl<S> Unpin for ObjectStoreAdapter<S>where
S: Unpin,
impl<S> UnsafeUnpin for ObjectStoreAdapter<S>where
S: UnsafeUnpin,
impl<S> UnwindSafe for ObjectStoreAdapter<S>where
S: UnwindSafe,
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> 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