From 21e3bdcc8e61bc7b86ff63d81c6870dce77ceaf7 Mon Sep 17 00:00:00 2001 From: Romain Mallard Date: Wed, 7 Jan 2026 21:14:36 +0100 Subject: [PATCH] fix + refac send message WS payload --- db/1.sqlite-wal | Bin 5092352 -> 5092352 bytes db/auth_copy_2.sqlite-shm | Bin 32768 -> 0 bytes db/auth_copy_2.sqlite-wal | 0 src/chat/handlers.rs | 66 +++++++++++++++++++++++--------------- 4 files changed, 40 insertions(+), 26 deletions(-) delete mode 100644 db/auth_copy_2.sqlite-shm delete mode 100644 db/auth_copy_2.sqlite-wal diff --git a/db/1.sqlite-wal b/db/1.sqlite-wal index 802d13b50ab787e61d7af0ad7b59f1795ca37870..c35f57ffe807b6d00ebff3c482b28cf6081841c1 100644 GIT binary patch delta 580 zcmbWxKTi{J0EhAZw_dNb&=!FfIVl1bj`r^Qk5fdUBA`NGH61Rop~NPbz|yV5FL7c4 z5*Qd*SVCqt+tq!Xcc(CEUUz9tf{^ zD5PWGsj~a=Lh^g9pxI-@1mo!-&343gIZ_;p9OJ7Enjq>Wc!dBMSKIthvtEMzHl~Xj$OzUPk z)0pb@Rh|E`mEZ2I*h2H_e>QSAdze{lDLfn+ zVinj=MjGEuNQ^xARKtrgF=@i9#zu``OuA2FOw@$215ZcvJ;Vp%a=EH73Rrx#}wXBM9-&iXR*b<6yZr{V8GM^D@P)%SmSG_dKP>9;@Z zaqWf7r)7S+OC7IlPItCvZzc1a-0UNn`X>(VI9^#%feK&F#f)jjaysh9->q!ngDKsg zR>Fzviq{zFY;O3+)+QG_Ph8cSD~!~6!j0c=Zq%a7T69VAqT&TcZr`28e^Y9IUTe-V zhW5D|VepAT-5*dqt9XWyJCFZl2S2Sf{fwdW;PMtT_$e(qsdz%Mk1<@A3Oo2QtvSjV z+7G=agBNuFu;L-bgN)oc_p=@RO|5x@Q96GsS3E3-kI9K%*Yel2{Pyw6mT*yK*r{LD z;#aiT4Gv4QUfq95@qprsjNEzXS3C87t=Y#I#vJ=@%GBe1a-zLlQ`XsjyFasp-l7w` zwR3Kkow-Ll?=+o9&P%Iq-QS_OJzz&yc48Z28tBG;i!;;47OmOLSWZV>p-tW*VVOIH z6Vb*-E#IKHo{_r`RmQogJg+sKjGwRL? zxAXC5AARw8^%hZ|-t?Yt`bJlEB(tE*|NnS1yG>=_jSNOASE**a%D}4(yqh8euQKo| z1FtghMh3aL@sg2fRR&&V;9Zn~R~dMffma!LBZIMtc*&@<%D}4((AmnsyC?&%GVm$` zUy{L4t({tB;8g~=C?W%|GVm$`uQKpP2H8nFwaUP&47{5n13aBX20qAuU(7w>ZAAaN z5yDuVom++ARS4ciA$S#nS0Q*20(BN40Nvo9c5V>@)rb%XjSzUrLLd?$5Q-28MF>Eb zZLo8T5U3^y!RXJ64QNwrKqxjK6dM5D=wEhdu>sYH4G5jufR}6oBC!FX*nm)M0CaHJN!FVCGFkQ2?+ z@)?W^JKN#Do7R7Qi+6p$GPf0gl~HB-xJ51%c;c3fR`)-B9Q^1$bgV# z0C3rCyk2xzWI!k~APh1f5*ZMR3;%@#-8MUSdC40|nvpbDczq|LVsQH8Y6e^on_|sSGDE}V-VPsuXJ9& z()mkTe^K!QBezejGlTo{T62yuw5P9hL4CKZ`WmY5-F$TC!PTI?$#~1>vy*(wi~628 z-ki?ovo3cao*1jir~+VA0Z>!`iYfp`6#%0OfKdhLJk}Pk7NQ^)zMj#X;5Q-6iZlu=EEk>XkF#@460x!u3?(y51 z)|7aFj*16>uD8ohD;}U4@c=jBpLU2+;dUbw4*(PK0HJsQ=#n}!Z6Y3^8u0+3`Duri z;sHYO0HJt*P&@#1Bb&|OiFkl&!~=wmf7&4$EDfFvD4tb3!^m%s?gl&fX|3sJEa%Sp zZH|`mZI1Ay)}K)9W90V9*3#g3m>rWE;88~Tm_K%HU=B z&JXGf8Ke@KjZ`6XkZPm`nTyOrYLWR!9kKwaM;efYNF&mOEJ79|%}5K9MV25-k!8qo zWCgMkX+>5ctC2NG8}c-=7Fmb1BRQl4p&9eYGst>m1F{k6LN+0rkuAtpWE-*_*@1K; f&mudK9%L7?8`*>GMV>>RNA@B6@6{Jxc=+;vll8(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(); // 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") @@ -322,29 +335,30 @@ pub async fn send_message( .filter_map(Result::ok) .collect(); - if let Some(hotel_users) = state.ws_map.get(&hotel_id) { - let update_msg = serde_json::json!({ - "event_type": "chat_message", - "conv_id": payload.conv_id, - "sender": user_id, - "content": payload.message, - }) - .to_string(); +if let Some(hotel_users) = state.ws_map.get(&hotel_id) { + let update_msg = serde_json::json!({ + "event_type": "chat_message", + "conv_id": payload.conv_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())); - } - } - } + 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()) + ); + } + } +} (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)]