Files
BD2PS/gameserver/src/logic/game/save_user_position.rs
yoncodes e58fd190b4 pushing
2025-10-28 21:21:28 -04:00

38 lines
1.1 KiB
Rust

use bd2::prost::Message;
use bd2::proto::proto_net::{SaveUserPositionRequest, SaveUserPositionResponse};
use common::packet_code::PacketCodeType;
use crypto::network::GameResponse;
use sqlx::SqlitePool;
use tracing::info;
pub async fn handle(pool: &SqlitePool, uid: i64, req: SaveUserPositionRequest) -> GameResponse {
info!(
"Handling SaveUserPositionRequest: uid={}, pack_position={:?}",
uid, req.pack_position
);
if let Some(pos) = &req.pack_position {
if let Err(e) = sqlx::query(
r#"
INSERT INTO UserPosition (Uid, PackPosition)
VALUES (?, ?)
ON CONFLICT(Uid)
DO UPDATE SET PackPosition = excluded.PackPosition
"#,
)
.bind(uid)
.bind(pos)
.execute(pool)
.await
{
eprintln!("Failed to update position: {:?}", e);
}
}
let response = SaveUserPositionResponse {}; // no fields
let resp_bytes = response.encode_to_vec();
let (route, code) = PacketCodeType::SaveUserPosition.info();
GameResponse::success(route, &resp_bytes, code)
}