#[cfg(feature = "diesel")]
pub(in crate::biome) mod diesel;
mod error;
pub use error::UserStoreError;
#[derive(Serialize)]
pub struct SplinterUser {
id: String,
}
impl SplinterUser {
#[cfg(feature = "rest-api")]
pub fn new(user_id: &str) -> Self {
SplinterUser {
id: user_id.to_string(),
}
}
pub fn id(&self) -> String {
self.id.to_string()
}
}
pub trait UserStore<T>: Send + Sync {
fn add_user(&mut self, user: T) -> Result<(), UserStoreError>;
fn update_user(&mut self, updated_user: T) -> Result<(), UserStoreError>;
fn remove_user(&mut self, id: &str) -> Result<(), UserStoreError>;
fn fetch_user(&self, id: &str) -> Result<T, UserStoreError>;
fn list_users(&self) -> Result<Vec<T>, UserStoreError>;
}
pub trait CloneBoxUserStore<T>: UserStore<T> {
fn clone_box(&self) -> Box<dyn CloneBoxUserStore<T>>;
}
impl<T> Clone for Box<dyn CloneBoxUserStore<T>> {
fn clone(&self) -> Box<dyn CloneBoxUserStore<T>> {
self.clone_box()
}
}