pub struct SqliteEventCacheStore { /* private fields */ }
Available on crate feature
sqlite
only.Expand description
An SQLite-based event cache store.
Implementations§
Source§impl SqliteEventCacheStore
impl SqliteEventCacheStore
Sourcepub async fn open(
path: impl AsRef<Path>,
passphrase: Option<&str>,
) -> Result<SqliteEventCacheStore, OpenStoreError>
pub async fn open( path: impl AsRef<Path>, passphrase: Option<&str>, ) -> Result<SqliteEventCacheStore, OpenStoreError>
Open the SQLite-based event cache store at the given path using the given passphrase to encrypt private data.
Sourcepub async fn open_with_config(
config: SqliteStoreConfig,
) -> Result<SqliteEventCacheStore, OpenStoreError>
pub async fn open_with_config( config: SqliteStoreConfig, ) -> Result<SqliteEventCacheStore, OpenStoreError>
Open the SQLite-based event cache store with the config open config.
Trait Implementations§
Source§impl Clone for SqliteEventCacheStore
impl Clone for SqliteEventCacheStore
Source§fn clone(&self) -> SqliteEventCacheStore
fn clone(&self) -> SqliteEventCacheStore
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 SqliteEventCacheStore
impl Debug for SqliteEventCacheStore
Source§impl EventCacheStore for SqliteEventCacheStore
impl EventCacheStore for SqliteEventCacheStore
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,
SqliteEventCacheStore: '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,
SqliteEventCacheStore: 'async_trait,
Try to take a lock using the given store.
Source§fn handle_linked_chunk_updates<'life0, 'life1, 'async_trait>(
&'life0 self,
linked_chunk_id: LinkedChunkId<'life1>,
updates: Vec<Update<TimelineEvent, Gap>>,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteEventCacheStore: 'async_trait,
fn handle_linked_chunk_updates<'life0, 'life1, 'async_trait>(
&'life0 self,
linked_chunk_id: LinkedChunkId<'life1>,
updates: Vec<Update<TimelineEvent, Gap>>,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteEventCacheStore: 'async_trait,
An
Update
reflects an operation that has happened inside a linked
chunk. The linked chunk is used by the event cache to store the events
in-memory. This method aims at forwarding this update inside this store.Source§fn load_all_chunks_metadata<'life0, 'life1, 'async_trait>(
&'life0 self,
linked_chunk_id: LinkedChunkId<'life1>,
) -> Pin<Box<dyn Future<Output = Result<Vec<ChunkMetadata>, <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteEventCacheStore: 'async_trait,
fn load_all_chunks_metadata<'life0, 'life1, 'async_trait>(
&'life0 self,
linked_chunk_id: LinkedChunkId<'life1>,
) -> Pin<Box<dyn Future<Output = Result<Vec<ChunkMetadata>, <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteEventCacheStore: 'async_trait,
Load all of the chunks’ metadata for the given
LinkedChunkId
. Read moreSource§fn load_last_chunk<'life0, 'life1, 'async_trait>(
&'life0 self,
linked_chunk_id: LinkedChunkId<'life1>,
) -> Pin<Box<dyn Future<Output = Result<(Option<RawChunk<TimelineEvent, Gap>>, ChunkIdentifierGenerator), <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteEventCacheStore: 'async_trait,
fn load_last_chunk<'life0, 'life1, 'async_trait>(
&'life0 self,
linked_chunk_id: LinkedChunkId<'life1>,
) -> Pin<Box<dyn Future<Output = Result<(Option<RawChunk<TimelineEvent, Gap>>, ChunkIdentifierGenerator), <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteEventCacheStore: 'async_trait,
Load the last chunk of the
LinkedChunk
holding all events of the room
identified by room_id
. Read moreSource§fn load_previous_chunk<'life0, 'life1, 'async_trait>(
&'life0 self,
linked_chunk_id: LinkedChunkId<'life1>,
before_chunk_identifier: ChunkIdentifier,
) -> Pin<Box<dyn Future<Output = Result<Option<RawChunk<TimelineEvent, Gap>>, <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteEventCacheStore: 'async_trait,
fn load_previous_chunk<'life0, 'life1, 'async_trait>(
&'life0 self,
linked_chunk_id: LinkedChunkId<'life1>,
before_chunk_identifier: ChunkIdentifier,
) -> Pin<Box<dyn Future<Output = Result<Option<RawChunk<TimelineEvent, Gap>>, <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteEventCacheStore: 'async_trait,
Load the chunk before the chunk identified by
before_chunk_identifier
of the LinkedChunk
holding all events of the room identified by
room_id
Read moreSource§fn clear_all_linked_chunks<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
SqliteEventCacheStore: 'async_trait,
fn clear_all_linked_chunks<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
SqliteEventCacheStore: 'async_trait,
Clear persisted events for all the rooms. Read more
Source§fn filter_duplicated_events<'life0, 'life1, 'async_trait>(
&'life0 self,
linked_chunk_id: LinkedChunkId<'life1>,
events: Vec<OwnedEventId>,
) -> Pin<Box<dyn Future<Output = Result<Vec<(OwnedEventId, Position)>, <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteEventCacheStore: 'async_trait,
fn filter_duplicated_events<'life0, 'life1, 'async_trait>(
&'life0 self,
linked_chunk_id: LinkedChunkId<'life1>,
events: Vec<OwnedEventId>,
) -> Pin<Box<dyn Future<Output = Result<Vec<(OwnedEventId, Position)>, <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteEventCacheStore: 'async_trait,
Given a set of event IDs, return the duplicated events along with their
position if there are any.
Source§fn find_event<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
room_id: &'life1 RoomId,
event_id: &'life2 EventId,
) -> Pin<Box<dyn Future<Output = Result<Option<TimelineEvent>, <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
SqliteEventCacheStore: 'async_trait,
fn find_event<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
room_id: &'life1 RoomId,
event_id: &'life2 EventId,
) -> Pin<Box<dyn Future<Output = Result<Option<TimelineEvent>, <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
SqliteEventCacheStore: 'async_trait,
Find an event by its ID in a room. Read more
Source§fn find_event_relations<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
room_id: &'life1 RoomId,
event_id: &'life2 EventId,
filters: Option<&'life3 [RelationType]>,
) -> Pin<Box<dyn Future<Output = Result<Vec<(TimelineEvent, Option<Position>)>, <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
SqliteEventCacheStore: 'async_trait,
fn find_event_relations<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
room_id: &'life1 RoomId,
event_id: &'life2 EventId,
filters: Option<&'life3 [RelationType]>,
) -> Pin<Box<dyn Future<Output = Result<Vec<(TimelineEvent, Option<Position>)>, <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
SqliteEventCacheStore: 'async_trait,
Find all the events (alongside their position in the room’s linked
chunk, if available) that relate to a given event. Read more
Source§fn get_room_events<'life0, 'life1, 'async_trait>(
&'life0 self,
room_id: &'life1 RoomId,
) -> Pin<Box<dyn Future<Output = Result<Vec<TimelineEvent>, <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteEventCacheStore: 'async_trait,
fn get_room_events<'life0, 'life1, 'async_trait>(
&'life0 self,
room_id: &'life1 RoomId,
) -> Pin<Box<dyn Future<Output = Result<Vec<TimelineEvent>, <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteEventCacheStore: 'async_trait,
Get all events in this room. Read more
Source§fn save_event<'life0, 'life1, 'async_trait>(
&'life0 self,
room_id: &'life1 RoomId,
event: TimelineEvent,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteEventCacheStore: 'async_trait,
fn save_event<'life0, 'life1, 'async_trait>(
&'life0 self,
room_id: &'life1 RoomId,
event: TimelineEvent,
) -> Pin<Box<dyn Future<Output = Result<(), <SqliteEventCacheStore as EventCacheStore>::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
SqliteEventCacheStore: 'async_trait,
Save an event, that might or might not be part of an existing linked
chunk. Read more
Source§fn remove_room<'life0, 'life1, 'async_trait>(
&'life0 self,
room_id: &'life1 RoomId,
) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
fn remove_room<'life0, 'life1, 'async_trait>(
&'life0 self,
room_id: &'life1 RoomId,
) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
Remove all data tied to a given room from the cache.
Auto Trait Implementations§
impl Freeze for SqliteEventCacheStore
impl !RefUnwindSafe for SqliteEventCacheStore
impl Send for SqliteEventCacheStore
impl Sync for SqliteEventCacheStore
impl Unpin for SqliteEventCacheStore
impl !UnwindSafe for SqliteEventCacheStore
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 more