Versie 0.2.0
This commit is contained in:
commit
e77d8fd373
495 files changed
+81026
No files matched your search
@@ -0,0 +1,47 @@
|
||||
// Generated, do not edit. sha256:5bd22bc9def9eb9c8a4556854dfc31dcdfb39f064aeaa1b0b584f8b737953956
|
||||
import { mkdtemp, rm, readFile } from 'node:fs/promises';
|
||||
import { tmpdir } from 'node:os';
|
||||
import { join } from 'node:path';
|
||||
import { closeDatabase, run } from './db/conn.mjs';
|
||||
import { initDatabase, dbFile } from './db.js';
|
||||
import { restoreDatabase } from './db-restore.mjs';
|
||||
import { getBaseCurrency } from './data/portfolio.js';
|
||||
import { setupStatus } from './data/onboarding.js';
|
||||
|
||||
export async function startFreshDatabase({ baseCurrency: chosen = null } = {}) {
|
||||
const dir = await mkdtemp(join(tmpdir(), 'assetapp-fresh-'));
|
||||
try {
|
||||
const nieuw = join(dir, 'nieuw.sqlite');
|
||||
const baseCurrency = chosen ?? getBaseCurrency();
|
||||
closeDatabase();
|
||||
initDatabase(nieuw, { baseCurrency });
|
||||
|
||||
const kopie = join(dir, 'kopie.sqlite');
|
||||
run(`VACUUM INTO '${kopie.replace(/'/g, "''")}'`, []);
|
||||
closeDatabase();
|
||||
|
||||
const bytes = await readFile(kopie);
|
||||
const uit = await restoreDatabase(bytes);
|
||||
return {
|
||||
...uit,
|
||||
geheimenWaarschuwing: 'De geheimen (NWC-URI\'s, LND-macaroons, provider-sleutels) staan in '
|
||||
+ 'secrets.json in de map van deze portefeuille en zijn NIET weggegooid: daar staat ook de sleutel van de toegangscontrole. '
|
||||
+ 'Let op dat een geheim aan een bron-id hangt en die reeks in een lege administratie weer bij 1 '
|
||||
+ 'begint, dus een nieuwe tracking-bron kan het geheim van een oude erven.',
|
||||
};
|
||||
} catch (e) {
|
||||
try { initDatabase(dbFile()); } catch { }
|
||||
throw e;
|
||||
} finally {
|
||||
await rm(dir, { recursive: true, force: true });
|
||||
}
|
||||
}
|
||||
|
||||
export async function chooseSetupCurrency(baseCurrency) {
|
||||
if (getBaseCurrency() === baseCurrency) return { changed: false };
|
||||
if (!setupStatus().currencyOpen) {
|
||||
throw new Error('The unit of account can only be chosen on a portfolio that holds nothing yet.');
|
||||
}
|
||||
await startFreshDatabase({ baseCurrency });
|
||||
return { changed: true };
|
||||
}
|
||||
Reference in new issue
Block a user