pub struct SqliteBackend { /* private fields */ }Available on crate feature
sqlite-session only.Expand description
SQLite-backed session (via rusqlite).
Enabled with the sqlite-session Cargo feature.
§Schema
Five tables are created on first open (idempotent):
| Table | Purpose |
|---|---|
meta | home_dc_id and future scalar values |
dcs | One row per DC (auth key, address, flags, …) |
update_state | Single-row pts / qts / date / seq |
channel_pts | Per-channel pts |
peers | Access-hash cache |
§Granular writes
All SessionBackend extension methods (update_dc, set_home_dc,
apply_update_state, cache_peer) issue single-row SQL statements
instead of the default load-mutate-save round-trip, so they are safe to
call frequently (e.g. on every update batch) without performance concerns.
Implementations§
Trait Implementations§
Source§impl SessionBackend for SqliteBackend
impl SessionBackend for SqliteBackend
fn save(&self, session: &PersistedSession) -> Result<()>
fn load(&self) -> Result<Option<PersistedSession>>
fn delete(&self) -> Result<()>
Source§fn update_dc(&self, entry: &DcEntry) -> Result<()>
fn update_dc(&self, entry: &DcEntry) -> Result<()>
Update a single DC entry without rewriting the entire session. Read more
Source§fn set_home_dc(&self, dc_id: i32) -> Result<()>
fn set_home_dc(&self, dc_id: i32) -> Result<()>
Change the home DC without touching any other session data. Read more
Source§fn apply_update_state(&self, update: UpdateStateChange) -> Result<()>
fn apply_update_state(&self, update: UpdateStateChange) -> Result<()>
Apply a single update-sequence change without a full save/load. Read more
Auto Trait Implementations§
impl !Freeze for SqliteBackend
impl RefUnwindSafe for SqliteBackend
impl Send for SqliteBackend
impl Sync for SqliteBackend
impl Unpin for SqliteBackend
impl UnsafeUnpin for SqliteBackend
impl UnwindSafe for SqliteBackend
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> 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>
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