aboutsummaryrefslogtreecommitdiffstats
path: root/backend/ts/api/login.ts
diff options
context:
space:
mode:
Diffstat (limited to 'backend/ts/api/login.ts')
-rw-r--r--backend/ts/api/login.ts46
1 files changed, 31 insertions, 15 deletions
diff --git a/backend/ts/api/login.ts b/backend/ts/api/login.ts
index 0c6ef75..b21a506 100644
--- a/backend/ts/api/login.ts
+++ b/backend/ts/api/login.ts
@@ -1,6 +1,7 @@
import { Request, Response } from "express";
-import { fiaTable, dbRes, Color, Colors, Helpers, makeQuery, Chequer, tColors } from "../../../helpers/helpersBack";
+import { fiaTable, dbRes, Color, Colors, Helpers, makeQuery, Chequer, tColors, waitForQueue } from "../../../helpers/helpersBack";
import startGame from "../startGame";
+import { global } from "../index";
export default async function apiLogin(req: Request, res: Response) {
if (req.session === undefined) {
@@ -11,27 +12,39 @@ export default async function apiLogin(req: Request, res: Response) {
req.session.uid = req.session.id;
req.session.name = req.body.name;
- let dbRes = (await makeQuery("SELECT * FROM `fia` WHERE `started`= 0 LIMIT 1", [])) as Array<dbRes>,
+ if (global.stop === true) {
+ await waitForQueue();
+ }
+ global.stop = true;
+
+ let dbRes = (await makeQuery("SELECT * FROM `fia` WHERE `started`= 0 LIMIT 1", [])) as Array<fiaTable>,
row: fiaTable;
- if (dbRes.length === 0) {
- let color = Helpers.getRandomInt(0, 5);
+ if (dbRes[0] === undefined) {
+ let color = Helpers.getRandomInt(0, 4);
row = {} as fiaTable;
row.data = [{
id: req.session.uid,
index: 0,
- color: Color[color as keyof Colors],
+ ready: false,
+ color: color,
name: req.body.name,
}];
- req.session.color = Color.blue;
+ req.session.color = color;
- await makeQuery('INSERT INTO `fia`(`data`, `started`) VALUES (?, ?)', [JSON.stringify(row.data), 0]);
- req.session.gid = (await makeQuery('SELECT `id` FROM `fia` WHERE `data`= ?', [JSON.stringify(row.data)]) as any)[0].id;
+ await makeQuery('INSERT INTO `fia`(`data`) VALUES (?)', [row.data]);
+ req.session.gid = (await makeQuery('SELECT `id` FROM `fia` WHERE `data`= ?', [row.data]) as any)[0].id;
} else {
- row = Helpers.dbResToFiaTable(dbRes[0]);
+ // row = Helpers.dbResToFiaTable(dbRes[0]);
+ row = dbRes[0];
let playersColors: Array<tColors> = [],
colors = [...Array(4).keys()];
+ if (row.data.filter(el => el.id !== req.session?.uid).length === 0) {
+ res.send(JSON.stringify({ data: row.data, uid: req.session.uid }));
+ return;
+ }
+
for (let playerData of row.data)
playersColors.push(playerData.color);
@@ -42,6 +55,7 @@ export default async function apiLogin(req: Request, res: Response) {
row.data.push({
id: req.session.uid,
index: index,
+ ready: false,
color: color,
name: req.body.name,
});
@@ -49,12 +63,14 @@ export default async function apiLogin(req: Request, res: Response) {
req.session.gid = row.id;
req.session.index = index;
- makeQuery('UPDATE `fia` SET `data`= ? WHERE `id`= ?', [JSON.stringify(row.data), row.id]);
+ await makeQuery('UPDATE `fia` SET `data`= ? WHERE `id`= ?', [row.data, row.id]);
+
+ if (row.data.length >= 4)
+ startGame(req.session.gid);
- if (row.data.length === 4) {
- startGame(req, res);
- }
}
- makeQuery("UPDATE `fia` SET `playersCount`=`playersCount`+1 WHERE `id`= ?", [req.session.gid]);
- res.send(JSON.stringify(row.data));
+
+ await makeQuery("UPDATE `fia` SET `playersCount`=`playersCount`+1 WHERE `id`= ?", [req.session.gid]);
+ global.stop = false;
+ res.send(JSON.stringify({ data: row.data, uid: req.session.uid }));
}