From e21ba3e2136684887dfba75f75ab3197edee6041 Mon Sep 17 00:00:00 2001 From: Kostas Drakontidis Date: Thu, 15 May 2025 13:58:50 +0300 Subject: [PATCH] Added recovery feature If the database get corrupted, the admin can restore it through the website. --- app/routes/private_routes.js | 6 ++--- app/views/error.ejs | 13 +++++++---- src/javascript/error.js | 45 ++++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 src/javascript/error.js diff --git a/app/routes/private_routes.js b/app/routes/private_routes.js index c92eff9..1175500 100644 --- a/app/routes/private_routes.js +++ b/app/routes/private_routes.js @@ -1,4 +1,4 @@ -const db = require("../database/sqlite.database.js"); +var db = require("../database/sqlite.database.js"); const logger = require("../utils/logger.util.js"); const Database = require("better-sqlite3"); const path = require("path"); @@ -13,6 +13,7 @@ function errorPageRenderer(res, emoji, message) { res.render("error", { page_title: app_conf.name, css_path: path.join(app_conf.paths.css.web, "stylesheet.css"), + js_path: path.join(app_conf.paths.js.web, "error.js"), error_emoji: emoji, error_message: message }) @@ -51,8 +52,6 @@ router.post("/upload", async (req, res) => { db = new Database(db_conf.path, { fileMustExist: true }); } catch (error) { logger.error(error); - shutting_down = true; - shutdown(); } } }); @@ -240,6 +239,7 @@ router.get("/edit", async (req, res) => { } } catch (error) { logger.error(error.message); + errorPageRenderer(res, "🌋💥", "Internal server error. Check logs for more information."); } } else { errorPageRenderer(res, "✋⛔", "Bad request."); diff --git a/app/views/error.ejs b/app/views/error.ejs index ec0d041..3f35a0b 100644 --- a/app/views/error.ejs +++ b/app/views/error.ejs @@ -12,13 +12,18 @@ href="https://fonts.googleapis.com/css2?family=Ubuntu:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700&display=swap" rel="stylesheet"> + -
- + +
+ +
+ + + +