1
0
Fork 0

Implemented a basic extraction loop

This commit is contained in:
Julien Dessaux 2023-05-14 01:50:19 +02:00
parent f190aea975
commit efdf50a55a
Signed by: adyxax
GPG key ID: F92E51B86E07177E
12 changed files with 2022 additions and 0 deletions

8
database/000_init.sql Normal file
View file

@ -0,0 +1,8 @@
CREATE TABLE schema_version (
version INTEGER NOT NULL
);
CREATE TABLE config (
id INTEGER PRIMARY KEY,
key TEXT NOT NULL UNIQUE,
value TEXT NOT NULL
);

23
database/config.js Normal file
View file

@ -0,0 +1,23 @@
import db from './db.js';
const getTokenStatement = db.prepare(`SELECT value from config where key = 'token';`);
const registerAgentStatement = db.prepare(`INSERT INTO config(key, value) VALUES ('symbol', ?), ('faction', ?), ('token', ?);`);
export function getToken() {
try {
return getTokenStatement.get().value;
} catch (err) {
console.log(err);
return null;
}
}
export function registerAgent(symbol, faction, token) {
try {
registerAgentStatement.run(symbol, faction, token);
return true;
} catch (err) {
console.log(err);
return false;
}
}

29
database/db.js Normal file
View file

@ -0,0 +1,29 @@
import fs from 'fs';
import Database from 'better-sqlite3';
const allMigrations = [
'database/000_init.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.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 default db;