Versie 0.2.0
This commit is contained in:
commit
e77d8fd373
495 files changed
+81026
No files matched your search
@@ -0,0 +1,91 @@
|
||||
// Generated, do not edit. sha256:0c36b25c75165df3de3ba590bc3b8b5e5c39b5db442fe5f91547c9706dc403d0
|
||||
import { join } from 'node:path';
|
||||
import { CONFIG } from '../shared/config.js';
|
||||
import { activeDir } from './portfolios.mjs';
|
||||
import { openDatabase, closeDatabase, database, pragmaStand, withOtherDatabase, run, all, one } from './db/conn.mjs';
|
||||
import { SCHEMA } from './db/schema.js';
|
||||
import {
|
||||
seedPreferences, seedProviders, seedConnections, seedAssets,
|
||||
seedPriceSource, seedDashboardProfile,
|
||||
} from './db/seeds.js';
|
||||
import { runMigrations, readVersion } from './db/migrations.js';
|
||||
|
||||
export { run, all, one, lastId } from './db/conn.mjs';
|
||||
export { SCHEMA } from './db/schema.js';
|
||||
export { seedPriceSource } from './db/seeds.js';
|
||||
|
||||
export function dbFile() {
|
||||
return process.env.ASSETAPP_DB_FILE || join(activeDir(), 'db.sqlite');
|
||||
}
|
||||
|
||||
export function initDatabase(pad = dbFile(), { baseCurrency = CONFIG.PORTFOLIO.DEFAULT_BASE_CURRENCY } = {}) {
|
||||
assertBaseCurrency(baseCurrency);
|
||||
const bestaat = openBestaand(pad);
|
||||
if (!bestaat) {
|
||||
inrichten(baseCurrency);
|
||||
} else {
|
||||
runMigrations();
|
||||
seedDashboardProfile();
|
||||
}
|
||||
return startregel(pad, bestaat);
|
||||
}
|
||||
|
||||
export function createDatabase(pad, { baseCurrency = CONFIG.PORTFOLIO.DEFAULT_BASE_CURRENCY } = {}) {
|
||||
assertBaseCurrency(baseCurrency);
|
||||
withOtherDatabase(pad, () => {
|
||||
if (one(`SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'Schema'`)) {
|
||||
throw new Error(`createDatabase: ${pad} already holds a database.`);
|
||||
}
|
||||
inrichten(baseCurrency);
|
||||
});
|
||||
}
|
||||
|
||||
function assertBaseCurrency(code) {
|
||||
if (!CONFIG.PORTFOLIO.BASE_CURRENCIES.includes(code)) {
|
||||
throw new Error(`Unknown unit of account '${code}': not in CONFIG.PORTFOLIO.BASE_CURRENCIES.`);
|
||||
}
|
||||
}
|
||||
|
||||
function inrichten(baseCurrency) {
|
||||
run(SCHEMA);
|
||||
run(`INSERT INTO Schema (version) VALUES (?)`, [CONFIG.SCHEMA_VERSION]);
|
||||
run(`INSERT INTO Portfolio (id, baseCurrency, createdAt) VALUES (1, ?, ?)`, [baseCurrency, new Date().toISOString()]);
|
||||
seedPreferences();
|
||||
seedProviders();
|
||||
seedConnections();
|
||||
seedAssets();
|
||||
seedPriceSource(null, 'confirmed');
|
||||
seedDashboardProfile();
|
||||
}
|
||||
|
||||
function openBestaand(pad) {
|
||||
openDatabase(pad);
|
||||
return !!one(`SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'Schema'`);
|
||||
}
|
||||
|
||||
function startregel(pad, bestond) {
|
||||
const p = pragmaStand();
|
||||
const restjes = one(`SELECT COUNT(*) AS n FROM Preference WHERE scope = 'nwc'`);
|
||||
const waarschuwing = restjes && restjes.n > 0
|
||||
? `\n[assetapp] LET OP: er staan nog ${restjes.n} versleutelde NWC-rij(en) in Preference, uit de tijd `
|
||||
+ 'dat geheimen in de database leefden. Ze zijn niet meer te ontsleutelen en niemand leest ze; '
|
||||
+ 'opruimen kan via Systeem → Data.'
|
||||
: '';
|
||||
return `database: ${pad} (${bestond ? 'bestaand' : 'nieuw aangemaakt'}, versie ${readVersion()}) | `
|
||||
+ `FK's: ${p.foreignKeys ? 'aan' : 'UIT'} | journal: ${p.journalMode}` + waarschuwing;
|
||||
}
|
||||
|
||||
export function schemaVersion() { return readVersion(); }
|
||||
|
||||
export function databaseStatus() {
|
||||
const ingericht = one(`SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'Schema'`);
|
||||
if (!ingericht) return { klaar: false, reden: 'leeg', versie: null };
|
||||
const versie = readVersion();
|
||||
if (versie < CONFIG.SCHEMA_VERSION) return { klaar: false, reden: 'oud', versie };
|
||||
if (versie > CONFIG.SCHEMA_VERSION) return { klaar: false, reden: 'nieuwer', versie };
|
||||
return { klaar: true, reden: null, versie };
|
||||
}
|
||||
|
||||
export async function persist() { }
|
||||
|
||||
export { closeDatabase, database };
|
||||
Reference in new issue
Block a user