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.ts73
1 files changed, 33 insertions, 40 deletions
diff --git a/backend/ts/api/login.ts b/backend/ts/api/login.ts
index 5b38c62..d5393ef 100644
--- a/backend/ts/api/login.ts
+++ b/backend/ts/api/login.ts
@@ -1,49 +1,42 @@
import { Request, Response } from "express";
-import { makeQuery } from "../helpers";
+import { makeQuery, fiaTable, dbRes, dbResToFiaTable, Color, Colors } from "../../../helpers/helpers";
-interface Colors {
- blue: number;
- red: number;
- green: number;
- yellow: number;
- 0: number;
- 1: number;
- 2: number;
- 3: number;
-}
-
-interface fiaTable {
- id: number;
- data: Array<object>;
- started: boolean;
-}
-
-const Color: Colors = {
- blue: 0,
- red: 1,
- green: 2,
- yellow: 3,
- 0: 0, 1: 1, 2: 2, 3: 3
-}
-
-export default async function apiLogin(req: Request, res: Response) {
+// export default async function apiLogin(req: Request, res: Response) {
+export default async function (req: Request, res: Response) {
if (req.session === undefined) {
- res.send(/* html */`<script>alert("Something went wrong, try to reload the page")</script>`);
+ res.send(/* html */ `<script>alert("Something went wrong, try to reload the page")</script>`);
return;
}
req.session.uid = req.session.id;
- let c = await makeQuery("SELECT * FROM `fia` WHERE `started`= false LIMIT 1", []),
+ req.session.name = req.body.name;
+
+ let dbRes = (await makeQuery("SELECT * FROM `fia` WHERE `started`= 0 LIMIT 1", [])) as Array<dbRes>,
row: fiaTable;
- if (c === "") {
- let data = { id: req.session.uid, color: Color.blue };
- makeQuery("INSERT INTO `fia`(`data`, `started`) VALUES (?, ?)", [JSON.stringify(data), "0"]);
- }
- else {
- row = JSON.parse(c);
- row.data.push({ id: req.session.uid, color: Color[row.data.length as keyof Colors] });
- makeQuery("UPDATE `fia` SET `data`=? WHERE `id`=?", [JSON.stringify(row.data), row.id.toString()]);
- if(row.data.length === 4)
- makeQuery("UPDATE `fia` SET `started` = 1 WHERE `id`=?", [row.id.toString()]);
+ if (dbRes.length === 0) {
+ row = {} as fiaTable;
+ row.data = [{ id: req.session.uid, color: Color.blue, name: req.body.name }];
+ req.session.color = Color.blue;
+
+ 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;
+ } else {
+ row = dbResToFiaTable(dbRes[0]);
+ let color = Color[row.data.length as keyof Colors];
+ row.data.push({
+ id: req.session.uid,
+ color: Color.blue,
+ name: req.body.name
+ });
+
+ req.session.gid = row.id;
+ req.session.color = color;
+ makeQuery('UPDATE `fia` SET `data`=? WHERE `id`=?', [JSON.stringify(row.data), row.id]);
+
+ if (row.data.length === 4) {
+ makeQuery("UPDATE `fia` SET `started` = 1 WHERE `id`=?", [row.id]);
+ // TODO: Start game from backend
+ }
}
- res.send("[1, 2, 3]");
+ makeQuery("UPDATE `fia` SET `playersCount`=`playersCount`+1 WHERE `id`=?", [req.session.gid]);
+ res.send(JSON.stringify(row.data));
}