classy_sync/data_stores/
replicate_datastore.rs1use crate::argument_parser::SyncResources;
2
3use super::sync_requests::{AllSyncResult, SelectSync, SyncOptions, TermSyncResult};
4use crate::errors::Error;
5
6pub trait Datastore {
9 fn set_request_sync_resources(&mut self, resources: SyncResources) -> Result<(), Error>;
10 fn unset_request_sync_resources(&mut self, resources: SyncResources) -> Result<(), Error>;
11 fn generate_sync_options(&mut self) -> Result<SyncOptions, Error>;
12
13 fn execute_all_request_sync(&mut self, all_sync_response: AllSyncResult) -> Result<(), Error>;
14 fn execute_select_request_sync(
15 &mut self,
16 select_sync_request: SelectSync,
17 select_sync_response: TermSyncResult,
18 ) -> Result<(), Error>;
19}
20
21pub fn get_datastore() -> Result<Box<dyn Datastore>, Error> {
23 #[cfg(feature = "sqlite")]
24 return Ok(Box::new(super::sqlite::Sqlite::new()?));
25
26 #[allow(unreachable_code)]
27 {
28 unreachable!("A data store backend feature must be enabled at compile time.")
29 }
30}