pub struct Store { /* private fields */ }Implementations§
Source§impl Store
impl Store
pub fn migrations() -> Migrations<'static>
pub fn open(path: &Path) -> Result<Store, StoreError>
Sourcepub fn open_account(paths: &Paths, account: &str) -> Result<Store, StoreError>
pub fn open_account(paths: &Paths, account: &str) -> Result<Store, StoreError>
The account’s store, in its private directory.
pub fn open_in_memory() -> Result<Store, StoreError>
Sourcepub fn transaction<T, E: From<StoreError>>(
&self,
f: impl FnOnce() -> Result<T, E>,
) -> Result<T, E>
pub fn transaction<T, E: From<StoreError>>( &self, f: impl FnOnce() -> Result<T, E>, ) -> Result<T, E>
Runs f in one transaction; any error rolls back everything f wrote.
pub fn folders(&self) -> Result<Vec<Folder>, StoreError>
pub fn folder(&self, name: &str) -> Result<Option<Folder>, StoreError>
pub fn upsert_folder(&self, folder: &Folder) -> Result<(), StoreError>
Sourcepub fn initial_uid_next(&self, folder: &str) -> Result<u32, StoreError>
pub fn initial_uid_next(&self, folder: &str) -> Result<u32, StoreError>
One above the highest uid already on the server when folder was first tracked; 0 when unknown.
pub fn set_initial_uid_next( &self, folder: &str, uid_next: u32, ) -> Result<(), StoreError>
Sourcepub fn rules_uid(&self, folder: &str) -> Result<u32, StoreError>
pub fn rules_uid(&self, folder: &str) -> Result<u32, StoreError>
The highest uid the rules have evaluated in folder; above it mail is fresh. 0 when unknown.
pub fn set_rules_uid(&self, folder: &str, uid: u32) -> Result<(), StoreError>
Sourcepub fn notified_uid(&self, folder: &str) -> Result<u32, StoreError>
pub fn notified_uid(&self, folder: &str) -> Result<u32, StoreError>
The highest uid new-mail notifications have covered in folder; 0 when unknown.
pub fn set_notified_uid(&self, folder: &str, uid: u32) -> Result<(), StoreError>
Sourcepub fn flags_synced(&self, folder: &str) -> Result<(u64, i64), StoreError>
pub fn flags_synced(&self, folder: &str) -> Result<(u64, i64), StoreError>
The HIGHESTMODSEQ (0 when unknown) and Unix time at which folder’s flags were last fully up to date.
pub fn set_flags_synced( &self, folder: &str, highest_modseq: u64, at: i64, ) -> Result<(), StoreError>
pub fn reset_folder( &self, name: &str, uidvalidity: u32, ) -> Result<(), StoreError>
Sourcepub fn remove_folder(&self, name: &str) -> Result<(), StoreError>
pub fn remove_folder(&self, name: &str) -> Result<(), StoreError>
Removes the folder with its messages and its rule and notification state.
pub fn insert_message(&self, m: &Message) -> Result<(), StoreError>
pub fn update_flags( &self, folder: &str, uid: u32, flags: &str, ) -> Result<(), StoreError>
pub fn remove_message(&self, folder: &str, uid: u32) -> Result<(), StoreError>
Sourcepub fn remove_missing(
&self,
folder: &str,
upto_uid: u32,
present: &[u32],
) -> Result<usize, StoreError>
pub fn remove_missing( &self, folder: &str, upto_uid: u32, present: &[u32], ) -> Result<usize, StoreError>
Removes rows with uid <= upto_uid whose uid is not in present.
pub fn messages( &self, folder: &str, limit: u32, filter: Filter, ) -> Result<Vec<Message>, StoreError>
Sourcepub fn threads(
&self,
folder: &str,
limit: u32,
filter: Filter,
) -> Result<Vec<Vec<Message>>, StoreError>
pub fn threads( &self, folder: &str, limit: u32, filter: Filter, ) -> Result<Vec<Vec<Message>>, StoreError>
Threads in folder with a member filter keeps, the most recently active first; each thread’s messages oldest
first.
Sourcepub fn thread_summaries(
&self,
folder: &str,
limit: u32,
filter: Filter,
) -> Result<Vec<ThreadSummary>, StoreError>
pub fn thread_summaries( &self, folder: &str, limit: u32, filter: Filter, ) -> Result<Vec<ThreadSummary>, StoreError>
One row per thread in folder with a member filter keeps, the most recently active first. With exactly one MAX() in the query, SQLite fills
the bare columns from the row holding it: the thread’s latest message. A second MAX() anywhere breaks that.
pub fn thread_members( &self, folder: &str, thread_id: &str, ) -> Result<Vec<MessageSummary>, StoreError>
pub fn messages_in_folder( &self, folder: &str, ) -> Result<Vec<Message>, StoreError>
Sourcepub fn messages_without_body(
&self,
folder: &str,
) -> Result<Vec<Message>, StoreError>
pub fn messages_without_body( &self, folder: &str, ) -> Result<Vec<Message>, StoreError>
The messages in folder whose body is not downloaded yet, by uid.
Sourcepub fn lacks_bodies(&self, folder: Option<&str>) -> Result<bool, StoreError>
pub fn lacks_bodies(&self, folder: Option<&str>) -> Result<bool, StoreError>
Whether any message in folder, or in any folder, lacks its body.
Sourcepub fn search(
&self,
query: &str,
folder: Option<&str>,
limit: u32,
) -> Result<Vec<Message>, StoreError>
pub fn search( &self, query: &str, folder: Option<&str>, limit: u32, ) -> Result<Vec<Message>, StoreError>
FTS5 search, newest first. A query FTS5 cannot parse, such as a bare email address, is retried with every word quoted.
Sourcepub fn search_headers(
&self,
query: &str,
folder: Option<&str>,
limit: u32,
) -> Result<Vec<Message>, StoreError>
pub fn search_headers( &self, query: &str, folder: Option<&str>, limit: u32, ) -> Result<Vec<Message>, StoreError>
Search over subject and addresses only; every word is quoted, because FTS5 syntax could escape the column filter.
pub fn message( &self, folder: &str, uid: u32, ) -> Result<Option<Message>, StoreError>
pub fn raw(&self, folder: &str, uid: u32) -> Result<Option<Vec<u8>>, StoreError>
pub fn set_raw( &self, folder: &str, uid: u32, raw: &[u8], body_text: &str, ) -> Result<(), StoreError>
Sourcepub fn rule_first_seen(
&self,
name: &str,
definition: &str,
now: i64,
) -> Result<i64, StoreError>
pub fn rule_first_seen( &self, name: &str, definition: &str, now: i64, ) -> Result<i64, StoreError>
Returns when the rule was first seen with this definition, starting its clock at now if it is new or changed.
Sourcepub fn restart_rule_clock(&self, name: &str, now: i64) -> Result<(), StoreError>
pub fn restart_rule_clock(&self, name: &str, now: i64) -> Result<(), StoreError>
Starts the rule’s clock at now, replacing any stale first-seen time; the next load adopts its definition.
Sourcepub fn mark_rules_seen_except(
&self,
except: &[String],
) -> Result<(), StoreError>
pub fn mark_rules_seen_except( &self, except: &[String], ) -> Result<(), StoreError>
Moves rules_uid up to last_uid in every folder not in except, so their mail stops counting as fresh.
Sourcepub fn forget_rules_except(&self, names: &[&str]) -> Result<(), StoreError>
pub fn forget_rules_except(&self, names: &[&str]) -> Result<(), StoreError>
Drops first-seen times of rules no longer in the file, so a re-added rule starts fresh instead of acting on history.