From 9e713146e15055028eda1c0a9280a65b54bd4a43 Mon Sep 17 00:00:00 2001 From: "Gu://em_" Date: Sat, 29 Mar 2025 12:45:59 +0100 Subject: [PATCH] feat: initDatabase function --- .gitignore | 2 ++ data/sqlite.db | 0 server.js | 3 ++- src/database/index.js | 18 ++++++++++++++++-- src/database/sqlite.js | 14 +++++++++++--- 5 files changed, 31 insertions(+), 6 deletions(-) delete mode 100644 data/sqlite.db diff --git a/.gitignore b/.gitignore index 27c5a85..6121f23 100644 --- a/.gitignore +++ b/.gitignore @@ -135,6 +135,8 @@ dist .yarn/install-state.gz .pnp.* +# Data +data/* # Temporary tests/ \ No newline at end of file diff --git a/data/sqlite.db b/data/sqlite.db deleted file mode 100644 index e69de29..0000000 diff --git a/server.js b/server.js index 4ed2227..63a2b4d 100644 --- a/server.js +++ b/server.js @@ -4,7 +4,7 @@ const express = require("express"); const app = express(); const fs = require("fs"); const path = require("path"); -const { getDatabase, connectDatabase } = require('./src/database/index'); +const { getDatabase, connectDatabase, initDatabase } = require('./src/database/index'); const handleError = require('./src/middleware/errors'); // --- Define constants --- @@ -37,6 +37,7 @@ console.debug("Port: ", port); // Database connection db = connectDatabase(config.database); +db = initDatabase(); // --- Routing --- diff --git a/src/database/index.js b/src/database/index.js index 5d3dcfa..5578e1c 100644 --- a/src/database/index.js +++ b/src/database/index.js @@ -19,6 +19,20 @@ async function connectDatabase(config) { function getDatabase() { return db; } - -module.exports = { getDatabase, connectDatabase }; \ No newline at end of file +// Setups the database by creating the tables and the default objects +function initDatabase() { + if (db == null) { + throw new Error("Database is not connected"); + } + + db.exec("CREATE TABLE mods ( \ + Name tinytext PRIMARY KEY, \ + DisplayName tinytext, \ + Author tinytext FOREIGN KEY,\ + Versions longtext,\ + OtherInfos longtext \ + )"); +} + +module.exports = { getDatabase, connectDatabase, initDatabase }; \ No newline at end of file diff --git a/src/database/sqlite.js b/src/database/sqlite.js index 663a5d8..b9712bb 100644 --- a/src/database/sqlite.js +++ b/src/database/sqlite.js @@ -9,8 +9,8 @@ class SQLiteDatabase { async connect() { try { - this.db = new sqlite("./data/sqlite.db") - // db.pragma("journal_mode = WAL") + this.db = new sqlite("./data/sqlite.db"); + // db.pragma("journal_mode = WAL"); console.log("Connected to SQLite"); } catch (err) { console.error("Error connecting to SQLite database: ", err); @@ -33,11 +33,19 @@ class SQLiteDatabase { return this.db.prepare(sql).all(); } } catch (err) { - console.error("Error executing query: ", err); + console.error("Error executing prepared query:", err); throw err; } } + async exec(sql) { + try { + return this.db.exec(sql); + } catch (err) { + console.error("Error executing query:", err)} + + } + } module.exports = SQLiteDatabase; \ No newline at end of file