mirror of
https://github.com/yoncodes/BD2PS.git
synced 2026-08-05 06:12:14 +02:00
38 lines
1.1 KiB
Rust
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)
|
|
}
|