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}; use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize)] #[derive(Debug, Deserialize, Serialize, Clone)]
pub struct Player { pub struct Player {
pub uuid: String, pub uuid: String,
pub cloaks: Vec<String>, pub cloaks: Vec<String>,
+9 -3
View File
@@ -8,6 +8,7 @@ use std::{
sync::Arc, sync::Arc,
}; };
use player::create;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use crate::{ use crate::{
@@ -62,9 +63,14 @@ impl Session {
local_player, local_player,
}; };
let player = player::player(&session, uuid)?; match player::player(&session, uuid) {
Ok(player) => Ok((session, 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 { pub fn handle_request(&self, method: &str, params: &HashMap<String, String>) -> Result {
+24 -3
View File
@@ -1,6 +1,9 @@
use mongodb::bson::doc; use mongodb::bson::doc;
use crate::response::{Response, Result}; use crate::{
database::Player,
response::{Response, Result},
};
use super::Session; use super::Session;
@@ -12,11 +15,29 @@ pub fn player(session: &Session, uuid: String) -> Result {
"uuid": uuid.clone(), "uuid": uuid.clone(),
}) })
.run()? .run()?
.deserialize_current() .deserialize_current()?;
.unwrap();
Ok(Response::Player { Ok(Response::Player {
cloak: player.cloak, cloak: player.cloak,
uuid, 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 { pub enum Response {
Pong, Pong,
Success, Success,
Player { cloak: String, uuid: String }, Player {
cloak: String,
uuid: String,
cloaks: Vec<String>,
},
} }
impl std::fmt::Display for Response { impl std::fmt::Display for Response {
@@ -12,7 +16,11 @@ impl std::fmt::Display for Response {
match self { match self {
Response::Pong => write!(f, "Pong"), Response::Pong => write!(f, "Pong"),
Response::Success => write!(f, "Success"), 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("$")),
} }
} }
} }