Преглед изворни кода

Use AppError for user insert method.

Lee Morgan пре 1 година
родитељ
комит
94f586c1e7
4 измењених фајлова са 8 додато и 11 уклоњено
  1. 1 0
      Cargo.lock
  2. 1 0
      Cargo.toml
  3. 3 8
      src/controllers/user.rs
  4. 3 3
      src/models/user.rs

+ 1 - 0
Cargo.lock

@@ -1842,6 +1842,7 @@ dependencies = [
  "mongodb",
  "regex",
  "serde",
+ "serde_json",
  "thiserror",
  "tokio",
  "uuid",

+ 1 - 0
Cargo.toml

@@ -8,6 +8,7 @@ actix-web = "4"
 actix-files = "0.6"
 tokio = {version = "1", features = ["full"]}
 serde = {version = "1", features = ["derive"]}
+serde_json = "1.0"
 mongodb = {version = "2.8.0", features = ["tokio-runtime"]}
 bson = "2.8.0"
 uuid = {version = "1", features = ["v4"]}

+ 3 - 8
src/controllers/user.rs

@@ -5,6 +5,7 @@ use regex::Regex;
 use crate::http_error::http_error;
 use crate::dto;
 use crate::app_error::AppError;
+use serde_json::json;
 
 #[post("/api/user")]
 pub async fn create(
@@ -15,14 +16,8 @@ pub async fn create(
     let email = payload.email.to_lowercase();
     valid_email(&email)?;
     user_exists(&user_collection, &email).await?;
-
-    match User::insert(&user_collection, payload.into_inner()).await {
-        Ok(_) => Ok(HttpResponse::Ok().body("{'success': 'true'}")),
-        Err(e) => {
-            eprintln!("{}", e);
-            Ok(http_error(StatusCode::INTERNAL_SERVER_ERROR, "Failed to create user"))
-        }
-    }
+    User::insert(&user_collection, payload.into_inner()).await?;
+    Ok(HttpResponse::Ok().json(json!({"success": true})))
 }
 
 #[post("/api/user/login")]

+ 3 - 3
src/models/user.rs

@@ -20,7 +20,7 @@ pub struct NewUserInput {
 }
 
 impl User {
-    pub async fn insert(collection: &Collection<User>, input: NewUserInput) -> Result<ObjectId, Error> {
+    pub async fn insert(collection: &Collection<User>, input: NewUserInput) -> Result<(), Error> {
         let user = User {
             _id: None,
             email: input.email,
@@ -29,7 +29,7 @@ impl User {
             created_at: DateTime::now()
         };
 
-        let result = collection.insert_one(user, None).await?;
-        Ok(result.inserted_id.as_object_id().unwrap())
+        collection.insert_one(user, None).await?;
+        Ok(())
     }
 }