use super::UserStoreOperations;
use crate::biome::user::store::diesel::models::UserModel;
use crate::biome::user::store::diesel::schema::splinter_user;
use crate::biome::user::store::error::UserStoreError;
use diesel::{dsl::insert_into, prelude::*};
pub(in crate::biome::user) trait UserStoreAddUserOperation {
fn add_user(&self, user_model: UserModel) -> Result<(), UserStoreError>;
}
impl<'a, C> UserStoreAddUserOperation for UserStoreOperations<'a, C>
where
C: diesel::Connection,
<C as diesel::Connection>::Backend: diesel::backend::SupportsDefaultKeyword,
<C as diesel::Connection>::Backend: 'static,
{
fn add_user(&self, user_model: UserModel) -> Result<(), UserStoreError> {
insert_into(splinter_user::table)
.values(&vec![user_model])
.execute(self.conn)
.map(|_| ())
.map_err(|err| UserStoreError::OperationError {
context: "Failed to add user".to_string(),
source: Box::new(err),
})?;
Ok(())
}
}