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

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

View File

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