few updates

This commit is contained in:
2025-03-17 11:54:45 +01:00
parent 2eaa843016
commit 73653723ea
4 changed files with 44 additions and 9 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize)]
#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct Player {
pub uuid: String,
pub cloaks: Vec<String>,
+8 -2
View File
@@ -8,6 +8,7 @@ use std::{
sync::Arc,
};
use player::create;
use serde::{Deserialize, Serialize};
use crate::{
@@ -62,10 +63,15 @@ impl Session {
local_player,
};
let player = player::player(&session, uuid)?;
match player::player(&session, uuid) {
Ok(player) => Ok((session, player)),
Err(crate::response::Error::DatabaseError) => {
let player = create(&session)?;
Ok((session, player))
}
Err(e) => Err(e),
}
}
pub fn handle_request(&self, method: &str, params: &HashMap<String, String>) -> Result {
match method {
+24 -3
View File
@@ -1,6 +1,9 @@
use mongodb::bson::doc;
use crate::response::{Response, Result};
use crate::{
database::Player,
response::{Response, Result},
};
use super::Session;
@@ -12,11 +15,29 @@ pub fn player(session: &Session, uuid: String) -> Result {
"uuid": uuid.clone(),
})
.run()?
.deserialize_current()
.unwrap();
.deserialize_current()?;
Ok(Response::Player {
cloak: player.cloak,
uuid,
cloaks: player.cloaks,
})
}
pub fn create(session: &Session) -> Result {
let uuid = session.local_player.id.clone();
let player = Player {
cloak: "".to_string(),
cloaks: Vec::new(),
uuid: uuid.clone(),
};
session.database.players.insert_one(player.clone()).run()?;
Ok(Response::Player {
cloak: player.cloak,
uuid,
cloaks: player.cloaks,
})
}
+10 -2
View File
@@ -4,7 +4,11 @@ pub type Result<T = Response> = std::result::Result<T, Error>;
pub enum Response {
Pong,
Success,
Player { cloak: String, uuid: String },
Player {
cloak: String,
uuid: String,
cloaks: Vec<String>,
},
}
impl std::fmt::Display for Response {
@@ -12,7 +16,11 @@ impl std::fmt::Display for Response {
match self {
Response::Pong => write!(f, "Pong"),
Response::Success => write!(f, "Success"),
Response::Player { cloak, uuid } => write!(f, "@cloak={cloak}@uuid={uuid}"),
Response::Player {
cloak,
uuid,
cloaks,
} => write!(f, "@cloak={cloak}@uuid={uuid}@cloaks={}", cloaks.join("$")),
}
}
}