few updates
This commit is contained in:
+1
-1
@@ -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
@@ -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
@@ -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
@@ -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("$")),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user