summaryrefslogtreecommitdiff
path: root/nodejs/database/db.js
diff options
context:
space:
mode:
authorJulien Dessaux2024-03-21 17:08:37 +0100
committerJulien Dessaux2024-03-27 15:21:00 +0100
commitd668eac4a63a9aa98c3efff395faa23cfcea1c1b (patch)
tree691e3bb471bcacadb975f581f73e09b84287b4a5 /nodejs/database/db.js
parent[javascript] fixed mining loop (diff)
downloadspacetraders-d668eac4a63a9aa98c3efff395faa23cfcea1c1b.tar.gz
spacetraders-d668eac4a63a9aa98c3efff395faa23cfcea1c1b.tar.bz2
spacetraders-d668eac4a63a9aa98c3efff395faa23cfcea1c1b.zip
[node] begin the great typescript rewrite
Diffstat (limited to 'nodejs/database/db.js')
-rw-r--r--nodejs/database/db.js51
1 files changed, 0 insertions, 51 deletions
diff --git a/nodejs/database/db.js b/nodejs/database/db.js
deleted file mode 100644
index 4438fec..0000000
--- a/nodejs/database/db.js
+++ /dev/null
@@ -1,51 +0,0 @@
-import fs from 'fs';
-import Database from 'better-sqlite3';
-
-const allMigrations = [
- 'database/000_init.sql',
- 'database/001_systems.sql',
- 'database/002_ships.sql',
- 'database/003_surveys.sql',
- 'database/004_markets.sql',
-];
-
-const db = new Database(
- process.env.NODE_ENV === 'test' ? 'test.db' : 'spacetraders.db',
- process.env.NODE_ENV === 'development' ? { verbose: console.log } : null
-);
-db.pragma('foreign_keys = ON');
-db.pragma('journal_mode = WAL');
-
-function init() {
- db.transaction(function migrate() {
- let version;
- try {
- version = db.prepare('SELECT version FROM schema_version').get().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 function reset() {
- const indices = db.prepare(`SELECT name FROM sqlite_master WHERE type = 'index';`).all();
- const tables = db.prepare(`SELECT name FROM sqlite_master WHERE type = 'table';`).all();
- const triggers = db.prepare(`SELECT name FROM sqlite_master WHERE type = 'trigger';`).all();
- const views = db.prepare(`SELECT name FROM sqlite_master WHERE type = 'view';`).all();
- indices.forEach(elt => db.exec(`DROP INDEX ${elt.name};`));
- tables.forEach(elt => db.exec(`DROP TABLE ${elt.name};`));
- triggers.forEach(elt => db.exec(`DROP TRIGGER ${elt.name};`));
- views.forEach(elt => db.exec(`DROP VIEW ${elt.name};`));
- db.exec(`VACUUM;`);
- init();
-}
-
-init();
-
-export default db;