Fixes
This commit is contained in:
@@ -1,4 +1,8 @@
|
||||
use axum::Router;
|
||||
use std::sync::Arc;
|
||||
|
||||
use axum::extract::State;
|
||||
use axum::http::StatusCode;
|
||||
use axum::{Json, Router};
|
||||
use axum::routing::get;
|
||||
use crate::base::controller::BaseController;
|
||||
|
||||
@@ -16,14 +20,24 @@ impl UserController {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn routes() -> Router {
|
||||
pub fn routes(state: Arc<UserController>) -> Router {
|
||||
Router::new()
|
||||
.route("/users", get(Self::get_users))
|
||||
.with_state(state)
|
||||
}
|
||||
|
||||
async fn get_users(
|
||||
State(controller): State<Arc<UserController>>,
|
||||
) -> impl IntoResponse {
|
||||
controller.base_controller.get_all().await
|
||||
) -> Result<Json<Vec<User>>, (StatusCode, Json<String>)> {
|
||||
match controller.base_controller.get_all().await {
|
||||
Ok(users) => {
|
||||
// Wrap the users in Json, which implements IntoResponse
|
||||
Ok(Json(users))
|
||||
}
|
||||
Err(err) => {
|
||||
// In case of error, return StatusCode with Json error message
|
||||
Err((StatusCode::INTERNAL_SERVER_ERROR, Json(err.to_string())))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -4,7 +4,7 @@ use crate::base::entity::BaseEntity;
|
||||
use super::schema::users;
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, Queryable, Identifiable)]
|
||||
#[diesel(table_name = users)]
|
||||
#[diesel(table_name = users, primary_key(id))]
|
||||
pub struct User {
|
||||
pub id: i32,
|
||||
pub name: String,
|
||||
@@ -15,4 +15,12 @@ impl BaseEntity for User {
|
||||
fn id(&self) -> i32 {
|
||||
self.id
|
||||
}
|
||||
}
|
||||
|
||||
impl Identifiable for User {
|
||||
type Id = i32;
|
||||
|
||||
fn id(self) -> Self::Id {
|
||||
self.id
|
||||
}
|
||||
}
|
@@ -1,6 +1,8 @@
|
||||
diesel::table! {
|
||||
use diesel::table;
|
||||
|
||||
table! {
|
||||
users (id) {
|
||||
id -> Int4,
|
||||
id -> Integer,
|
||||
name -> Varchar,
|
||||
email -> Varchar,
|
||||
}
|
||||
|
Reference in New Issue
Block a user