pub struct SqliteBackend { /* private fields */ }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
Available on crate feature sqlite-session only.
impl SessionBackend for SqliteBackend
Available on crate feature
sqlite-session only.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
Source§fn cache_peer(&self, peer: &CachedPeer) -> Result<()>
fn cache_peer(&self, peer: &CachedPeer) -> Result<()>
Cache a peer access hash without a full session save. 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