Browse Source

Fix DB unsigneed integers overflowing

new_protocol
ThePerkinrex 5 years ago
parent
commit
298d9e29e0
No known key found for this signature in database GPG Key ID: 1F45A7C4BFB41607
  1. 12
      server/src/db.rs

12
server/src/db.rs

@ -119,7 +119,7 @@ impl Db {
match self.conn.query_row(
"SELECT LobbyID from UsersInLobbies WHERE UserID = ?",
params![user.as_bytes().to_vec()],
|r| r.get(0),
|r| r.get::<_ ,i32>(0).map(|x| x as u32),
) {
Ok(v) => Ok(Some(v)),
Err(e) => match e {
@ -134,7 +134,7 @@ impl Db {
let mut prepared = self
.conn
.prepare("SELECT ID FROM Lobbies WHERE Public = TRUE").unwrap();
prepared.query(params![]).and_then(|r| r.map(|r| r.get(0)).collect()).unwrap()
prepared.query(params![]).and_then(|r| r.map(|r| r.get::<_, i32>(0).map(|x| x as u32)).collect()).unwrap()
}
fn delete_vote(&mut self, user: Uuid) {
@ -148,7 +148,7 @@ impl Db {
self.delete_vote(user);
self.conn.execute(
"INSERT INTO Votes(UserID, GameID) VALUES(?, ?)",
params![user.as_bytes().to_vec(), game],
params![user.as_bytes().to_vec(), game as i32],
).unwrap();
}
@ -162,19 +162,19 @@ impl Db {
pub fn get_votes(&mut self, lobby: u32) -> Vec<(String, u32, bool)> {
let mut prepared = self.conn.prepare_cached("SELECT Users.Name, Votes.GameID, Votes.Ready FROM Votes JOIN Users ON Users.UUID = Votes.UserID WHERE Votes.UserID IN (SELECT UserID FROM UsersInLobbies WHERE LobbyID = ?)").unwrap();
prepared.query(params![lobby]).and_then(|r| r.map(|r| r.try_into()).collect()).unwrap()
prepared.query(params![lobby as i32]).and_then(|r| r.map(|r| r.try_into().map(|(s, n, b): (String, i32, bool)| (s, n as u32, b))).collect()).unwrap()
}
pub fn is_poll_finished(&mut self, lobby: u32) -> bool {
self.conn.query_row(
"SELECT (SELECT COUNT(*) FROM UsersInLobbies where LobbyID = ?) = (SELECT COUNT(*) FROM Votes WHERE UserID IN (SELECT UserID FROM UsersInLobbies WHERE LobbyID = ?) AND Ready = TRUE)",
params![lobby, lobby],
params![lobby as i32, lobby as i32],
|r| r.get(0)
).unwrap()
}
pub fn delete_votes(&mut self, lobby: u32) {
self.conn
.execute("DELETE FROM Votes WHERE UserId IN (SELECT UserID FROM UsersInLobbies WHERE LobbyID = ?)", params![lobby]).unwrap();
.execute("DELETE FROM Votes WHERE UserId IN (SELECT UserID FROM UsersInLobbies WHERE LobbyID = ?)", params![lobby as i32]).unwrap();
}
}

Loading…
Cancel
Save