add select all users
This commit is contained in:
parent
8b7410d0c7
commit
58245e3b0d
67
Cargo.lock
generated
67
Cargo.lock
generated
@ -293,6 +293,19 @@ version = "0.22.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
|
||||
|
||||
[[package]]
|
||||
name = "bcrypt"
|
||||
version = "0.15.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e65938ed058ef47d92cf8b346cc76ef48984572ade631927e9937b5ffc7662c7"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"blowfish",
|
||||
"getrandom",
|
||||
"subtle",
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bigdecimal"
|
||||
version = "0.4.6"
|
||||
@ -351,6 +364,16 @@ dependencies = [
|
||||
"generic-array",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "blowfish"
|
||||
version = "0.9.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e412e2cd0f2b2d93e02543ceae7917b3c70331573df19ee046bcbc35e45e87d7"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
"cipher",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "borsh"
|
||||
version = "1.5.1"
|
||||
@ -456,9 +479,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.1.35"
|
||||
version = "1.1.36"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0f57c4b4da2a9d619dd035f27316d7a426305b75be93d09e92f2b9229c34feaf"
|
||||
checksum = "baee610e9452a8f6f0a1b6194ec09ff9e2d85dea54432acdae41aa0761c95d70"
|
||||
dependencies = [
|
||||
"jobserver",
|
||||
"libc",
|
||||
@ -486,6 +509,16 @@ version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
|
||||
|
||||
[[package]]
|
||||
name = "cipher"
|
||||
version = "0.4.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
|
||||
dependencies = [
|
||||
"crypto-common",
|
||||
"inout",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "clang-sys"
|
||||
version = "1.8.1"
|
||||
@ -663,6 +696,7 @@ name = "demo"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"actix-web",
|
||||
"bcrypt",
|
||||
"mysql",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
@ -1167,6 +1201,15 @@ dependencies = [
|
||||
"hashbrown 0.15.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "inout"
|
||||
version = "0.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"
|
||||
dependencies = [
|
||||
"generic-array",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "io-enum"
|
||||
version = "1.1.3"
|
||||
@ -1214,9 +1257,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.161"
|
||||
version = "0.2.162"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1"
|
||||
checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398"
|
||||
|
||||
[[package]]
|
||||
name = "libloading"
|
||||
@ -2069,6 +2112,12 @@ dependencies = [
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "subtle"
|
||||
version = "2.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "1.0.109"
|
||||
@ -2220,9 +2269,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
||||
|
||||
[[package]]
|
||||
name = "tokio"
|
||||
version = "1.41.0"
|
||||
version = "1.41.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb"
|
||||
checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33"
|
||||
dependencies = [
|
||||
"backtrace",
|
||||
"bytes",
|
||||
@ -2567,6 +2616,12 @@ dependencies = [
|
||||
"synstructure",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zeroize"
|
||||
version = "1.8.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
|
||||
|
||||
[[package]]
|
||||
name = "zerovec"
|
||||
version = "0.10.4"
|
||||
|
||||
@ -9,3 +9,4 @@ actix-web = "4"
|
||||
serde = "1.0"
|
||||
serde_derive = "1.0"
|
||||
uuid = { version = "1.11.0", features = ["v4"] }
|
||||
bcrypt = "0.15.1"
|
||||
|
||||
@ -7,8 +7,11 @@ mod utils;
|
||||
|
||||
#[actix_web::main]
|
||||
async fn main() -> std::io::Result<()> {
|
||||
|
||||
HttpServer::new(|| {
|
||||
App::new().service(routes::register_user)
|
||||
App::new()
|
||||
.service(routes::register_user)
|
||||
.service(routes::get_all_user)
|
||||
})
|
||||
.bind("127.0.0.1:8080")?
|
||||
.run()
|
||||
|
||||
@ -6,4 +6,5 @@ pub struct User {
|
||||
pub name: String,
|
||||
pub age: i32,
|
||||
pub email: String,
|
||||
pub password: String,
|
||||
}
|
||||
@ -7,24 +7,25 @@ use crate::models::user::User;
|
||||
*/
|
||||
pub fn create_user(conn: &mut mysql::PooledConn, user: &User) -> Result<(), mysql::Error> {
|
||||
conn.exec_drop(
|
||||
r"INSERT INTO users (id, name, age, email) VALUES (:id, :name, :age, :email)",
|
||||
r"INSERT INTO users (id, name, age, email, password) VALUES (:id, :name, :age, :email, :password)",
|
||||
params! {
|
||||
"id" => &user.id,
|
||||
"name" => &user.name,
|
||||
"age" => &user.age,
|
||||
"email" => &user.email,
|
||||
"password" => &user.password,
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 查询所有用户
|
||||
// */
|
||||
// pub fn query_all_users(conn: &mut mysql::PooledConn) -> Result<Vec<User>, mysql::Error> {
|
||||
// conn.query_map(
|
||||
// "SELECT id, name, email FROM users",
|
||||
// |(id, name, age, email)| {
|
||||
// User { id, name, age, email }
|
||||
// },
|
||||
// )
|
||||
// }
|
||||
/**
|
||||
* 查询所有用户
|
||||
*/
|
||||
pub fn query_all_users(conn: &mut mysql::PooledConn) -> Result<Vec<User>, mysql::Error> {
|
||||
conn.query_map(
|
||||
"SELECT id, name, age, email, password FROM users",
|
||||
|(id, name, age, email, password)| {
|
||||
User { id, name, age, email, password }
|
||||
},
|
||||
)
|
||||
}
|
||||
@ -1,2 +1,3 @@
|
||||
mod user_routes;
|
||||
pub use user_routes::register_user;
|
||||
pub use user_routes::register_user;
|
||||
pub use user_routes::get_all_user;
|
||||
@ -1,5 +1,5 @@
|
||||
use serde::Deserialize;
|
||||
use actix_web::{post, web, HttpResponse, Responder};
|
||||
use actix_web::{get, post, web, HttpResponse, Responder};
|
||||
use crate::models::user::User;
|
||||
use crate::services::user_service;
|
||||
use crate::utils::pool;
|
||||
@ -9,18 +9,29 @@ struct RegisterUser {
|
||||
name: String,
|
||||
age: i32,
|
||||
email: String,
|
||||
password: String,
|
||||
}
|
||||
|
||||
#[post("/users/register")]
|
||||
|
||||
#[post("/user/register")]
|
||||
async fn register_user(user: web::Json<RegisterUser>) -> impl Responder {
|
||||
let pool = pool::get_db_pool();
|
||||
let mut conn = pool.get_conn().unwrap();
|
||||
let new_user = User {
|
||||
let mut new_user = User {
|
||||
id: 0,
|
||||
name: user.name.clone(),
|
||||
age: user.age,
|
||||
email: user.email.clone(),
|
||||
password: user.password.clone(),
|
||||
};
|
||||
let users = user_service::create_user(&mut conn, &new_user).unwrap();
|
||||
user_service::create_user(&mut conn, &mut new_user).unwrap();
|
||||
HttpResponse::Ok().json("User registered successfully")
|
||||
}
|
||||
|
||||
#[get("/user/all")]
|
||||
async fn get_all_user() -> impl Responder {
|
||||
let pool = pool::get_db_pool();
|
||||
let mut conn = pool.get_conn().unwrap();
|
||||
let users = user_service::select_all_users(&mut conn).unwrap();
|
||||
HttpResponse::Ok().json(users)
|
||||
}
|
||||
@ -2,10 +2,19 @@ use mysql::PooledConn;
|
||||
use crate::models::user::User;
|
||||
use crate::repositories::user_repository;
|
||||
use mysql;
|
||||
use bcrypt::{hash, DEFAULT_COST};
|
||||
|
||||
/**
|
||||
* 新建用户
|
||||
*/
|
||||
pub fn create_user(conn: &mut PooledConn, user: &User) -> Result<(), mysql::Error> {
|
||||
pub fn create_user(conn: &mut PooledConn, user: &mut User) -> Result<(), mysql::Error> {
|
||||
user.password = hash(&user.password, DEFAULT_COST).unwrap();
|
||||
user_repository::create_user(conn, user)
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询所有用户
|
||||
*/
|
||||
pub fn select_all_users(conn: &mut PooledConn) -> Result<Vec<User>, mysql::Error> {
|
||||
user_repository::query_all_users(conn)
|
||||
}
|
||||
Reference in New Issue
Block a user