diff options
| author | Maks Jopek <maksymilian.jopek@prym-soft.pl> | 2021-04-10 01:06:09 +0200 |
|---|---|---|
| committer | Maks Jopek <maksymilian.jopek@prym-soft.pl> | 2021-04-10 01:06:09 +0200 |
| commit | dd66b8ad239d5ceae219746a702963645259b784 (patch) | |
| tree | 47462463911a018a31cd1ede3d8206fd96032b99 /backend/ts/api/login.ts | |
| parent | d928eab3ecefbf778f1cadece9beac010dc42332 (diff) | |
| download | fia-dd66b8ad239d5ceae219746a702963645259b784.tar.gz fia-dd66b8ad239d5ceae219746a702963645259b784.tar.zst fia-dd66b8ad239d5ceae219746a702963645259b784.zip | |
Added joining rooms and logic to start game by votes
Diffstat (limited to 'backend/ts/api/login.ts')
| -rw-r--r-- | backend/ts/api/login.ts | 73 |
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)); } |
