add history for room update

This commit is contained in:
2025-09-26 18:49:17 +02:00
parent 1dc71e451b
commit 9212ba53a1
4 changed files with 14 additions and 21 deletions

Binary file not shown.

View File

@@ -9,5 +9,5 @@ pub fn inventory_routes() -> Router<AppState> {
Router::new() Router::new()
.route("/update_item/{item_id}/{item_amount}", put(update_inventory_item)) .route("/update_item/{item_id}/{item_amount}", put(update_inventory_item))
.route("/add_item/{item_name/{items_amount}", post(create_inventory_item)) .route("/add_item/{item_name}/{item_amount}", post(create_inventory_item))
} }

View File

@@ -22,17 +22,7 @@ pub async fn hello_rooms() -> String {
"hello from rooms".to_string() "hello from rooms".to_string()
} }
//fake handler
pub async fn fake_room_update(
Path(room_id): Path<i32>,
UpdateRoomPayload(payload): UpdateRoomPayload
) -> impl IntoResponse {
format!(
"Got: status={}, room_id={}",
payload.status, room_id
)
}
pub async fn fake_db_update( pub async fn fake_db_update(
State(state): State<AppState>, State(state): State<AppState>,
@@ -52,16 +42,11 @@ pub async fn fake_db_update(
params![&payload.status, &room_id], params![&payload.status, &room_id],
); );
match result { match result {
Ok(rows) if rows > 0 => (StatusCode::OK, format!("Updated room {room_id} in hotel {}", hotel_id)), Ok(rows) if rows > 0 => (StatusCode::OK, format!("Updated room {room_id} in hotel {}", hotel_id)),
Ok(_) => (StatusCode::NOT_FOUND, "No room found".to_string()), Ok(_) => (StatusCode::NOT_FOUND, "No room found".to_string()),
Err(err) => (StatusCode::INTERNAL_SERVER_ERROR, format!("DB error: {err}")), Err(err) => (StatusCode::INTERNAL_SERVER_ERROR, format!("DB error: {err}")),
} }
} }
pub async fn clean_db_update( pub async fn clean_db_update(
@@ -82,14 +67,23 @@ pub async fn clean_db_update(
Err(err) => return (StatusCode::INTERNAL_SERVER_ERROR, format!("Pool error: {err}")), Err(err) => return (StatusCode::INTERNAL_SERVER_ERROR, format!("Pool error: {err}")),
}; };
let result = conn.execute( let result: Result<String, rusqlite::Error> = conn.query_row(
"UPDATE rooms SET status = ?1 WHERE number = ?2", "UPDATE rooms SET status = ?1 WHERE id = ?2 RETURNING number",
params![&payload.status, &room_id], params![&payload.status, &room_id],
|row| row.get(0),
); );
match result { match result {
Ok(rows) if rows > 0 => { Ok(room_number) => {
// --- broadcast to all WS clients in the hotel --- // --- broadcast to all WS clients in the hotel ---
if let Err(err) = conn.execute(
"INSERT INTO room_history (room_id, room_number, status) VALUES (?1, ?2, ?3)",
params![&room_id, &room_number, &payload.status],
) {
return (StatusCode::INTERNAL_SERVER_ERROR, format!("Failed to insert history: {err}"));
}
if let Some(hotel_users) = state.ws_map.get(&hotel_id) { if let Some(hotel_users) = state.ws_map.get(&hotel_id) {
let update_msg = json!({ let update_msg = json!({
"room_id": room_id, "room_id": room_id,

View File

@@ -16,7 +16,6 @@ pub fn rooms_routes() -> Router<AppState> {
Router::new() Router::new()
.route("/", get(hello_rooms) ) .route("/", get(hello_rooms) )
.route("/fakeUpdate/{room_id}", put(fake_room_update))
.route("/clean_db_update/{room_id}", put(clean_db_update)) .route("/clean_db_update/{room_id}", put(clean_db_update))
.route("/rooms", get(get_all_rooms)) .route("/rooms", get(get_all_rooms))
} }