add history for room update
This commit is contained in:
BIN
db/1.sqlite
BIN
db/1.sqlite
Binary file not shown.
@@ -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))
|
||||||
}
|
}
|
||||||
@@ -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,
|
||||||
|
|||||||
@@ -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))
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user