import sqlite3 from "sqlite3"; import express from 'express'; import { fileURLToPath } from 'url'; import { dirname, join } from 'path'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const app = express(); app.use(express.json()); app.use(express.static(__dirname)); 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}" ( user TEXT PRIMARY KEY, ready BOOL, state BOOL )`); 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')); }) //liste an user zurückgeben app.get('/api/user/:sessionId', (req,res) => { const {sessionId} = req.params; db.all(`SELECT user, ready FROM "${sessionId}"`, (err, rows) => { if (err) { console.error(err); return res.status(500).json({error:err.message}); } res.json(rows); }); }); app.put(`/api/words/add`, (req,res) => { const payload = req.body; console.log(payload.word, payload.imposterWord) db.serialize(() => { db.run(`CREATE TABLE IF NOT EXISTS words ( id INTEGER PRIMARY KEY AUTOINCREMENT, word TEXT NOT NULL, imposterWord TEXT NOT NULL )`); db.run(`INSERT INTO words (word, imposterWord) VALUES (?, ?)`, [payload.word, payload.imposterWord], function (err){ if (err) { console.error('inserted words error:', err); return res.status(500).json({error: err.message}); } res.status(201).json({id: this.lastID}) } ) }) }) //ready status updaten app.put('/api/ready/:sessionId', (req,res) => { const {sessionId} = req.params; const payload = req.body; db.get (`SELECT ready FROM "${sessionId}" WHERE user = ?`, [payload.user], (err, row) => { if (err) { console.error(err); } console.log(row?.ready) if (row?.ready == 1) { db.run(`UPDATE "${sessionId}" SET ready = false WHERE user = ?`, [payload.user], res.status(200).json({ready: false}) ) } else { db.run(`UPDATE "${sessionId}" SET ready = true WHERE user = ?`, [payload.user], res.status(200).json({ready: true}) ) } } ) }) app.listen(3000, () => { console.log('Server is running'); });