use axum::{ Json, Router, body::Body, extract::{FromRequest, Path, Request}, http::StatusCode, }; use serde::Deserialize; #[derive(Deserialize, Debug)] pub struct UpdateRoomValues { pub status: String, } 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;