express: readying for multiple results

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
This commit is contained in:
Vincent Batts 2023-09-15 11:20:10 -04:00
parent 0e4212d114
commit e0bf0d8609
Signed by: vbatts
GPG key ID: E30EFAA812C6E5ED

View file

@ -102,26 +102,33 @@ app.post("/recordButtonClick", (req, res) => {
}); });
// Route to show the current results from SQLite // Route to show the current results from SQLite
app.get("/results", (req, res) => { app.get("/results", async (req, res) => {
try { try {
const results = { count: {} };
const getCount = new Promise((resolve, reject) => {
db.all( db.all(
"SELECT animal_name, button_name, COUNT(*) as count FROM button_clicks GROUP BY button_name, animal_name", "SELECT animal_name, button_name, COUNT(*) as count FROM button_clicks GROUP BY button_name, animal_name",
(err, rows) => { (err, rows) => {
if (err) { if (err) {
console.error("Error fetching results:", err.message); reject("getCount: "+ err.message);
res.status(500).json({ error: "Internal server error" });
} else { } else {
const results = { count: {} };
rows.forEach((row) => { rows.forEach((row) => {
if (typeof results.count[row.animal_name] == "undefined") { if (typeof results.count[row.animal_name] == "undefined") {
results.count[row.animal_name] = {}; results.count[row.animal_name] = {};
} }
results.count[row.animal_name][row.button_name] = row.count; results.count[row.animal_name][row.button_name] = row.count;
}); });
res.json(results); resolve();
} }
}, },
); );
});
const getAvgTime = new Promise((resolve, reject) => {
//...
resolve();
})
await Promise.all([getCount, getAvgTime]);
res.json(results);
} catch (error) { } catch (error) {
console.error("Error fetching results:", error); console.error("Error fetching results:", error);
res.status(500).json({ error: "Internal server error" }); res.status(500).json({ error: "Internal server error" });