diff options
Diffstat (limited to 'database/db.js')
-rw-r--r-- | database/db.js | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/database/db.js b/database/db.js new file mode 100644 index 0000000..d849429 --- /dev/null +++ b/database/db.js @@ -0,0 +1,26 @@ +import fs from "fs"; +import Database from "better-sqlite3"; + +const allMigrations = [ + "database/000_init.sql", +]; + +const db = new Database("jdm.db"); +db.pragma("foreign_keys = ON"); + +db.transaction(function migrate() { + let version; + try { + version = db.prepare("SELECT version FROM schema_version").all()[0].version; + } catch { + version = 0; + } + if (version === allMigrations.length) return; + while (version < allMigrations.length) { + db.exec(fs.readFileSync(allMigrations[version], "utf8")); + version++; + } + db.exec(`DELETE FROM schema_version; INSERT INTO schema_version (version) VALUES (${version});`); +})(); + +export default db; |