pub struct SqliteMediaStore { /* private fields */ }
Available on crate feature
sqlite
only.Expand description
An SQLite-based media store.
Implementations§
Source§impl SqliteMediaStore
impl SqliteMediaStore
Sourcepub async fn open(
path: impl AsRef<Path>,
passphrase: Option<&str>,
) -> Result<SqliteMediaStore, OpenStoreError>
pub async fn open( path: impl AsRef<Path>, passphrase: Option<&str>, ) -> Result<SqliteMediaStore, OpenStoreError>
Open the SQLite-based media store at the given path using the given passphrase to encrypt private data.
Sourcepub async fn open_with_config(
config: SqliteStoreConfig,
) -> Result<SqliteMediaStore, OpenStoreError>
pub async fn open_with_config( config: SqliteStoreConfig, ) -> Result<SqliteMediaStore, OpenStoreError>
Open the SQLite-based media store with the config open config.
Trait Implementations§
Source§impl Clone for SqliteMediaStore
impl Clone for SqliteMediaStore
Source§fn clone(&self) -> SqliteMediaStore
fn clone(&self) -> SqliteMediaStore
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for SqliteMediaStore
impl Debug for SqliteMediaStore
Source§impl MediaStore for SqliteMediaStore
impl MediaStore for SqliteMediaStore
Source§fn try_take_leased_lock<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
lease_duration_ms: u32,
key: &'life1 str,
holder: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<bool, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
SqliteMediaStore: 'async_trait,
fn try_take_leased_lock<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
lease_duration_ms: u32,
key: &'life1 str,
holder: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<bool, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
SqliteMediaStore: 'async_trait,
Try to take a lock using the given store.
Source§fn add_media_content<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 MediaRequestParameters,
content: Vec<u8>,
ignore_policy: IgnoreMediaRetentionPolicy,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
fn add_media_content<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 MediaRequestParameters,
content: Vec<u8>,
ignore_policy: IgnoreMediaRetentionPolicy,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
Add a media file’s content in the media store. Read more
Source§fn replace_media_key<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
from: &'life1 MediaRequestParameters,
to: &'life2 MediaRequestParameters,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteMediaStore as MediaStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
SqliteMediaStore: 'async_trait,
fn replace_media_key<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
from: &'life1 MediaRequestParameters,
to: &'life2 MediaRequestParameters,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteMediaStore as MediaStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
SqliteMediaStore: 'async_trait,
Replaces the given media’s content key with another one. Read more
Source§fn get_media_content<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 MediaRequestParameters,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
fn get_media_content<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 MediaRequestParameters,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>, Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
Get a media file’s content out of the media store. Read more
Source§fn remove_media_content<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 MediaRequestParameters,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
fn remove_media_content<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 MediaRequestParameters,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
Remove a media file’s content from the media store. Read more
Source§fn get_media_content_for_uri<'life0, 'life1, 'async_trait>(
&'life0 self,
uri: &'life1 MxcUri,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>, <SqliteMediaStore as MediaStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
fn get_media_content_for_uri<'life0, 'life1, 'async_trait>(
&'life0 self,
uri: &'life1 MxcUri,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>, <SqliteMediaStore as MediaStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
Get a media file’s content associated to an
MxcUri
from the
media store. Read moreSource§fn remove_media_content_for_uri<'life0, 'life1, 'async_trait>(
&'life0 self,
uri: &'life1 MxcUri,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
fn remove_media_content_for_uri<'life0, 'life1, 'async_trait>(
&'life0 self,
uri: &'life1 MxcUri,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
Remove all the media files’ content associated to an
MxcUri
from the
media store. Read moreSource§fn set_media_retention_policy<'life0, 'async_trait>(
&'life0 self,
policy: MediaRetentionPolicy,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteMediaStore as MediaStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
SqliteMediaStore: 'async_trait,
fn set_media_retention_policy<'life0, 'async_trait>(
&'life0 self,
policy: MediaRetentionPolicy,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteMediaStore as MediaStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
SqliteMediaStore: 'async_trait,
Set the
MediaRetentionPolicy
to use for deciding whether to store or
keep media content. Read moreSource§fn media_retention_policy(&self) -> MediaRetentionPolicy
fn media_retention_policy(&self) -> MediaRetentionPolicy
Get the current
MediaRetentionPolicy
.Source§fn set_ignore_media_retention_policy<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 MediaRequestParameters,
ignore_policy: IgnoreMediaRetentionPolicy,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteMediaStore as MediaStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
fn set_ignore_media_retention_policy<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 MediaRequestParameters,
ignore_policy: IgnoreMediaRetentionPolicy,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteMediaStore as MediaStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
Set whether the current
MediaRetentionPolicy
should be ignored for
the media. Read moreSource§fn clean<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteMediaStore as MediaStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
SqliteMediaStore: 'async_trait,
fn clean<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteMediaStore as MediaStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
SqliteMediaStore: 'async_trait,
Clean up the media cache with the current
MediaRetentionPolicy
. Read moreSource§impl MediaStoreInner for SqliteMediaStore
impl MediaStoreInner for SqliteMediaStore
Source§fn media_retention_policy_inner<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Option<MediaRetentionPolicy>, <SqliteMediaStore as MediaStoreInner>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
SqliteMediaStore: 'async_trait,
fn media_retention_policy_inner<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Option<MediaRetentionPolicy>, <SqliteMediaStore as MediaStoreInner>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
SqliteMediaStore: 'async_trait,
The persisted media retention policy in the media cache.
Source§fn set_media_retention_policy_inner<'life0, 'async_trait>(
&'life0 self,
policy: MediaRetentionPolicy,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteMediaStore as MediaStoreInner>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
SqliteMediaStore: 'async_trait,
fn set_media_retention_policy_inner<'life0, 'async_trait>(
&'life0 self,
policy: MediaRetentionPolicy,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteMediaStore as MediaStoreInner>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
SqliteMediaStore: 'async_trait,
Persist the media retention policy in the media cache. Read more
Source§fn add_media_content_inner<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 MediaRequestParameters,
data: Vec<u8>,
last_access: SystemTime,
policy: MediaRetentionPolicy,
ignore_policy: IgnoreMediaRetentionPolicy,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteMediaStore as MediaStoreInner>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
fn add_media_content_inner<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 MediaRequestParameters,
data: Vec<u8>,
last_access: SystemTime,
policy: MediaRetentionPolicy,
ignore_policy: IgnoreMediaRetentionPolicy,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteMediaStore as MediaStoreInner>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
Add a media file’s content in the media cache. Read more
Source§fn set_ignore_media_retention_policy_inner<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 MediaRequestParameters,
ignore_policy: IgnoreMediaRetentionPolicy,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteMediaStore as MediaStoreInner>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
fn set_ignore_media_retention_policy_inner<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 MediaRequestParameters,
ignore_policy: IgnoreMediaRetentionPolicy,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteMediaStore as MediaStoreInner>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
Set whether the current
MediaRetentionPolicy
should be ignored for
the media. Read moreSource§fn get_media_content_inner<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 MediaRequestParameters,
current_time: SystemTime,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>, <SqliteMediaStore as MediaStoreInner>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
fn get_media_content_inner<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 MediaRequestParameters,
current_time: SystemTime,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>, <SqliteMediaStore as MediaStoreInner>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
Get a media file’s content out of the media cache. Read more
Source§fn get_media_content_for_uri_inner<'life0, 'life1, 'async_trait>(
&'life0 self,
uri: &'life1 MxcUri,
current_time: SystemTime,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>, <SqliteMediaStore as MediaStoreInner>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
fn get_media_content_for_uri_inner<'life0, 'life1, 'async_trait>(
&'life0 self,
uri: &'life1 MxcUri,
current_time: SystemTime,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>, <SqliteMediaStore as MediaStoreInner>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteMediaStore: 'async_trait,
Get a media file’s content associated to an
MxcUri
from the
media store. Read moreSource§fn clean_inner<'life0, 'async_trait>(
&'life0 self,
policy: MediaRetentionPolicy,
current_time: SystemTime,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteMediaStore as MediaStoreInner>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
SqliteMediaStore: 'async_trait,
fn clean_inner<'life0, 'async_trait>(
&'life0 self,
policy: MediaRetentionPolicy,
current_time: SystemTime,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteMediaStore as MediaStoreInner>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
SqliteMediaStore: 'async_trait,
Clean up the media cache with the given policy. Read more
Source§fn last_media_cleanup_time_inner<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Option<SystemTime>, <SqliteMediaStore as MediaStoreInner>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
SqliteMediaStore: 'async_trait,
fn last_media_cleanup_time_inner<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Option<SystemTime>, <SqliteMediaStore as MediaStoreInner>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
SqliteMediaStore: 'async_trait,
The time of the last media cache cleanup.
Auto Trait Implementations§
impl Freeze for SqliteMediaStore
impl !RefUnwindSafe for SqliteMediaStore
impl Send for SqliteMediaStore
impl Sync for SqliteMediaStore
impl Unpin for SqliteMediaStore
impl !UnwindSafe for SqliteMediaStore
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> CompatExt for T
impl<T> CompatExt for T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Converts
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Converts
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T, UT> HandleAlloc<UT> for T
impl<T, UT> HandleAlloc<UT> for T
Source§fn consume_handle(handle: Handle) -> Arc<T>
fn consume_handle(handle: Handle) -> Arc<T>
Consume a handle, getting back the initial
Arc<>
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
§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 moreSource§impl<T> IntoMediaStore for Twhere
T: MediaStore + 'static,
impl<T> IntoMediaStore for Twhere
T: MediaStore + 'static,
fn into_media_store(self) -> Arc<dyn MediaStore<Error = MediaStoreError>>
Source§impl<Store> MediaStoreInnerIntegrationTests for Storewhere
Store: MediaStoreInner + Debug,
impl<Store> MediaStoreInnerIntegrationTests for Storewhere
Store: MediaStoreInner + Debug,
Source§async fn test_store_media_retention_policy(&self)
async fn test_store_media_retention_policy(&self)
Test media retention policy storage.
Source§async fn test_media_max_file_size(&self)
async fn test_media_max_file_size(&self)
Test media content’s retention policy max file size.
Source§async fn test_media_max_cache_size(&self)
async fn test_media_max_cache_size(&self)
Test media content’s retention policy max cache size.
Source§async fn test_media_expiry(&self)
async fn test_media_expiry(&self)
Test media content’s retention policy expiry.
Source§async fn test_media_ignore_max_size(&self)
async fn test_media_ignore_max_size(&self)
Test
IgnoreMediaRetentionPolicy
with the media content’s retention
policy max sizes.Source§async fn test_media_ignore_expiry(&self)
async fn test_media_ignore_expiry(&self)
Test
IgnoreMediaRetentionPolicy
with the media content’s retention
policy expiry.Source§async fn test_store_last_media_cleanup_time(&self)
async fn test_store_last_media_cleanup_time(&self)
Test last media cleanup time storage.
Source§impl<Store> MediaStoreIntegrationTests for Storewhere
Store: MediaStore + Debug,
impl<Store> MediaStoreIntegrationTests for Storewhere
Store: MediaStore + Debug,
Source§async fn test_media_content(&self)
async fn test_media_content(&self)
Test media content storage.
Source§async fn test_replace_media_key(&self)
async fn test_replace_media_key(&self)
Test replacing a MXID.