users_service.rs
1 use sqlx::Pool; 2 3 use crate::{ 4 db::{account_repository, new_transaction, DB}, 5 models::account::Account, 6 util::accounts_error::AccountsError, 7 }; 8 9 #[derive(Debug, thiserror::Error)] 10 pub enum UsersError { 11 #[error("An internal error occured")] 12 Internal, 13 } 14 15 impl From<sqlx::Error> for UsersError { 16 fn from(_: sqlx::Error) -> Self { 17 UsersError::Internal 18 } 19 } 20 21 impl From<AccountsError> for UsersError { 22 fn from(_: AccountsError) -> Self { 23 UsersError::Internal 24 } 25 } 26 27 pub async fn get_all_users(db_pool: &Pool<DB>) -> Result<Vec<Account>, UsersError> { 28 let mut transaction = new_transaction(db_pool).await?; 29 30 let accs = account_repository::get_all_accounts(&mut transaction) 31 .await 32 .map_err(|err| { 33 error!("Failed to retrieve all users, err: {}", err); 34 err 35 })?; 36 37 Ok(accs) 38 }