100 lines
2.1 KiB
JavaScript
100 lines
2.1 KiB
JavaScript
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'));
|
|
|
|
|
|
|
|
})
|
|
|
|
//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);
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
//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');
|
|
}); |