use crate::{actions, errors, models, types::DbPool}; pub trait UserService { fn find_user_by_uid( &self, uid: i32, ) -> Result, errors::DomainError>; fn _find_user_by_name( &self, user_name: String, ) -> Result, errors::DomainError>; fn get_all(&self) -> Result, errors::DomainError>; fn insert_new_user( &self, nu: models::NewUser, ) -> Result; // fn woot(&self) -> i32; fn verify_password( &self, user_name: &str, given_password: &str, ) -> Result; } #[derive(Clone)] pub struct UserServiceImpl { pub pool: DbPool, } impl UserService for UserServiceImpl { fn find_user_by_uid( &self, uid: i32, ) -> Result, errors::DomainError> { let conn = self.pool.get()?; actions::find_user_by_uid(uid, &conn) } fn _find_user_by_name( &self, user_name: String, ) -> Result, errors::DomainError> { let conn = self.pool.get()?; actions::_find_user_by_name(user_name, &conn) } fn get_all(&self) -> Result, errors::DomainError> { let conn = self.pool.get()?; actions::get_all(&conn) } fn insert_new_user( &self, nu: models::NewUser, ) -> Result { let conn = self.pool.get()?; actions::insert_new_user(nu, &conn, Some(8)) } fn verify_password( &self, user_name: &str, given_password: &str, ) -> Result { let conn = self.pool.get()?; actions::verify_password(user_name, given_password, &conn) } // async fn woot(&self) -> i32 { // 1 // } }