/ backend / src / services / users_service.rs
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  }