multi-hotel-refactor #3

Merged
Rominou merged 27 commits from multi-hotel-refactor into master 2026-03-11 13:32:43 +00:00
4 changed files with 40 additions and 26 deletions
Showing only changes of commit 21e3bdcc8e - Show all commits

Binary file not shown.

Binary file not shown.

View File

@@ -302,15 +302,28 @@ pub async fn send_message(
}
}
let result = conn.execute(
"INSERT INTO message (sender_id, content, conversation_id) VALUES (?1, ?2, ?3)",
params![&user_id, &payload.message, &payload.conv_id],
let (message_id, sent_at): (i64, String) = match conn.query_row(
"INSERT INTO message (sender_id, content, conversation_id)
VALUES (?1, ?2, ?3)
RETURNING id, sent_at",
params![user_id, payload.message, payload.conv_id],
|row| Ok((
row.get::<_, i64>(0)?,
row.get::<_, String>(1)?,
)),
) {
Ok(v) => v,
Err(err) => {
return (
StatusCode::INTERNAL_SERVER_ERROR,
format!("DB insert failed: {err}"),
);
let message_id = conn.last_insert_rowid();
}
};
//let message_id = conn.last_insert_rowid();
// FIXME: add sent_at and message id in the response.
match result {
Ok(rows) if rows > 0 => {
// --- send to conversation participants ---
let mut stmt_participants = conn
.prepare("SELECT user_id FROM conversation_participants WHERE conversation_id = ?1")
@@ -326,25 +339,26 @@ pub async fn send_message(
let update_msg = serde_json::json!({
"event_type": "chat_message",
"conv_id": payload.conv_id,
"sender": user_id,
"sender_id": user_id,
"content": payload.message,
"id": message_id,
"sent_at": sent_at,
})
.to_string();
for uid in &participant_ids {
if let Some(sender) = hotel_users.get(&uid) {
let _ = sender.send(axum::extract::ws::Message::Text(update_msg.clone().into()));
if let Some(sender) = hotel_users.get(uid) {
let _ = sender.send(
axum::extract::ws::Message::Text(update_msg.clone().into())
);
}
}
}
(StatusCode::OK, format!("sent message: {}, to users:{:?}", payload.message, participant_ids))
}
Ok(_) => (StatusCode::NOT_FOUND, "Conversation not found".to_string()),
Err(err) => (StatusCode::INTERNAL_SERVER_ERROR, format!("Error from DB: {err}")),
}
//Ok(_) => (StatusCode::NOT_FOUND, "Conversation not found".to_string()),
}
#[derive(Debug, Serialize)]