// 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 }; }