From 9a16afc84b1cbca7e3ab9d2e73aa6a927b81360d Mon Sep 17 00:00:00 2001 From: Teh PeGaSuS Date: Sun, 26 Apr 2026 21:42:22 +0200 Subject: [PATCH] Add lib/db.js --- lib/db.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 lib/db.js diff --git a/lib/db.js b/lib/db.js new file mode 100644 index 0000000..e0c6814 --- /dev/null +++ b/lib/db.js @@ -0,0 +1,44 @@ +import Database from 'better-sqlite3'; +import path from 'path'; + +const dbPath = path.resolve(process.cwd(), 'devbin.db'); +const db = new Database(dbPath); + +db.exec(` + CREATE TABLE IF NOT EXISTS pastes ( + id TEXT PRIMARY KEY, + content TEXT NOT NULL, + language TEXT NOT NULL, + filename TEXT NOT NULL, + created_at TEXT NOT NULL, + expires_at TEXT, + expiry_type TEXT DEFAULT 'time', + view_count INTEGER DEFAULT 0, + allow_discussions INTEGER DEFAULT 0, + delete_token TEXT + ); + + CREATE TABLE IF NOT EXISTS comments ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + paste_id TEXT NOT NULL, + author TEXT NOT NULL, + content TEXT NOT NULL, + created_at TEXT NOT NULL, + FOREIGN KEY (paste_id) REFERENCES pastes (id) ON DELETE CASCADE + ); +`); + +// Migration for delete_token +try { + const tableInfo = db.prepare("PRAGMA table_info(pastes)").all(); + if (!tableInfo.some(col => col.name === 'delete_token')) { + db.exec("ALTER TABLE pastes ADD COLUMN delete_token TEXT;"); + } + if (!tableInfo.some(col => col.name === 'allow_discussions')) { + db.exec("ALTER TABLE pastes ADD COLUMN allow_discussions INTEGER DEFAULT 0;"); + } +} catch (err) { + console.error("Migration failed:", err); +} + +export default db;