use std::path::Path; use std::thread::JoinHandle; use crossbeam_channel::Sender; use eyre::Result; use crate::Config; use super::{db_message::DBMessage, query::Query, query_result::QueryResult}; pub trait DatabaseLike: Clone + Send { fn new(path: impl AsRef) -> Result where Self: Sized; fn total_mails(&self) -> Result; fn query(&self, query: &Query) -> Result>; fn import(self) -> (Sender, JoinHandle>); fn save_config(&self, config: Config) -> Result<()>; }