You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
1.9 KiB

  1. use crate::{actions, errors, models, types::DbPool};
  2. pub trait UserService {
  3. fn find_user_by_uid(
  4. &self,
  5. uid: i32,
  6. ) -> Result<Option<models::UserDto>, errors::DomainError>;
  7. fn _find_user_by_name(
  8. &self,
  9. user_name: String,
  10. ) -> Result<Option<models::UserDto>, errors::DomainError>;
  11. fn get_all(&self) -> Result<Vec<models::UserDto>, errors::DomainError>;
  12. fn insert_new_user(
  13. &self,
  14. nu: models::NewUser,
  15. ) -> Result<models::UserDto, errors::DomainError>;
  16. // fn woot(&self) -> i32;
  17. fn verify_password(
  18. &self,
  19. user_name: &str,
  20. given_password: &str,
  21. ) -> Result<bool, errors::DomainError>;
  22. }
  23. #[derive(Clone)]
  24. pub struct UserServiceImpl {
  25. pub pool: DbPool,
  26. }
  27. impl UserService for UserServiceImpl {
  28. fn find_user_by_uid(
  29. &self,
  30. uid: i32,
  31. ) -> Result<Option<models::UserDto>, errors::DomainError> {
  32. let conn = self.pool.get()?;
  33. actions::find_user_by_uid(uid, &conn)
  34. }
  35. fn _find_user_by_name(
  36. &self,
  37. user_name: String,
  38. ) -> Result<Option<models::UserDto>, errors::DomainError> {
  39. let conn = self.pool.get()?;
  40. actions::_find_user_by_name(user_name, &conn)
  41. }
  42. fn get_all(&self) -> Result<Vec<models::UserDto>, errors::DomainError> {
  43. let conn = self.pool.get()?;
  44. actions::get_all(&conn)
  45. }
  46. fn insert_new_user(
  47. &self,
  48. nu: models::NewUser,
  49. ) -> Result<models::UserDto, errors::DomainError> {
  50. let conn = self.pool.get()?;
  51. actions::insert_new_user(nu, &conn, Some(8))
  52. }
  53. fn verify_password(
  54. &self,
  55. user_name: &str,
  56. given_password: &str,
  57. ) -> Result<bool, errors::DomainError> {
  58. let conn = self.pool.get()?;
  59. actions::verify_password(user_name, given_password, &conn)
  60. }
  61. // async fn woot(&self) -> i32 {
  62. // 1
  63. // }
  64. }