code structure improvement

This commit is contained in:
Lukian 2024-09-16 17:21:57 +02:00
parent 3a5ae2dd7d
commit 5e8ada02f3
12 changed files with 68 additions and 60 deletions

2
.dockerignore Normal file
View file

@ -0,0 +1,2 @@
/node_modules
package-lock.json

View file

@ -1,7 +1,4 @@
FROM node:latest FROM node:latest
WORKDIR /app WORKDIR /app
COPY . /app COPY . /app
CMD npm start
CMD ["npm", "run", "start"]

View file

@ -1,7 +1,7 @@
const express = require('express'); const express = require('express');
const jwt = require('jsonwebtoken'); const jwt = require('jsonwebtoken');
const {getUnverifiedUsers} = require("../../../libs/mysql.js") const { getConnection, getUnverifiedUsers } = require("../../../libs/mysql.js")
const router = express.Router(); const router = express.Router();
@ -26,7 +26,9 @@ router.post('/', async (req, res) => {
return res.status(400).send({error: "invalid token"}); return res.status(400).send({error: "invalid token"});
} }
const users = await getUnverifiedUsers(); const connection = await getConnection();
const users = await getUnverifiedUsers(connection);
connection.end();
res.status(200).send(users); res.status(200).send(users);
}); });

View file

@ -1,7 +1,7 @@
const express = require('express'); const express = require('express');
const jwt = require('jsonwebtoken'); const jwt = require('jsonwebtoken');
const {setVerified, getUser} = require("../../../libs/mysql.js") const { getConnection, setVerified, getUser } = require("../../../libs/mysql.js")
const router = express.Router(); const router = express.Router();
@ -26,7 +26,9 @@ router.post('/', async (req, res) => {
return res.status(400).send({error: "invalid token"}); return res.status(400).send({error: "invalid token"});
} }
const user = await getUser(username); const connection = await getConnection();
const user = await getUser(connection, username);
if (!user[0]) { if (!user[0]) {
return res.status(400).send({error: "invalid userid"}); return res.status(400).send({error: "invalid userid"});
@ -37,6 +39,7 @@ router.post('/', async (req, res) => {
} }
await setVerified(username); await setVerified(username);
connection.end()
res.status(200).send({message: "user verified"}); res.status(200).send({message: "user verified"});
}); });

View file

