initial commit
This commit is contained in:
commit
b6f0791243
24 files changed
+3966
No files matched your search
@@ -0,0 +1,30 @@
|
||||
// Служебные команды. В 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();
|
||||
Reference in new issue
Block a user