mirror of
https://github.com/yoncodes/BD2PS.git
synced 2026-08-05 06:12:14 +02:00
pushing
This commit is contained in:
37
gameserver/src/logic/game/save_user_position.rs
Normal file
37
gameserver/src/logic/game/save_user_position.rs
Normal file
@@ -0,0 +1,37 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user