@ -2,14 +2,16 @@ const express = require('express');
const jwt = require('jsonwebtoken'); const jwt = require('jsonwebtoken');
const sha256 = require("sha256"); const sha256 = require("sha256");
const { getUser } = require("../../../libs/mysql"); const { getConnection, getUser } = require("../../../libs/mysql");
const router = express.Router(); const router = express.Router();
router.post('/', async (req, res) => { router.post('/', async (req, res) => {
const {username, password} = req.body; const {username, password} = req.body;
const user = await getUser(username); const connection = await getConnection();
const user = await getUser(connection, username);
if (!user[0]) { if (!user[0]) {
return res.status(400).send({error: "wrong login informations"}); return res.status(400).send({error: "wrong login informations"});

View file

@ -1,7 +1,7 @@
const express = require('express'); const express = require('express');
const sha256 = require("sha256"); const sha256 = require("sha256");
const { getUser, addUser } = require("../../../libs/mysql"); const { getConnection, getUser, addUser } = require("../../../libs/mysql");
const router = express.Router(); const router = express.Router();
@ -12,13 +12,16 @@ router.post('/', async (req, res) => {
return res.status(400).send({error: "invalid request"}); return res.status(400).send({error: "invalid request"});
} }
const user = await getUser(username); const connection = await getConnection();
const user = await getUser(connection, username);
if (user[0]) { if (user[0]) {
return res.status(400).send({error: "user already exist"}); return res.status(400).send({error: "user already exist"});
} }
await addUser(username, name, lastname, sha256(password)); await addUser(connection, username, name, lastname, sha256(password));
connection.end();
res.status(200).send({message: "success"}); res.status(200).send({message: "success"});
}); });

View file

@ -1,7 +1,7 @@
const express = require('express'); const express = require('express');
const jwt = require('jsonwebtoken'); const jwt = require('jsonwebtoken');
const {addHelper, getGame} = require("../../../libs/mysql.js") const { getConnection, addHelper, getGame } = require("../../../libs/mysql.js")
const router = express.Router(); const router = express.Router();
@ -23,7 +23,9 @@ router.post('/', async (req, res) => {
return res.status(400).send({error: "token expired"}); return res.status(400).send({error: "token expired"});
} }
const game = await getGame(gameid); const connection = getConnection();
const game = await getGame(connection, gameid);
if (!game[0]) { if (!game[0]) {
return res.status(400).send({error: "this game doesn't exist"}); return res.status(400).send({error: "this game doesn't exist"});
@ -33,7 +35,8 @@ router.post('/', async (req, res) => {
return res.status(400).send({error: "you are already an helper for this game"}); return res.status(400).send({error: "you are already an helper for this game"});
} }
await addHelper(user.user.username, gameid); await addHelper(connection, user.user.username, gameid);
connection.end();
} catch (error) { } catch (error) {
console.log(error); console.log(error);
return res.status(400).send({error: "invalid token"}); return res.status(400).send({error: "invalid token"});

View file

@ -1,7 +1,7 @@
const express = require('express'); const express = require('express');
const jwt = require('jsonwebtoken'); const jwt = require('jsonwebtoken');
const {getGame} = require("../../../libs/mysql.js") const { getConnection, getGame } = require("../../../libs/mysql.js")
const router = express.Router(); const router = express.Router();
@ -26,7 +26,9 @@ router.post('/', async (req, res) => {
return res.status(400).send({error: "invalid token"}); return res.status(400).send({error: "invalid token"});
} }
const game = await getGame(gameid) const connection = getConnection();
const game = await getGame(connection, gameid)
connection.end();
if (!game[0]) { if (!game[0]) {
return res.status(400).send({error: "this game doesn't exist in the data base"}) return res.status(400).send({error: "this game doesn't exist in the data base"})

View file

@ -1,7 +1,7 @@
const express = require('express'); const express = require('express');
const jwt = require('jsonwebtoken'); const jwt = require('jsonwebtoken');
const {getHelpers} = require("../../../libs/mysql.js") const { getConnection, getHelpers } = require("../../../libs/mysql.js")
const router = express.Router(); const router = express.Router();
@ -26,7 +26,9 @@ router.post('/', async (req, res) => {
return res.status(400).send({error: "invalid token"}); return res.status(400).send({error: "invalid token"});
} }
const connection = getConnection();
const helpers = await getHelpers(gameid) const helpers = await getHelpers(gameid)
connection.end();
if (!helpers[0]) { if (!helpers[0]) {
return res.status(400).send({error: "this game doesn't exist in the data base"}) return res.status(400).send({error: "this game doesn't exist in the data base"})

View file

@ -1,7 +1,7 @@
const express = require('express'); const express = require('express');
const jwt = require('jsonwebtoken'); const jwt = require('jsonwebtoken');
const {getGames} = require("../../../libs/mysql.js") const { getConnection, getGames } = require("../../../libs/mysql.js")
const router = express.Router(); const router = express.Router();
@ -22,7 +22,9 @@ router.post('/', async (req, res) => {
return res.status(400).send({error: "invalid token"}); return res.status(400).send({error: "invalid token"});
} }
const connection = getConnection();
const games = await getGames(); const games = await getGames();
connection.end();
res.status(200).send(games); res.status(200).send(games);
}); });

View file

@ -1,7 +1,7 @@
const express = require('express'); const express = require('express');
const jwt = require('jsonwebtoken'); const jwt = require('jsonwebtoken');
const {removeHelper, getGame} = require("../../../libs/mysql.js") const { getConnection, removeHelper, getGame } = require("../../../libs/mysql.js")
const router = express.Router(); const router = express.Router();
@ -23,6 +23,7 @@ router.post('/', async (req, res) => {
return res.status(400).send({error: "token expired"}); return res.status(400).send({error: "token expired"});
} }
const connection = getConnection();
const game = await getGame(gameid); const game = await getGame(gameid);
if (!game[0]) { if (!game[0]) {
@ -34,6 +35,7 @@ router.post('/', async (req, res) => {
} }
await removeHelper(user.user.username, gameid); await removeHelper(user.user.username, gameid);
connection.end()
} catch { } catch {
return res.status(400).send({error: "invalid token"}); return res.status(400).send({error: "invalid token"});
} }

View file

@ -1,19 +1,21 @@
const mysql = require("mysql"); const mysql = require("mysql");
const con = mysql.createConnection({ export function getConnection() {
return mysql.createConnection({
host: process.env.MysqlHost, host: process.env.MysqlHost,
user: process.env.MysqlUser, user: process.env.MysqlUser,
password: process.env.MysqlPassword, password: process.env.MysqlPassword,
database: process.env.MysqlDb, database: process.env.MysqlDb,
}); });
}
// +-----------------------------------+ // +-----------------------------------+
// | GAMES | // | GAMES |
// +-----------------------------------+ // +-----------------------------------+
function getGames() { export function getGames(connection) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
con.query( connection.query(
`SELECT id, title, subtitle, type, players, duration, ages FROM games`, `SELECT id, title, subtitle, type, players, duration, ages FROM games`,
(error, result) => { (error, result) => {
if (error) { if (error) {
@ -25,9 +27,9 @@ function getGames() {
}); });
} }
function getGame(gameid) { export function getGame(connection, gameid) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
con.query( connection.query(
`SELECT * FROM games WHERE id = "${gameid}"`, `SELECT * FROM games WHERE id = "${gameid}"`,
(error, result) => { (error, result) => {
if (error) { if (error) {
@ -39,9 +41,9 @@ function getGame(gameid) {
}) })
} }
function addHelper(username, gameid) { export function addHelper(connection, username, gameid) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
con.query( connection.query(
`UPDATE games SET helpers = JSON_ARRAY_APPEND(helpers, '$', "${username}") WHERE id = ${gameid}`, `UPDATE games SET helpers = JSON_ARRAY_APPEND(helpers, '$', "${username}") WHERE id = ${gameid}`,
(error, result) => { (error, result) => {
if (error) { if (error) {
@ -53,9 +55,9 @@ function addHelper(username, gameid) {
}) })
} }
function removeHelper(username, gameid) { export function removeHelper(connection, username, gameid) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
con.query( connection.query(
`UPDATE games SET helpers = JSON_REMOVE(helpers, JSON_UNQUOTE(JSON_SEARCH(helpers, 'one', "${username}"))) WHERE id = ${gameid}`, `UPDATE games SET helpers = JSON_REMOVE(helpers, JSON_UNQUOTE(JSON_SEARCH(helpers, 'one', "${username}"))) WHERE id = ${gameid}`,
(error, result) => { (error, result) => {
if (error) { if (error) {
@ -67,9 +69,9 @@ function removeHelper(username, gameid) {
}); });
} }
function getHelpers(gameid) { export function getHelpers(connection, gameid) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
con.query( connection.query(
`SELECT helpers FROM games WHERE id = "${gameid}"`, `SELECT helpers FROM games WHERE id = "${gameid}"`,
(error, result) => { (error, result) => {
if (error) { if (error) {
@ -85,9 +87,9 @@ function getHelpers(gameid) {
// | AUTH | // | AUTH |
// +-----------------------------------+ // +-----------------------------------+
function getUser(username) { export function getUser(connection, username) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
con.query( connection.query(
`SELECT * FROM users WHERE username = "${username}"`, `SELECT * FROM users WHERE username = "${username}"`,
(error, result) => { (error, result) => {
if (error) { if (error) {
@ -98,9 +100,9 @@ function getUser(username) {
}) })
} }
function addUser(username, name, lastname, password) { export function addUser(connection, username, name, lastname, password) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
con.query( connection.query(
`INSERT INTO users(username, name, lastname, password) VALUES("${username}", "${name}", "${lastname}", "${password}")`, `INSERT INTO users(username, name, lastname, password) VALUES("${username}", "${name}", "${lastname}", "${password}")`,
(error, result) => { (error, result) => {
if (error) { if (error) {
@ -115,9 +117,9 @@ function addUser(username, name, lastname, password) {
// | ADMIN | // | ADMIN |
// +-----------------------------------+ // +-----------------------------------+
function getUnverifiedUsers() { export function getUnverifiedUsers(connection) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
con.query( connection.query(
`SELECT * FROM users WHERE verified = 0`, `SELECT * FROM users WHERE verified = 0`,
(error, result) => { (error, result) => {
if (error) { if (error) {
@ -128,9 +130,9 @@ function getUnverifiedUsers() {
}) })
} }
function setVerified(username) { export function setVerified(connection, username) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
con.query( connection.query(
`UPDATE users SET verified = 1 WHERE username = "${username}"`, `UPDATE users SET verified = 1 WHERE username = "${username}"`,
(error, result) => { (error, result) => {
if (error) { if (error) {
@ -140,17 +142,3 @@ function setVerified(username) {
}) })
}) })
} }
module.exports = {
getGames,
getGame,
addHelper,
removeHelper,
getHelpers,
getUser,
addUser,
getUnverifiedUsers,
setVerified,
};