update at 2022-03-01 20:01:11 by ehlxr
This commit is contained in:
		| @@ -2,7 +2,7 @@ use poem::web::Data; | ||||
| use poem_openapi::{param::Path, payload::Json, OpenApi}; | ||||
|  | ||||
| use slab::Slab; | ||||
| use tokio::sync::Mutex; | ||||
| use tokio::sync::RwLock; | ||||
| use tracing::info; | ||||
|  | ||||
| use crate::CACHE; | ||||
| @@ -11,7 +11,7 @@ use super::*; | ||||
|  | ||||
| #[derive(Default)] | ||||
| pub(crate) struct Api { | ||||
|     users: Mutex<Slab<User>>, | ||||
|     users: RwLock<Slab<User>>, | ||||
| } | ||||
|  | ||||
| #[OpenApi] | ||||
| @@ -26,7 +26,7 @@ impl Api { | ||||
|         let rt = m_guard.get(&"token".to_string()).unwrap(); | ||||
|         info!("refresh_token is {}", rt); | ||||
|  | ||||
|         let mut users = self.users.lock().await; | ||||
|         let mut users = self.users.write().await; | ||||
|         let id = users.insert(user.0) as i64; | ||||
|         CreateUserResponse::Ok(Json(id)) | ||||
|     } | ||||
| @@ -34,7 +34,7 @@ impl Api { | ||||
|     /// Find user by id | ||||
|     #[oai(path = "/users/:user_id", method = "get", tag = "ApiTags::User")] | ||||
|     async fn find_user(&self, user_id: Path<i64>) -> FindUserResponse { | ||||
|         let users = self.users.lock().await; | ||||
|         let users = self.users.read().await; | ||||
|         match users.get(user_id.0 as usize) { | ||||
|             Some(user) => FindUserResponse::Ok(Json(user.clone())), | ||||
|             None => FindUserResponse::NotFound, | ||||
| @@ -44,7 +44,7 @@ impl Api { | ||||
|     /// Delete user by id | ||||
|     #[oai(path = "/users/:user_id", method = "delete", tag = "ApiTags::User")] | ||||
|     async fn delete_user(&self, user_id: Path<i64>) -> DeleteUserResponse { | ||||
|         let mut users = self.users.lock().await; | ||||
|         let mut users = self.users.write().await; | ||||
|         let user_id = user_id.0 as usize; | ||||
|         if users.contains(user_id) { | ||||
|             users.remove(user_id); | ||||
| @@ -57,7 +57,7 @@ impl Api { | ||||
|     /// Update user by id | ||||
|     #[oai(path = "/users/:user_id", method = "put", tag = "ApiTags::User")] | ||||
|     async fn put_user(&self, user_id: Path<i64>, update: Json<UpdateUser>) -> UpdateUserResponse { | ||||
|         let mut users = self.users.lock().await; | ||||
|         let mut users = self.users.write().await; | ||||
|         match users.get_mut(user_id.0 as usize) { | ||||
|             Some(user) => { | ||||
|                 if let Some(name) = update.0.name { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user