pub(in crate::biome) mod models;
mod operations;
mod schema;
use super::{SplinterUser, UserStore, UserStoreError};
use crate::database::ConnectionPool;
use operations::add_user::UserStoreAddUserOperation as _;
use operations::delete_user::UserStoreDeleteUserOperation as _;
use operations::fetch_user::UserStoreFetchUserOperation as _;
use operations::list_users::UserStoreListUsersOperation as _;
use operations::update_user::UserStoreUpdateUserOperation as _;
use operations::UserStoreOperations;
#[derive(Clone)]
pub struct SplinterUserStore {
connection_pool: ConnectionPool,
}
impl SplinterUserStore {
#[allow(dead_code)]
pub fn new(connection_pool: ConnectionPool) -> SplinterUserStore {
SplinterUserStore { connection_pool }
}
}
impl UserStore<SplinterUser> for SplinterUserStore {
fn add_user(&mut self, user: SplinterUser) -> Result<(), UserStoreError> {
UserStoreOperations::new(&*self.connection_pool.get()?).add_user(user.into())
}
fn update_user(&mut self, updated_user: SplinterUser) -> Result<(), UserStoreError> {
UserStoreOperations::new(&*self.connection_pool.get()?).update_user(updated_user)
}
fn remove_user(&mut self, id: &str) -> Result<(), UserStoreError> {
UserStoreOperations::new(&*self.connection_pool.get()?).delete_user(id)
}
fn fetch_user(&self, id: &str) -> Result<SplinterUser, UserStoreError> {
UserStoreOperations::new(&*self.connection_pool.get()?).fetch_user(id)
}
fn list_users(&self) -> Result<Vec<SplinterUser>, UserStoreError> {
UserStoreOperations::new(&*self.connection_pool.get()?).list_users()
}
}