use axum::{ extract::{Request, FromRequest, Path}, body::{Body}, http::StatusCode, Json, Router, }; use serde::Deserialize; #[derive(Deserialize, Debug)] pub struct UpdateRoomValues { pub status: String, pub token: String, pub hotel_id: i32, } pub struct UpdateRoomPayload(pub UpdateRoomValues); //#[async_trait] impl FromRequest for UpdateRoomPayload where S: Send + Sync, { type Rejection = (StatusCode, String); async fn from_request(req: Request, state: &S) -> Result { let Json(payload) = Json::::from_request(req, state) .await .map_err(|err| (StatusCode::BAD_REQUEST, format!("Invalid body: {}", err)))?; Ok(UpdateRoomPayload(payload)) } } #[derive(Debug)] pub struct RoomIdValue { pub room_id: i32 } pub type RoomIdPath = Path;