app: logging & in-memory sqlite while in non-prod
All checks were successful
Basic Checking / Explore-Gitea-Actions (push) Successful in 30s

The tests are currently working on my laptop, but failing on the CI
actions. 🤔
There have always been errors on it inserting animals to the database,
and now seem like it fails to get routes before the async promise is
fufilled? I'm not sure.

Switch everything to the bole logger, and not the `console.`
stuff.

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
This commit is contained in:
Vincent Batts 2023-09-28 14:13:59 -04:00
parent 6c0c6b071c
commit e32d3c9233
Signed by: vbatts
GPG key ID: E30EFAA812C6E5ED
2 changed files with 18 additions and 13 deletions

25
app.js
View file

@ -4,15 +4,18 @@ const path = require("path");
const morgan = require("morgan"); const morgan = require("morgan");
const bodyParser = require("body-parser"); const bodyParser = require("body-parser");
const sqlite3 = require("sqlite3").verbose(); const sqlite3 = require("sqlite3").verbose();
const bole = require('bole');
const log = bole('app');
const config = require('./config');
const app = express(); const app = express();
// Create an SQLite database and initialize tables // Create an SQLite database and initialize tables
const db = new sqlite3.Database("db/results.db", (err) => { const db = new sqlite3.Database(config.db_path, (err) => {
if (err) { if (err) {
console.error("Error opening SQLite database:", err.message); log.error("Error opening SQLite database:", err.message);
} else { } else {
console.log("Connected to SQLite database"); log.info("Connected to SQLite database", config.db_path);
db.run(` db.run(`
CREATE TABLE IF NOT EXISTS button_clicks ( CREATE TABLE IF NOT EXISTS button_clicks (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
@ -59,16 +62,16 @@ try {
[animal, animal], [animal, animal],
(err) => { (err) => {
if (err) { if (err) {
console.error(`Error inserting animal ${animal}: `, err.message); log.error(`Error inserting animal ${animal}: `, err.message);
} else { } else {
console.log(`Success inserting animal ${animal}`); log.info(`Success inserting animal ${animal}`);
} }
}, },
); );
} }
}); });
} catch (error) { } catch (error) {
console.error("Error loading animals:", error); log.error("Error loading animals:", error);
animals = ["Dog", "Cat", "Elephant", "Lion", "Giraffe"]; animals = ["Dog", "Cat", "Elephant", "Lion", "Giraffe"];
} }
@ -88,7 +91,7 @@ app.get("/getNextAnimal", async (req, res) => {
const randomAnimal = animals[randomIndex]; const randomAnimal = animals[randomIndex];
res.json({ animalName: randomAnimal }); res.json({ animalName: randomAnimal });
} catch (error) { } catch (error) {
console.error("Error fetching random animal:", error); log.error("Error fetching random animal:", error);
res.status(500).json({ error: "Internal server error" }); res.status(500).json({ error: "Internal server error" });
} }
}); });
@ -98,7 +101,7 @@ app.post("/recordButtonClick", (req, res) => {
try { try {
//const { buttonName, sessionId } = req.body; //const { buttonName, sessionId } = req.body;
const result = req.body; const result = req.body;
console.error(result); log.error(result);
db.run( db.run(
"INSERT INTO button_clicks (session_id, animal_name, button_name, timestamp, time_difference) VALUES (?, ?, ?, ?, ?)", "INSERT INTO button_clicks (session_id, animal_name, button_name, timestamp, time_difference) VALUES (?, ?, ?, ?, ?)",
@ -111,7 +114,7 @@ app.post("/recordButtonClick", (req, res) => {
], ],
(err) => { (err) => {
if (err) { if (err) {
console.error("Error recording button click:", err.message); log.error("Error recording button click:", err.message);
res.status(500).json({ error: "Internal server error" }); res.status(500).json({ error: "Internal server error" });
} else { } else {
res.sendStatus(200); res.sendStatus(200);
@ -119,7 +122,7 @@ app.post("/recordButtonClick", (req, res) => {
}, },
); );
} catch (error) { } catch (error) {
console.error("Error recording button click:", error); log.error("Error recording button click:", error);
res.status(500).json({ error: "Internal server error" }); res.status(500).json({ error: "Internal server error" });
} }
}); });
@ -200,7 +203,7 @@ app.get("/results", async (req, res) => {
await Promise.all([getCount, getTotalAvgTime, getAvgTime]); await Promise.all([getCount, getTotalAvgTime, getAvgTime]);
res.json(results); res.json(results);
} catch (error) { } catch (error) {
console.error("Error fetching results:", error); log.error("Error fetching results:", error);
res.status(500).json({ error: "Internal server error" }); res.status(500).json({ error: "Internal server error" });
} }
}); });

View file

@ -9,7 +9,9 @@ config.express = {
if (PRODUCTION) { if (PRODUCTION) {
config.express.ip = '0.0.0.0'; config.express.ip = '0.0.0.0';
bole.output({ level: 'debug', stream: process.stdout }) config.db_path = "db/results.db";
} else {
bole.output({ level: 'info', stream: process.stdout }) bole.output({ level: 'info', stream: process.stdout })
} else {
config.db_path = ":memory:";
bole.output({ level: 'debug', stream: process.stdout })
} }