pub struct FileArtifactService { /* private fields */ }Expand description
Filesystem-backed artifact storage with versioning.
Each artifact version is stored in its own directory with a data file
and a metadata.json sidecar. Session IDs and artifact names are sanitized
to prevent path traversal attacks.
Implementations§
Trait Implementations§
Source§impl ArtifactService for FileArtifactService
impl ArtifactService for FileArtifactService
Source§fn save<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
artifact: Artifact,
) -> Pin<Box<dyn Future<Output = Result<ArtifactMetadata, ArtifactError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn save<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
artifact: Artifact,
) -> Pin<Box<dyn Future<Output = Result<ArtifactMetadata, ArtifactError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Save an artifact, creating a new version if it already exists.
Source§fn load<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
name: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Artifact>, ArtifactError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn load<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
name: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Artifact>, ArtifactError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Load the latest version of an artifact.
Source§fn load_version<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
name: &'life2 str,
version: u32,
) -> Pin<Box<dyn Future<Output = Result<Option<Artifact>, ArtifactError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn load_version<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
name: &'life2 str,
version: u32,
) -> Pin<Box<dyn Future<Output = Result<Option<Artifact>, ArtifactError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Load a specific version of an artifact.
Source§fn list<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<ArtifactMetadata>, ArtifactError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list<'life0, 'life1, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<ArtifactMetadata>, ArtifactError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
List all artifact metadata for a session.
Source§fn delete<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
name: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), ArtifactError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn delete<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_id: &'life1 str,
name: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<(), ArtifactError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Delete all versions of an artifact.
Auto Trait Implementations§
impl Freeze for FileArtifactService
impl RefUnwindSafe for FileArtifactService
impl Send for FileArtifactService
impl Sync for FileArtifactService
impl Unpin for FileArtifactService
impl UnwindSafe for FileArtifactService
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
Mutably borrows from an owned value. Read more
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
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 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>
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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].