Skip to main content

ObjectStoreAdapter

Struct ObjectStoreAdapter 

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

Source

pub fn new(store: S) -> ObjectStoreAdapter<S>

Source

pub fn into_inner(self) -> S

Trait Implementations§

Source§

impl<S> ResourceStore for ObjectStoreAdapter<S>

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,

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,

Create a resource, returning its initial store version alongside it. Read more
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,

Delete a resource and all connected associations by its identifier. Read more
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,

Update a resource under an optimistic-concurrency precondition. Read more
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,

Rename a resource to a new (possibly namespaced) name. Read more
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,

Add an association between two resources. Read more
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,

Remove an association between two resources. Read more
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,

List associations of a resource. Read more
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,

List associations of a resource together with each association’s properties. Read more
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,

Create a new resource. Read more
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,

Atomically delete one resource and create another in one transaction. Read more
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,

Update a resource unconditionally. Read more
Source§

impl<S> ResourceStoreReader for ObjectStoreAdapter<S>
where S: SecretObjectReader<ObjectLabel> + Send + Sync + 'static,

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,

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,

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,

Get a resource by its identifier. Read more
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,

List resources. Read more
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,

Get multiple resources by their identifiers. Read more

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> 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> 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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. 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, 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