diff --git a/businesses/Player.js b/businesses/Player.js index c5b753f..b5db9a4 100644 --- a/businesses/Player.js +++ b/businesses/Player.js @@ -1,4 +1,3 @@ -const uuid = require("uuid"); const { Grid } = require("./Grid.js"); const { Piece } = require("./Piece.js"); @@ -14,11 +13,11 @@ class Player { createPiece() { this.pieces.push(new Piece(1, { x: 0, y: 0 }, { x: 0, y: 0 })); - //this.pieces.push(new Piece(1, { x: 0, y: 3 }, { x: 0, y: 3 })); - //this.pieces.push(new Piece(2, { x: 2, y: 2 }, { x: 2, y: 3 })); - //this.pieces.push(new Piece(2, { x: 8, y: 2 }, { x: 8, y: 3 })); - //this.pieces.push(new Piece(3, { x: 4, y: 3 }, { x: 4, y: 5 })); - //this.pieces.push(new Piece(4, { x: 6, y: 6 }, { x: 6, y: 9 })); + this.pieces.push(new Piece(1, { x: 0, y: 3 }, { x: 0, y: 3 })); + this.pieces.push(new Piece(2, { x: 2, y: 2 }, { x: 2, y: 3 })); + this.pieces.push(new Piece(2, { x: 8, y: 2 }, { x: 8, y: 3 })); + this.pieces.push(new Piece(3, { x: 4, y: 3 }, { x: 4, y: 5 })); + this.pieces.push(new Piece(4, { x: 6, y: 6 }, { x: 6, y: 9 })); this.pieces.forEach((piece) => { for (let i = piece.startPos.x; i <= piece.endPos.x; i++) { diff --git a/businesses/Room.js b/businesses/Room.js index f9248fe..bfd4622 100644 --- a/businesses/Room.js +++ b/businesses/Room.js @@ -38,7 +38,7 @@ class Room { ret = {isMove: true, players: this.players, isHit: playedCase.isShip, isWin: this.checkWin()} - if(!ret.isHit || ret.isWin) { + if(!ret.isHit) { let tmp = this.actualPlayer; this.actualPlayer = this.ennemy; this.ennemy = tmp; diff --git a/db/init.sql b/db/init.sql index 1a3fc84..488a9da 100644 --- a/db/init.sql +++ b/db/init.sql @@ -1,12 +1,27 @@ CREATE DATABASE IF NOT EXISTS battleship; USE battleship; + CREATE TABLE IF NOT EXISTS users ( id INT PRIMARY KEY AUTO_INCREMENT, pseudo VARCHAR(255) UNIQUE NOT NULL, hashed_password VARCHAR(255) NOT NULL ); -CREATE USER 'root' IDENTIFIED WITH mysql_native_password BY 'rootpassword'; -GRANT ALL PRIVILEGES ON battleship.* TO 'root'; -FLUSH PRIVILEGES; \ No newline at end of file +CREATE TABLE IF NOT EXISTS scoreboards ( + id INT PRIMARY KEY AUTO_INCREMENT, + player1 INT NOT NULL, + player2 INT NOT NULL, + player1Win INT NOT NULL DEFAULT 0, + player2Win INT NOT NULL DEFAULT 0, + FOREIGN KEY (player1) REFERENCES users(id), + FOREIGN KEY (player2) REFERENCES users(id) +); + +CREATE TABLE IF NOT EXISTS score ( + id INT PRIMARY KEY AUTO_INCREMENT, + playerId INT NOT NULL, + wins INT NOT NULL DEFAULT 0, + loses INT NOT NULL DEFAULT 0, + FOREIGN KEY (playerId) REFERENCES users(id) +); \ No newline at end of file diff --git a/index.js b/index.js index 1cf84ce..dd4b860 100644 --- a/index.js +++ b/index.js @@ -87,13 +87,30 @@ app.post('/register', async (req, res) => { } }); - const query = 'INSERT INTO users (pseudo, hashed_password) VALUES (?, ?)'; + var query = 'INSERT INTO users (pseudo, hashed_password) VALUES (?, ?)'; db.query(query, [pseudo, hashedPassword], (err, results) => { if (err) { console.error('Error inserting user into the database:', err); return res.status(500).send('Internal server error.'); } + query = 'SELECT id FROM users WHERE pseudo = ?' + db.query(query, [pseudo], (err, results) => { + if (err) { + console.error('Error inserting user into the database:', err); + return res.status(500).send('Internal server error.'); + } + if (results.length === 1) { + query = 'INSERT INTO score (playerId) VALUES (?)'; + db.query(query, [results[0].id], (err, results) => { + if (err) { + console.error('Error inserting user into the database:', err); + return res.status(500).send('Internal server error.'); + } + }) + } + }); + const token = jwt.sign({ pseudo }, secretKey, { expiresIn: '1h' }); res.cookie('authToken', token, { httpOnly: true, secure: false }); @@ -300,17 +317,27 @@ io.on("connection", (socket) => { if (results.isWin) { const winner = results.players.find((p) => p.id === results.player) const loser = results.players.find((p) => p.id !== winner.id) - const alteredRow = "player" + winner.dbId + "Win" + const alteredRow = "player" + (winner.dbId > loser.dbId ? 2 : 1) + "Win" const ids = [winner.dbId, loser.dbId].sort((a, b) => a - b) - const getPseudoQuery = `UPDATE scoreboards SET ${alteredRow} = ${alteredRow} + 1 WHERE player1 = ? AND player2 = ?` - db.query(getPseudoQuery, [ids[0], ids[1]], (err, results) => { + var query = 'UPDATE score SET wins = wins + 1 WHERE playerId = ?' + db.query(query, [winner.dbId], (err, results) => { if (err) { console.log(err) } - console.log(results) - if (results.length === 1) { - console.log("Scoreboards update") + }) + + query = 'UPDATE score SET loses = loses + 1 WHERE playerId = ?' + db.query(query, [loser.dbId], (err, results) => { + if (err) { + console.log(err) + } + }) + + query = `UPDATE scoreboards SET ${alteredRow} = ${alteredRow} + 1 WHERE player1 = ? AND player2 = ?` + db.query(query, [ids[0], ids[1]], (err, results) => { + if (err) { + console.log(err) } }); } diff --git a/tools/db_script.sql b/tools/db_script.sql index e05c985..d904e6a 100644 --- a/tools/db_script.sql +++ b/tools/db_script.sql @@ -16,4 +16,12 @@ CREATE TABLE IF NOT EXISTS scoreboards ( player2Win INT NOT NULL DEFAULT 0, FOREIGN KEY (player1) REFERENCES users(id), FOREIGN KEY (player2) REFERENCES users(id) -) \ No newline at end of file +); + +CREATE TABLE IF NOT EXISTS score ( + id INT PRIMARY KEY AUTO_INCREMENT, + playerId INT NOT NULL, + wins INT NOT NULL DEFAULT 0, + loses INT NOT NULL DEFAULT 0, + FOREIGN KEY (playerId) REFERENCES users(id) +); \ No newline at end of file