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.

67 lines
1.9 KiB

4 years ago
  1. use diesel::prelude::*;
  2. use crate::models;
  3. pub fn find_user_by_uid(
  4. uid: i32,
  5. conn: &SqliteConnection,
  6. ) -> Result<Option<models::User>, diesel::result::Error> {
  7. use crate::schema::users::dsl::*;
  8. let maybe_user = users.find(uid).first::<models::User>(conn).optional();
  9. // Ok(user)
  10. maybe_user
  11. }
  12. pub fn find_user_by_name(
  13. user_name: String,
  14. conn: &SqliteConnection,
  15. ) -> Result<Option<models::User>, diesel::result::Error> {
  16. use crate::schema::users::dsl::*;
  17. let maybe_user = users
  18. .filter(name.eq(user_name))
  19. .first::<models::User>(conn)
  20. .optional();
  21. maybe_user
  22. }
  23. pub fn get_all(
  24. conn: &SqliteConnection,
  25. ) -> Result<Option<Vec<models::User>>, diesel::result::Error> {
  26. use crate::schema::users::dsl::*;
  27. users.load::<models::User>(conn).optional()
  28. }
  29. /// Run query using Diesel to insert a new database row and return the result.
  30. pub fn insert_new_user(
  31. nu: &models::NewUser,
  32. conn: &SqliteConnection,
  33. ) -> Result<models::User, diesel::result::Error> {
  34. // It is common when using Diesel with Actix web to import schema-related
  35. // modules inside a function's scope (rather than the normal module's scope)
  36. // to prevent import collisions and namespace pollution.
  37. use crate::schema::users::dsl::*;
  38. // let new_user = models::User {
  39. // id: Uuid::new_v4().to_string(),
  40. // name: nu.name.to_string(),
  41. // };
  42. // let x = users.load::<models::User>(conn).optional();
  43. // let target = users.find("4");
  44. // let test_user = models::User {
  45. // id: "5".to_owned(),
  46. // name: "who".to_owned(),
  47. // };
  48. // let update_result = diesel::update(target).set(&test_user).execute(conn);
  49. diesel::insert_into(users).values(nu).execute(conn)?;
  50. let user = users
  51. .filter(name.eq(nu.name.clone()))
  52. .first::<models::User>(conn);
  53. user
  54. // Ok(nu.clone())
  55. }