imposter creation
This commit is contained in:
177
backend.js
177
backend.js
@ -1,9 +1,7 @@
|
||||
import sqlite3 from "sqlite3";
|
||||
import express from 'express';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { dirname, join } from 'path';
|
||||
|
||||
|
||||
import express from "express";
|
||||
import { fileURLToPath } from "url";
|
||||
import { dirname, join } from "path";
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
@ -12,64 +10,97 @@ const app = express();
|
||||
|
||||
app.use(express.json());
|
||||
app.use(express.static(__dirname));
|
||||
app.use(express.static(join(__dirname, 'session')));
|
||||
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;
|
||||
|
||||
|
||||
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,
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user TEXT ,
|
||||
ready BOOL,
|
||||
state BOOL
|
||||
)`);
|
||||
|
||||
db.run(`INSERT OR IGNORE INTO "${sessionId}" (user, ready, state) VALUES (?, ?, ?)`,
|
||||
[username, 0, 0],
|
||||
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'));
|
||||
|
||||
//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"));
|
||||
});
|
||||
|
||||
app.get('/:sessionId/:username/game', (req, res) => {
|
||||
const {sessionId, username} = req.params;
|
||||
app.get("/api/:sessionId/:username/createImposter", (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) => {
|
||||
db.all(`SELECT id FROM "${sessionId}"`, (err, row) => {
|
||||
if (err) {
|
||||
console.error(err);
|
||||
return res.status(500).json({error:err.message});
|
||||
res.status(500).send("DB-Fehler");
|
||||
return;
|
||||
}
|
||||
console.log(row.length);
|
||||
createImposter(sessionId, row.length);
|
||||
});
|
||||
});
|
||||
|
||||
function createImposter(sessionId, userQty) {
|
||||
const ImposterId = Math.floor(Math.random() * userQty) + 1;
|
||||
db.run(`UPDATE "${sessionId}" state = 1 WHERE id = ? `[ImposterId]);
|
||||
}
|
||||
|
||||
//liste an user zurückgeben
|
||||
app.get("/api/user/:sessionId", (req, res) => {
|
||||
const { sessionId } = req.params;
|
||||
|
||||
db.all(`SELECT user, ready, state 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) => {
|
||||
app.put(`/api/words/add`, (req, res) => {
|
||||
const payload = req.body;
|
||||
|
||||
console.log(payload.word, payload.imposterWord)
|
||||
console.log(payload.word, payload.imposterWord);
|
||||
|
||||
db.serialize(() => {
|
||||
db.run(`CREATE TABLE IF NOT EXISTS words (
|
||||
@ -77,56 +108,58 @@ app.put(`/api/words/add`, (req,res) => {
|
||||
word TEXT NOT NULL,
|
||||
imposterWord TEXT NOT NULL
|
||||
)`);
|
||||
|
||||
db.run(`INSERT INTO words (word, imposterWord) VALUES (?, ?)`,
|
||||
|
||||
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})
|
||||
}
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
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;
|
||||
app.put("/api/ready/:sessionId", (req, res) => {
|
||||
const { sessionId } = req.params;
|
||||
const payload = req.body;
|
||||
|
||||
db.get (`SELECT ready FROM "${sessionId}" WHERE user = ?`,
|
||||
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 = ?`,
|
||||
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})
|
||||
)
|
||||
res.status(200).json({ ready: false }),
|
||||
);
|
||||
} else {
|
||||
db.run(`UPDATE "${sessionId}" SET ready = true WHERE user = ?`,
|
||||
db.run(
|
||||
`UPDATE "${sessionId}" SET ready = true WHERE user = ?`,
|
||||
[payload.user],
|
||||
res.status(200).json({ready: true})
|
||||
)
|
||||
res.status(200).json({ ready: true }),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
)
|
||||
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
app.get("/api/:sessionId/:username/state", (req, res) => {
|
||||
const { sessionId, username } = req.params;
|
||||
const payload = req.body;
|
||||
|
||||
db.get();
|
||||
});
|
||||
|
||||
|
||||
})
|
||||
|
||||
|
||||
app.listen(3000, () => {
|
||||
console.log('Server is running');
|
||||
});
|
||||
app.listen(3000, () => {
|
||||
console.log("Server is running");
|
||||
});
|
||||
|
||||
@ -1,11 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<base href="/game/">
|
||||
<link rel="stylesheet" href="style.css">
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>game</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<script src="./game.js" ></script>
|
||||
</body>
|
||||
</html>
|
||||
21
game/game.js
21
game/game.js
@ -0,0 +1,21 @@
|
||||
const parts = window.location.pathname.split("/").filter(Boolean);
|
||||
const sessionId = parts[0] ?? null;
|
||||
const username = parts[1] ?? null;
|
||||
|
||||
async function getState() {
|
||||
const res = await fetch(`/api/${sessionId}/${username}/state`);
|
||||
const state = await res.json();
|
||||
}
|
||||
|
||||
async function show_user() {
|
||||
const res = await fetch(`/api/user/${sessionId}`);
|
||||
const users = await res.json();
|
||||
const allUsers = users.map((u) => u.state);
|
||||
if (allUsers.every((v) => v === 0)) {
|
||||
console.log("test");
|
||||
}
|
||||
}
|
||||
|
||||
async function createImposter() {
|
||||
const res = await fetch(`/api/${sessionId}/${username}/createImposter`);
|
||||
}
|
||||
|
||||
@ -0,0 +1,3 @@
|
||||
body {
|
||||
background-color: #09161e;
|
||||
}
|
||||
|
||||
BIN
imposter.db
BIN
imposter.db
Binary file not shown.
Reference in New Issue
Block a user