pub(in crate::biome) mod models;
mod operations;
pub(in crate::biome) mod schema;
use super::{User, 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 DieselUserStore {
connection_pool: ConnectionPool,
}
impl DieselUserStore {
#[allow(dead_code)]
pub fn new(connection_pool: ConnectionPool) -> DieselUserStore {
DieselUserStore { connection_pool }
}
}
impl UserStore for DieselUserStore {
fn add_user(&self, user: User) -> Result<(), UserStoreError> {
UserStoreOperations::new(&*self.connection_pool.get()?).add_user(user.into())
}
fn update_user(&self, updated_user: User) -> Result<(), UserStoreError> {
UserStoreOperations::new(&*self.connection_pool.get()?).update_user(updated_user)
}
fn remove_user(&self, id: &str) -> Result<(), UserStoreError> {
UserStoreOperations::new(&*self.connection_pool.get()?).delete_user(id)
}
fn fetch_user(&self, id: &str) -> Result<User, UserStoreError> {
UserStoreOperations::new(&*self.connection_pool.get()?).fetch_user(id)
}
fn list_users(&self) -> Result<Vec<User>, UserStoreError> {
UserStoreOperations::new(&*self.connection_pool.get()?).list_users()
}
}