// Служебные команды. В Docker: // docker compose exec bingo node server/cli.mjs backup — копия базы прямо сейчас // docker compose exec bingo node server/cli.mjs reset --yes — стереть все отметки и ответы (после тестов) import { mkdirSync } from 'node:fs'; import { join } from 'node:path'; import { openDb } from './db.mjs'; const dataDir = process.env.DATA_DIR || new URL('../data', import.meta.url).pathname; const [cmd, flag] = process.argv.slice(2); mkdirSync(dataDir, { recursive: true }); const db = openDb(join(dataDir, 'bingo.sqlite')); if (cmd === 'backup') { mkdirSync(join(dataDir, 'backups'), { recursive: true }); const file = join(dataDir, 'backups', `bingo-manual-${new Date().toISOString().replace(/[:.]/g, '-')}.sqlite`); db.prepare('VACUUM INTO ?').run(file); console.log(`Копия сохранена: ${file}`); } else if (cmd === 'reset') { if (flag !== '--yes') { console.log('Это сотрёт все отметки, ответы опроса и обнулит батарейку. Повторите с --yes, чтобы подтвердить.'); process.exit(1); } db.exec("BEGIN; DELETE FROM marks; DELETE FROM pulse; UPDATE totals SET value = 0 WHERE key = 'steps'; COMMIT;"); console.log('Данные очищены, батарейка обнулена.'); } else { console.log('Команды: backup | reset --yes'); process.exit(1); } db.close();