const express = require('express'); const bodyParser = require('body-parser'); const sqlite3 = require('sqlite3').verbose(); const app = express(); const port = 3000; // Create an SQLite database and initialize tables const db = new sqlite3.Database('mydb.db', (err) => { if (err) { console.error('Error opening SQLite database:', err.message); } else { console.log('Connected to SQLite database'); db.run(` CREATE TABLE IF NOT EXISTS button_clicks ( id INTEGER PRIMARY KEY AUTOINCREMENT, session_id TEXT, button_name TEXT, timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, time_difference INTEGER -- Add this column for time difference ) `); } }); app.use(bodyParser.json()); // Serve the HTML file app.get('/', (req, res) => { res.sendFile(__dirname + '/index.html'); }); app.get('/asset/frontend.js', (req, res) => { res.sendFile(__dirname + '/asset/frontend.js'); }); // Route to get a random animal name app.get('/getRandomAnimal', async (req, res) => { try { const animals = ['Dog', 'Cat', 'Elephant', 'Lion', 'Giraffe']; const randomIndex = Math.floor(Math.random() * animals.length); const randomAnimal = animals[randomIndex]; res.json({ animalName: randomAnimal }); } catch (error) { console.error('Error fetching random animal:', error); res.status(500).json({ error: 'Internal server error' }); } }); // Route to record button clicks along with session IDs in SQLite app.post('/recordButtonClick', (req, res) => { try { const { buttonName, sessionId } = req.body; db.run('INSERT INTO button_clicks (session_id, button_name) VALUES (?, ?)', [sessionId, buttonName], (err) => { if (err) { console.error('Error recording button click:', err.message); res.status(500).json({ error: 'Internal server error' }); } else { res.sendStatus(200); } }); } catch (error) { console.error('Error recording button click:', error); res.status(500).json({ error: 'Internal server error' }); } }); // Route to show the current results from SQLite app.get('/results', (req, res) => { try { db.all('SELECT button_name, COUNT(*) as count FROM button_clicks GROUP BY button_name', (err, rows) => { if (err) { console.error('Error fetching results:', err.message); res.status(500).json({ error: 'Internal server error' }); } else { const results = {}; rows.forEach((row) => { results[row.button_name] = row.count; }); res.json(results); } }); } catch (error) { console.error('Error fetching results:', error); res.status(500).json({ error: 'Internal server error' }); } }); app.listen(port, () => { console.log(`Server is running on port ${port}`); });