diff --git a/backend.js b/backend.js index 2343356..d8753b4 100644 --- a/backend.js +++ b/backend.js @@ -14,57 +14,7 @@ app.use(express.static(join(__dirname, "session"))); const db = new sqlite3.Database("imposter.db"); -//datenbank inizalisierung -app.get("/:sessionId/:username", (req, res) => { - const { sessionId, username } = req.params; - - db.serialize(() => { - db.run(`CREATE TABLE IF NOT EXISTS "${sessionId}" ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - user TEXT , - ready BOOL, - state BOOL - )`); - - db.run(`CREATE TABLE IF NOT EXISTS sessionState ( - sessionId TEXT PRIMARY KEY, - state BOOL - )`); - db.run( - `INSERT OR IGNORE INTO sessionState (sessionId, state) VALUES (?,?)`, - [sessionId, 0], - ); - - db.get( - `SELECT id FROM "${sessionId}" WHERE user = ?`, - [username], - (err, rows) => { - if (err) { - console.error(err); - } - if (rows) { - console.log("user exists"); - } else { - db.run( - `INSERT OR IGNORE INTO "${sessionId}" (user, ready, state) VALUES (?, ?, ?)`, - [username, 0, 0], - ); - } - }, - ); - }); - - //beim neuladen der seite ready auf false setzen - db.run(`UPDATE "${sessionId}" SET ready = false WHERE user = ?`, [username]); - res.sendFile(join(__dirname, "session", "session.html")); -}); - -app.get("/:sessionId/:username/game", (req, res) => { - const { sessionId, username } = req.params; - - res.sendFile(join(__dirname, "game", "game.html")); -}); - +// --- API- und andere spezifische Routes (bleiben oben) --- app.get("/api/:sessionId/:username/createImposter", (req, res) => { const { sessionId, username } = req.params; @@ -76,6 +26,7 @@ app.get("/api/:sessionId/:username/createImposter", (req, res) => { } console.log(row.length); createImposter(sessionId, row.length); + res.status(200).send("ok"); }); }); @@ -124,12 +75,13 @@ app.put(`/api/words/add`, (req, res) => { db.run(`CREATE TABLE IF NOT EXISTS words ( id INTEGER PRIMARY KEY AUTOINCREMENT, word TEXT NOT NULL, - imposterWord TEXT NOT NULL + imposterWord TEXT NOT NULL, + inUse BOOL )`); db.run( - `INSERT INTO words (word, imposterWord) VALUES (?, ?)`, - [payload.word, payload.imposterWord], + `INSERT INTO words (word, imposterWord, inUse) VALUES (?, ?, ?)`, + [payload.word, payload.imposterWord, 0], function (err) { if (err) { console.error("inserted words error:", err); @@ -141,7 +93,6 @@ app.put(`/api/words/add`, (req, res) => { }); }); -//ready status updaten app.put("/api/ready/:sessionId", (req, res) => { const { sessionId } = req.params; const payload = req.body; @@ -171,11 +122,73 @@ app.put("/api/ready/:sessionId", (req, res) => { ); }); -app.get("/api/:sessionId/:username/state", (req, res) => { - const { sessionId, username } = req.params; - const payload = req.body; +app.get("/api/getWords", (req, res) => { + db.get(`SELECT word, imposterWord FROM words WHERE inUse = 1`, + (err, rows) => { + if (err) { + console.log(err); + } + if (rows) { + res.status(200).json(rows); + } else { + db.run(`UPDATE words SET inUse = 1 WHERE id = (SELECT id FROM words ORDER BY RANDOM() LIMIT 1)`) + res.status(201).json({update: true}); + console.log("update") + } + } + ); + +}); - db.get(); + +app.get("/:sessionId/:username/game", (req, res) => { + res.sendFile(join(__dirname, "game", "game.html")); +}); + + +app.get("/:sessionId/:username", (req, res) => { + const { sessionId, username } = req.params; + + db.serialize(() => { + db.run(`CREATE TABLE IF NOT EXISTS "${sessionId}" ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user TEXT , + ready BOOL, + state BOOL + )`); + + db.run(`CREATE TABLE IF NOT EXISTS sessionState ( + sessionId TEXT PRIMARY KEY, + state BOOL + )`); + db.run( + `INSERT OR IGNORE INTO sessionState (sessionId, state) VALUES (?,?)`, + [sessionId, 0], + ); + + db.get( + `SELECT id FROM "${sessionId}" WHERE user = ?`, + [username], + (err, rows) => { + if (err) { + console.error(err); + } + if (rows) { + console.log("user exists"); + } else { + db.run( + `INSERT OR IGNORE INTO "${sessionId}" (user, ready, state) VALUES (?, ?, ?)`, + [username, 0, 0], + ); + } + }, + ); + }); + + //beim neuladen der seite ready auf false setzen + db.run(`UPDATE "${sessionId}" SET ready = false WHERE user = ?`, [username], () => { + res.sendFile(join(__dirname, "session", "session.html")); + }); }); app.listen(3000, () => { diff --git a/game/game.html b/game/game.html index 6dcd5c8..169197c 100644 --- a/game/game.html +++ b/game/game.html @@ -8,6 +8,9 @@