From 040e2226df9fc76109c623bd69860a68c06b430a Mon Sep 17 00:00:00 2001 From: MattLeo Date: Mon, 24 Nov 2025 14:20:32 -0600 Subject: [PATCH] added db intialization on server start --- server/db.js | 43 +++++++++++++++++++++++++++++++++++++++ server/ka.db | Bin 0 -> 16384 bytes server/package-lock.json | 9 +++++++- server/package.json | 3 ++- server/server.js | 16 ++++++++++----- 5 files changed, 64 insertions(+), 7 deletions(-) create mode 100644 server/db.js create mode 100644 server/ka.db diff --git a/server/db.js b/server/db.js new file mode 100644 index 0000000..cb43384 --- /dev/null +++ b/server/db.js @@ -0,0 +1,43 @@ +const initSqlJs = require('sql.js'); +const fs = require('fs'); + +let db = null; +const DB_PATH = './ka.db'; + +async function initDb() { + const SQL = await initSqlJs(); + + console.log('Initializing Database...'); + + // Loading Database if it already exists + if (fs.existsSync(DB_PATH)) { + const buffer = fs.readFilySync(DB_PATH); + db = new SQL.Database(buffer); + console.log('Database Loaded') + } else { + + // Creating a new one if it does not + console.log('Database not found. Creating new instance...') + db = new SQL.Database(); + + // Creating Knowledge Article table + db.run(` + CREATE TABLE articles ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + ka_number TEXT UNIQUE, + title TEXT, + content TEXT, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP + ) + `); + + // Saving the created db to file + const data = db.export(); + fs.writeFileSync(DB_PATH, Buffer.from(data)); + console.log(`Database created at ${DB_PATH}`); + } + + return db; +} + +module.exports = {initDb}; \ No newline at end of file diff --git a/server/ka.db b/server/ka.db new file mode 100644 index 0000000000000000000000000000000000000000..2964f859af33ca76d5f6e864f45652df6451bc9e GIT binary patch literal 16384 zcmeI%&uYRj90%}3#SOtfH&4Rvs3;p_FR)ItQKp^N6ec^Asu`4NMUAlY7<-#N$6jg2 zrDZ*+^99N`kf!WAB$}_8cRliMv1OW&@00Izz00bZa0SG_<0@)H6=8N@qn@@BwU8wDPVeXm!R;_m` znjKaPT~}CAkhE_5f)2(uqhP5zW@hWX&d=(N2LIqm%wVI#nF*bixxFZ9D>X}Wkit3H zjuiL8rJ-vNEO$Z=VnUWDA8p4383;#qj%K|EezaRo)rO>alH@t|$P>rIbf_098FJh= zTSZz$`c&^m1zOF0a}n;00bZa0SG_<0uX=z1R#(I;Qv1k0t6rc0SG_<0uX=z1Rwwb2tXkF0>5>l BeP;jw literal 0 HcmV?d00001 diff --git a/server/package-lock.json b/server/package-lock.json index 94e71bd..2ddd7b5 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -9,7 +9,8 @@ "version": "0.0.1", "license": "MIT", "dependencies": { - "express": "^5.1.0" + "express": "^5.1.0", + "sql.js": "^1.13.0" } }, "node_modules/accepts": { @@ -754,6 +755,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/sql.js": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/sql.js/-/sql.js-1.13.0.tgz", + "integrity": "sha512-RJbVP1HRDlUUXahJ7VMTcu9Rm1Nzw+EBpoPr94vnbD4LwR715F3CcxE2G2k45PewcaZ57pjetYa+LoSJLAASgA==", + "license": "MIT" + }, "node_modules/statuses": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", diff --git a/server/package.json b/server/package.json index 37d0144..de0d180 100644 --- a/server/package.json +++ b/server/package.json @@ -13,6 +13,7 @@ "author": "Matt Taylor", "license": "MIT", "dependencies": { - "express": "^5.1.0" + "express": "^5.1.0", + "sql.js": "^1.13.0" } } diff --git a/server/server.js b/server/server.js index 790faa3..dc524aa 100644 --- a/server/server.js +++ b/server/server.js @@ -1,13 +1,19 @@ const express = require('express'); +const { initDb } = require('./db'); const app = express(); const PORT = 9000; app.use(express.json()); -app.get('/', (req, res) => { - res.json({message : 'Server is running'}); -}); +initDb().then(() => { -app.listen(PORT, () => { - console.log(`Server running on http://localhost:${PORT}`); + app.get('/', (req, res) => { + res.json({message : 'Server is running'}); + }); + + app.listen(PORT, () => { + console.log(`Server running on http://localhost:${PORT}`); + }); +}).catch(err => { + console.error('Failed to initialize database:', err); }); \ No newline at end of file