fix de toutes les requêtes pour marcher avec mysql2
continuous-integration/drone/push Build is passing Details

CI/CD
Thomas Chazot 1 year ago
parent 0b471d0eac
commit 9447149ff7

@ -17,7 +17,7 @@ class AuthController {
console.log(req.body)
// Vérifier que le pseudo n'existe pas déjà
const [verif, fields] = await databaseService.getUserByPseudo(pseudo);
const verif = await databaseService.getUserByPseudo(pseudo);
if (verif) {
res.status(400).json({ error: 'Le pseudo est déjà utilisé.' });
return;
@ -54,7 +54,7 @@ class AuthController {
// Vérifier que le pseudo existe
const pseudo = req.body.pseudo;
const [user, fields] = await databaseService.getUserByPseudo(pseudo);
const user = await databaseService.getUserByPseudo(pseudo);
if (!user) {
res.status(400).json({ error: 'Le pseudo n\'existe pas.' });
return;
@ -107,7 +107,7 @@ class AuthController {
try{
await db.connect();
const [user, fields] = await db.getUserByPseudo(req.body.pseudo);
const user = await db.getUserByPseudo(req.body.pseudo);
if(!user){
res.status(400).json({ error: 'Le pseudo n\'existe pas.' });
@ -130,7 +130,7 @@ class AuthController {
try{
await db.connect();
const [user, fields] = await db.getUserByPseudo(req.body.pseudo);
const user = await db.getUserByPseudo(req.body.pseudo);
if(!user){
res.status(400).json({ error: 'Le pseudo n\'existe pas.' });
return;
@ -159,7 +159,7 @@ class AuthController {
try{
await db.connect();
const [user, fields] = await db.getUserByPseudo(req.body.pseudo);
const user = await db.getUserByPseudo(req.body.pseudo);
if(!user){
res.status(400).json({ error: 'Le pseudo n\'existe pas.' });
return;

@ -17,10 +17,10 @@ class SessionController {
await db.connect();
const [dailyMastermindStats, fields] = await db.getDailyMastermindStats();
const dailyMastermindStats = await db.getDailyMastermindStats();
console.log(dailyMastermindStats)
res.status(200).json({ tab : [dailyMastermindStats] });
res.status(200).json({ tab : dailyMastermindStats});
}
catch(error){
console.error(error);
@ -37,7 +37,7 @@ class SessionController {
try{
await db.connect();
const [dailyEasyEnigmaStats, fields] = await db.getDailyEnigmaStats(ENIGME_FACILE);
const dailyEasyEnigmaStats = await db.getDailyEnigmaStats(ENIGME_FACILE);
res.status(200).json({ tab : dailyEasyEnigmaStats });
}
@ -56,7 +56,7 @@ class SessionController {
try{
await db.connect();
const [dailyMediumEnigmaStats, fields] = await db.getDailyEnigmaStats(ENIGME_MOYEN);
const dailyMediumEnigmaStats = await db.getDailyEnigmaStats(ENIGME_MOYEN);
res.status(200).json({ tab : dailyMediumEnigmaStats });
}
@ -75,7 +75,7 @@ class SessionController {
try{
await db.connect();
const [dailyHardEnigmaStats, fields] = await db.getDailyEnigmaStats(ENIGME_DIFFICILE);
const dailyHardEnigmaStats = await db.getDailyEnigmaStats(ENIGME_DIFFICILE);
res.status(200).json({ tab : dailyHardEnigmaStats });
}
@ -94,7 +94,7 @@ class SessionController {
try{
await db.connect();
const [dailyOnlineStats, fields] = await db.getDailyOnlineStats();
const dailyOnlineStats = await db.getDailyOnlineStats();
@ -120,9 +120,9 @@ class SessionController {
try{
await db.connect();
const [weeklyMastermindStats, fields] = await db.getWeeklyMastermindStats();
const weeklyMastermindStats = await db.getWeeklyMastermindStats();
console.log(weeklyMastermindStats)
res.status(200).json({ tab : [weeklyMastermindStats] });
res.status(200).json({ tab : weeklyMastermindStats });
}
catch(error){
console.error(error);
@ -139,7 +139,7 @@ class SessionController {
try{
await db.connect();
const [weeklyEasyEnigmaStats, fields] = await db.getWeeklyEnigmaStats(ENIGME_FACILE);
const weeklyEasyEnigmaStats = await db.getWeeklyEnigmaStats(ENIGME_FACILE);
res.status(200).json({ tab : weeklyEasyEnigmaStats });
}
@ -158,7 +158,7 @@ class SessionController {
try{
await db.connect();
const [weeklyMediumEnigmaStats, fields] = await db.getWeeklyEnigmaStats(ENIGME_MOYEN);
const weeklyMediumEnigmaStats = await db.getWeeklyEnigmaStats(ENIGME_MOYEN);
res.status(200).json({ tab : weeklyMediumEnigmaStats });
}
@ -177,7 +177,7 @@ class SessionController {
try{
await db.connect();
const [weeklyHardEnigmaStats, fields] = await db.getWeeklyEnigmaStats(ENIGME_DIFFICILE);
const weeklyHardEnigmaStats = await db.getWeeklyEnigmaStats(ENIGME_DIFFICILE);
res.status(200).json({ tab : weeklyHardEnigmaStats });
}
@ -196,7 +196,7 @@ class SessionController {
try{
await db.connect();
const [weeklyOnlineStats, fields] = await db.getWeeklyOnlineStats();
const weeklyOnlineStats = await db.getWeeklyOnlineStats();
res.status(200).json({ tab : weeklyOnlineStats });
}

@ -21,11 +21,11 @@ class SessionController {
}
// Récupérer les stats mastermind de l'utilisateur
let [nbGamesMM, i] = await db.getNbGamesMastermindByUserId(req.session.user.idUser);
let nbGamesMM = await db.getNbGamesMastermindByUserId(req.session.user.idUser);
nbGamesMM = nbGamesMM.nbGames || 0;
let [bestScoreMM, j] = await db.getBestScoreMastermindByUserId(req.session.user.idUser);
let bestScoreMM = await db.getBestScoreMastermindByUserId(req.session.user.idUser);
bestScoreMM = bestScoreMM.bestScore || 0;
let [avgNbTryMM, k] = await db.getAvgNbTryMastermindByUserId(req.session.user.idUser);
let avgNbTryMM= await db.getAvgNbTryMastermindByUserId(req.session.user.idUser);
avgNbTryMM = avgNbTryMM.avgNbTry || 0;
req.session.user.mastermindStats = {nbGames: nbGamesMM,
@ -33,14 +33,14 @@ class SessionController {
avgNbTry: avgNbTryMM};
// Récupérer les stats enigme facile
let [nbGamesEF, l] = await db.getNbGamesEnigmeByUserId(req.session.user.idUser, ENIGME_FACILE);
let nbGamesEF = await db.getNbGamesEnigmeByUserId(req.session.user.idUser, ENIGME_FACILE);
nbGamesEF = nbGamesEF.nbGames || 0;
let [nbWinsEF, m] = await db.getNbWinsEnigmeByUserId(req.session.user.idUser, ENIGME_FACILE);
let nbWinsEF = await db.getNbWinsEnigmeByUserId(req.session.user.idUser, ENIGME_FACILE);
nbWinsEF = nbWinsEF.nbWins || 0;
let ratioEF = (nbWinsEF.nbWins / nbGamesEF.nbGames) * 100 || 0;
let [bestTimeEF, n] = await db.getBestTimeEnigmeByUserId(req.session.user.idUser, ENIGME_FACILE);
let bestTimeEF = await db.getBestTimeEnigmeByUserId(req.session.user.idUser, ENIGME_FACILE);
bestTimeEF = bestTimeEF.bestTime || 0;
let [avgTimeEF, o] = await db.getAvgTimeEnigmeByUserId(req.session.user.idUser, ENIGME_FACILE);
let avgTimeEF = await db.getAvgTimeEnigmeByUserId(req.session.user.idUser, ENIGME_FACILE);
avgTimeEF = avgTimeEF.avgTime || 0;
req.session.user.easyEnigmaStats = {nbGames: nbGamesEF,
@ -50,11 +50,11 @@ class SessionController {
avgTime: avgTimeEF};
// Récupérer les stats enigme moyenne
let [nbGamesEM, p] = await db.getNbGamesEnigmeByUserId(req.session.user.idUser, ENIGME_MOYEN);
let nbGamesEM, = await db.getNbGamesEnigmeByUserId(req.session.user.idUser, ENIGME_MOYEN);
nbGamesEM = nbGamesEM.nbGames || 0;
let [bestScoreEM, q] = await db.getBestScoreEnigmeByUserId(req.session.user.idUser, ENIGME_MOYEN);
let bestScoreEM = await db.getBestScoreEnigmeByUserId(req.session.user.idUser, ENIGME_MOYEN);
bestScoreEM = bestScoreEM.bestScore || 0;
let [avgNbTryEM, r] = await db.getAvgScoreEnigmeByUserId(req.session.user.idUser, ENIGME_MOYEN);
let avgNbTryEM = await db.getAvgScoreEnigmeByUserId(req.session.user.idUser, ENIGME_MOYEN);
avgNbTryEM = avgNbTryEM.avgScore || 0;
req.session.user.mediumEnigmaStats = {nbGames: nbGamesEM,
@ -62,14 +62,14 @@ class SessionController {
avgNbTry: avgNbTryEM};
// Récupérer les stats enigme difficile
let [nbGamesED, s] = await db.getNbGamesEnigmeByUserId(req.session.user.idUser, ENIGME_DIFFICILE);
let nbGamesED = await db.getNbGamesEnigmeByUserId(req.session.user.idUser, ENIGME_DIFFICILE);
nbGamesED = nbGamesED.nbGames || 0;
let [nbWinsED, t] = await db.getNbWinsEnigmeByUserId(req.session.user.idUser, ENIGME_DIFFICILE);
let nbWinsED = await db.getNbWinsEnigmeByUserId(req.session.user.idUser, ENIGME_DIFFICILE);
nbWinsED = nbWinsED.nbWins || 0;
let ratioED = (nbWinsED.nbWins / nbGamesED.nbGames) * 100 || 0;
let [bestTimeED, u] = await db.getBestTimeEnigmeByUserId(req.session.user.idUser, ENIGME_DIFFICILE);
let bestTimeED = await db.getBestTimeEnigmeByUserId(req.session.user.idUser, ENIGME_DIFFICILE);
bestTimeED = bestTimeED.bestTime || 0;
let [avgTimeED, v] = await db.getAvgTimeEnigmeByUserId(req.session.user.idUser, ENIGME_DIFFICILE);
let avgTimeED = await db.getAvgTimeEnigmeByUserId(req.session.user.idUser, ENIGME_DIFFICILE);
avgTimeED = avgTimeED.avgTime || 0;
req.session.user.hardEnigmaStats = {nbGames: nbGamesED,
@ -79,9 +79,9 @@ class SessionController {
avgTime: avgTimeED};
// Récupérer les stats en ligne de l'utilisateur
let [nbGamesOL, w] = await db.getNbGamesOnlineByUserId(req.session.user.idUser);
let nbGamesOL = await db.getNbGamesOnlineByUserId(req.session.user.idUser);
nbGamesOL = nbGamesOL.nbGames || 0;
let [nbWinsOL, x] = await db.getNbWinsOnlineByUserId(req.session.user.idUser);
let nbWinsOL = await db.getNbWinsOnlineByUserId(req.session.user.idUser);
nbWinsOL = nbWinsOL.nbWins || 0;
let ratioOL = (nbWinsOL.nbWins / nbGamesOL.nbGames) * 100 || 0;
req.session.user.onlineStats = {nbGames: nbGamesOL,
@ -105,7 +105,7 @@ class SessionController {
try{
await db.connect();
const [user, _] = await db.getUserByPseudo(req.body.pseudo);
const user = await db.getUserByPseudo(req.body.pseudo);
console.log("utilisateur" + user.idUser + " pseudo" + user.pseudo)
if (!user) {
res.status(200).json({ error: "true", message: 'User not found' });
@ -114,7 +114,7 @@ class SessionController {
await db.updatePseudo(user.idUser, req.body.newPseudo); //* update
const [updatedUser, fields] = await db.getUserByPseudo(req.body.newPseudo);
const updatedUser = await db.getUserByPseudo(req.body.newPseudo);
console.log("updaetdutilisateur" + updatedUser.idUser + " pseudo" + updatedUser.pseudo)
req.session.user.pseudo = updatedUser.pseudo;
console.log("req.session.user.pseudo" + req.session.user.pseudo)
@ -136,7 +136,7 @@ class SessionController {
try{
await db.connect();
const [user, fields] = await db.getUserByPseudo(req.body.pseudo);
const user = await db.getUserByPseudo(req.body.pseudo);
if (!user) {
res.status(200).json({ error: "true", message: 'User not found' });
return;
@ -161,7 +161,7 @@ class SessionController {
try{
await db.connect();
const [user, fields] = await db.getUserByPseudo(req.body.pseudo);
const user = await db.getUserByPseudo(req.body.pseudo);
if (!user) {
res.status(200).json({ error: "true", message: 'User not found' });
return;
@ -188,7 +188,7 @@ class SessionController {
try{
await db.connect();
const [user, fields] = await db.getUserByPseudo(req.body.pseudo);
const user = await db.getUserByPseudo(req.body.pseudo);
if (!user) {
res.status(200).json({ error: "true", message: 'User not found' });
return;
@ -213,7 +213,7 @@ class SessionController {
try{
await db.connect();
const [user, fields] = await db.getUserByPseudo(req.body.pseudo);
const user = await db.getUserByPseudo(req.body.pseudo);
if (!user) {
res.status(200).json({ error: "true", message: 'User not found' });
return;

@ -111,30 +111,24 @@ class DatabaseService {
// Récupère l'utilisateur par son id
async getUserByID(id){
return new Promise((resolve, reject) => {
this.client.query('SELECT * FROM users WHERE idUser = ?', [id], (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('SELECT * FROM users WHERE idUser = ?', [id])
console.log('Rows:', rows);
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
// Récupère l'utilisateur par son pseudo
async getUserByPseudo(pseudo){
return new Promise((resolve, reject) => {
this.client.query('SELECT * FROM users WHERE pseudo = ?', [pseudo], (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('SELECT * FROM users WHERE pseudo = ?', [pseudo])
console.log('Rows:', rows);
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
async getUsers(){
@ -159,55 +153,44 @@ class DatabaseService {
// insère un utilisateur dans la base de données
async insertUser(user) {
return new Promise((resolve, reject) => {
try {
const { pseudo, password } = user;
this.client.query('INSERT INTO users (pseudo, password) VALUES (?, ?)', [pseudo, password], (err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
const [rows] = await this.client.promise().query('INSERT INTO users (pseudo, password) VALUES (?, ?)', [pseudo, password])
console.log('Rows:', rows);
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
async deleteUser(userId){
return new Promise((resolve, reject) => {
this.client.query('DELETE FROM users WHERE idUser=?', [userId], (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('DELETE FROM users WHERE idUser=?', [userId])
console.log('Rows:', rows);
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
async updatePseudo(userId, newPseudo){
return new Promise((resolve, reject) => {
this.client.query('UPDATE users SET pseudo = ? WHERE idUser = ?', [newPseudo, userId], (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('UPDATE users SET pseudo = ? WHERE idUser = ?', [newPseudo, userId])
console.log('Rows:', rows);
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
async updatePassword(userId, newPassword){
return new Promise((resolve, reject) => {
this.client.query('UPDATE users SET password = ? WHERE idUser = ?', [newPassword, userId], (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('UPDATE users SET password = ? WHERE idUser = ?', [newPassword, userId])
console.log('Rows:', rows);
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
// ---------------------------------------------------------------
@ -215,61 +198,39 @@ class DatabaseService {
// ---------------------------------------------------------------
async getDailyMastermindStats() {
return new Promise((resolve, reject) => {
// Obtenez la date actuelle au format AAAA-MM-JJ
try {
const currentDate = new Date().toISOString().slice(0, 10);
// Récupérer les 5 meilleurs scores de la journée
this.client.query(
'SELECT pseudo, score FROM users INNER JOIN games ON users.idUser = games.idUser WHERE gameType = ? AND SUBSTR(playedDate, 1, 10) = ? ORDER BY score ASC LIMIT 10',
["mastermind",
currentDate],
(err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
}
);
});
const [rows] = await this.client.promise().query('SELECT pseudo, score FROM users INNER JOIN games ON users.idUser = games.idUser WHERE gameType = ? AND SUBSTR(playedDate, 1, 10) = ? ORDER BY score ASC LIMIT 10',
["mastermind",
currentDate])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
async getDailyEnigmaStats(enigmaLevel) {
return new Promise((resolve, reject) => {
try {
const currentDate = new Date().toISOString().slice(0, 10);
this.client.query(
'SELECT pseudo, time FROM users INNER JOIN games ON users.idUser = games.idUser WHERE gameType = ? AND SUBSTR(playedDate, 1, 10) = ? ORDER BY time ASC LIMIT 10',
[enigmaLevel,
currentDate],
(err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
}
);
});
const [rows] = await this.client.promise().query('SELECT pseudo, time FROM users INNER JOIN games ON users.idUser = games.idUser WHERE gameType = ? AND SUBSTR(playedDate, 1, 10) = ? ORDER BY time ASC LIMIT 10',
[enigmaLevel,
currentDate])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
async getDailyOnlineStats() {
return new Promise((resolve, reject) => {
try {
const currentDate = new Date().toISOString().slice(0, 10);
this.client.query(
'SELECT pseudo, COUNT(*) AS wins FROM users INNER JOIN games ON users.idUser = games.idUser WHERE gameType = ? AND SUBSTR(playedDate, 1, 10) = ? AND win = ? GROUP BY users.idUser ORDER BY wins ASC LIMIT 10',
["multijoueur", currentDate, 1],
(err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
}
);
});
const [rows] = await this.client.promise().query('SELECT pseudo, COUNT(*) AS wins FROM users INNER JOIN games ON users.idUser = games.idUser WHERE gameType = ? AND SUBSTR(playedDate, 1, 10) = ? AND win = ? GROUP BY users.idUser ORDER BY wins ASC LIMIT 10',
["multijoueur", currentDate, 1])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
@ -278,77 +239,57 @@ class DatabaseService {
// ---------------------------------------------------------------
async getWeeklyMastermindStats() {
return new Promise((resolve, reject) => {
try {
const currentDate = new Date().toISOString().slice(0, 10);
const currentDay = new Date().getDay();
const firstDayOfWeek = new Date(new Date().setDate(new Date().getDate() - currentDay)).toISOString().slice(0, 10);
this.client.query(
'SELECT pseudo, score FROM users INNER JOIN games ON users.idUser = games.idUser WHERE gameType = ? AND SUBSTR(playedDate, 1, 10) BETWEEN ? AND ? ORDER BY score ASC LIMIT 10',
["mastermind",
firstDayOfWeek,
currentDate],
(err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
}
);
});
const [rows] = await this.client.promise().query('SELECT pseudo, score FROM users INNER JOIN games ON users.idUser = games.idUser WHERE gameType = ? AND SUBSTR(playedDate, 1, 10) BETWEEN ? AND ? ORDER BY score ASC LIMIT 10',
["mastermind",
firstDayOfWeek,
currentDate])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
async getWeeklyEnigmaStats(enigmaLevel) {
return new Promise((resolve, reject) => {
try {
const currentDate = new Date().toISOString().slice(0, 10);
const currentDay = new Date().getDay();
const firstDayOfWeek = new Date(new Date().setDate(new Date().getDate() - currentDay)).toISOString().slice(0, 10);
this.client.query(
'SELECT pseudo, time FROM users INNER JOIN games ON users.idUser = games.idUser WHERE gameType = ? AND SUBSTR(playedDate, 1, 10) BETWEEN ? AND ? ORDER BY time ASC LIMIT 10',
[enigmaLevel,
firstDayOfWeek,
currentDate],
(err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
}
);
});
const [rows] = await this.client.promise().query('SELECT pseudo, time FROM users INNER JOIN games ON users.idUser = games.idUser WHERE gameType = ? AND SUBSTR(playedDate, 1, 10) BETWEEN ? AND ? ORDER BY time ASC LIMIT 10',
[enigmaLevel,
firstDayOfWeek,
currentDate])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
async getWeeklyOnlineStats() {
return new Promise((resolve, reject) => {
try {
const currentDate = new Date().toISOString().slice(0, 10);
const currentDay = new Date().getDay();
const firstDayOfWeek = new Date(new Date().setDate(new Date().getDate() - currentDay)).toISOString().slice(0, 10);
this.client.query(`
SELECT users.pseudo, COUNT(*) as wins
FROM users
INNER JOIN games ON users.idUser = games.idUser
WHERE gameType = ? AND SUBSTR(playedDate, 1, 10) BETWEEN ? AND ? AND win = ?
GROUP BY users.pseudo
ORDER BY wins ASC
LIMIT 10;
`,
["multijoueur",
firstDayOfWeek,
currentDate,
1],
(err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
}
);
});
const [rows] = await this.client.promise().query(`
SELECT users.pseudo, COUNT(*) as wins
FROM users
INNER JOIN games ON users.idUser = games.idUser
WHERE gameType = ? AND SUBSTR(playedDate, 1, 10) BETWEEN ? AND ? AND win = ?
GROUP BY users.pseudo
ORDER BY wins ASC
LIMIT 10;
`,
["multijoueur",
firstDayOfWeek,
currentDate,
1])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
// -------------------------------------------------------------
@ -356,98 +297,69 @@ class DatabaseService {
// -------------------------------------------------------------
async getNbGamesMastermindByUserId(userId){
return new Promise((resolve, reject) => {
this.client.query('SELECT COUNT(*) AS nbGames FROM games WHERE idUser = ? AND gameType = ?', [userId, "mastermind"], (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('SELECT COUNT(*) AS nbGames FROM games WHERE idUser = ? AND gameType = ?', [userId, "mastermind"])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
async getBestScoreMastermindByUserId(userId){
return new Promise((resolve, reject) => {
this.client.query('SELECT MIN(score) AS bestScore FROM games WHERE idUser = ? AND gameType = ?', [userId, "mastermind"], (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('SELECT MIN(score) AS bestScore FROM games WHERE idUser = ? AND gameType = ?', [userId, "mastermind"])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
async getAvgNbTryMastermindByUserId(userId){
return new Promise((resolve, reject) => {
this.client.query('SELECT AVG(score) AS avgNbTry FROM games WHERE idUser = ? AND gameType = ?', [userId, "mastermind"], (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('SELECT AVG(score) AS avgNbTry FROM games WHERE idUser = ? AND gameType = ?', [userId, "mastermind"])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
async addMastermindStats(userId, score, time){
return new Promise((resolve, reject) => {
this.client.query('INSERT INTO games (idUser, gameType, win, score, time) VALUES (?, ?, ?, ?, ?)', [userId, "mastermind", 1, score, time], (err, result) => {
if(err){
console.log(err)
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('INSERT INTO games (idUser, gameType, win, score, time) VALUES (?, ?, ?, ?, ?)', [userId, "mastermind", 1, score, time])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
// -------------------------------------------------------------
// ------------------- STATS EN LIGNE --------------------------
// -------------------------------------------------------------
async getNbGamesOnlineByUserId(userId){
return new Promise((resolve, reject) => {
this.client.query('SELECT COUNT(*) AS nbGames FROM games WHERE idUser = ? AND gameType = ?', [userId, "multijoueur"], (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('SELECT COUNT(*) AS nbGames FROM games WHERE idUser = ? AND gameType = ?', [userId, "multijoueur"])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
async getNbWinsOnlineByUserId(userId){
return new Promise((resolve, reject) => {
this.client.query('SELECT COUNT(*) AS nbWins FROM games WHERE idUser = ? AND gameType = ? AND win = ?', [userId, "multijoueur", 1], (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('SELECT COUNT(*) AS nbWins FROM games WHERE idUser = ? AND gameType = ? AND win = ?', [userId, "multijoueur", 1])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
async addOnlineStats(userId, win, time){
return new Promise((resolve, reject) => {
this.client.query('INSERT INTO games (idUser, gameType, win, score, time) VALUES (?, ?, ?, ?, ?)', [userId, "multijoueur", win, 0, time], (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('INSERT INTO games (idUser, gameType, win, score, time) VALUES (?, ?, ?, ?, ?)', [userId, "multijoueur", win, 0, time])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
// -------------------------------------------------------------
@ -455,109 +367,77 @@ class DatabaseService {
// -------------------------------------------------------------
async getNbGamesEnigmeByUserId(userId, enigmaLevel){
return new Promise((resolve, reject) => {
this.client.query('SELECT COUNT(*) AS nbGames FROM games WHERE idUser = ? AND gameType = ?', [userId, enigmaLevel], (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('SELECT COUNT(*) AS nbGames FROM games WHERE idUser = ? AND gameType = ?', [userId, enigmaLevel])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
async getNbWinsEnigmeByUserId(userId, enigmaLevel){
return new Promise((resolve, reject) => {
this.client.query('SELECT COUNT(*) AS nbWins FROM games WHERE idUser = ? AND gameType = ? AND win = ?', [userId, enigmaLevel, 1], (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('SELECT COUNT(*) AS nbWins FROM games WHERE idUser = ? AND gameType = ? AND win = ?', [userId, enigmaLevel, 1])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
async getBestScoreEnigmeByUserId(userId, enigmaLevel){
return new Promise((resolve, reject) => {
this.client.query('SELECT MAX(score) AS bestScore FROM games WHERE idUser = ? AND gameType = ?', [userId, enigmaLevel], (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('SELECT MAX(score) AS bestScore FROM games WHERE idUser = ? AND gameType = ?', [userId, enigmaLevel])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
async getAvgScoreEnigmeByUserId(userId, enigmaLevel){
return new Promise((resolve, reject) => {
this.client.query('SELECT AVG(score) AS avgScore FROM games WHERE idUser = ? AND gameType = ?', [userId, enigmaLevel], (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('SELECT AVG(score) AS avgScore FROM games WHERE idUser = ? AND gameType = ?', [userId, enigmaLevel])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
async getBestTimeEnigmeByUserId(userId, enigmaLevel){
return new Promise((resolve, reject) => {
this.client.query('SELECT MIN(time) AS bestTime FROM games WHERE idUser = ? AND gameType = ?', [userId, enigmaLevel], (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('SELECT MIN(time) AS bestTime FROM games WHERE idUser = ? AND gameType = ?', [userId, enigmaLevel])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
async getAvgTimeEnigmeByUserId(userId, enigmaLevel){
return new Promise((resolve, reject) => {
this.client.query('SELECT AVG(time) AS avgTime FROM games WHERE idUser = ? AND gameType = ?', [userId, enigmaLevel], (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('SELECT AVG(time) AS avgTime FROM games WHERE idUser = ? AND gameType = ?', [userId, enigmaLevel])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
async addEasyEnigmaStats(userId, enigmaLevel, win, time){
return new Promise((resolve, reject) => {
this.client.query('INSERT INTO games (idUser, gameType, win, score, time) VALUES (?, ?, ?, ?, ?)', [userId, enigmaLevel, win, 0, time], (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('INSERT INTO games (idUser, gameType, win, score, time) VALUES (?, ?, ?, ?, ?)', [userId, enigmaLevel, win, 0, time])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
// async addMediumEnigmaStats(userId, enigmaLevel, score)
async addHardEnigmaStats(userId, enigmaLevel, win, time){
return new Promise((resolve, reject) => {
this.client.query('INSERT INTO games (idUser, gameType, win, score, time) VALUES (?, ?, ?, ?, ?)', [userId, enigmaLevel, win, 0, time], (err, result) => {
if(err){
reject(err);
}
else{
resolve(result);
}
});
});
try {
const [rows] = await this.client.promise().query('INSERT INTO games (idUser, gameType, win, score, time) VALUES (?, ?, ?, ?, ?)', [userId, enigmaLevel, win, 0, time])
return rows;
} catch (err) {
throw new Error(`Error fetching users: ${err.message}`);
}
}
}

Loading…
Cancel
Save