refactor: explicit migrate/seed scripts, no auto-init at server start
Auto-running migrations on every server boot is dangerous — a broken migration silently corrupts data or blocks server start. Now require explicit `npm run migrate && npm run seed:permissions` before start. Boot asserts schema exists (users + role_permissions tables) and fails fast with a clear message otherwise. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
"dev": "nodemon src/server.js",
|
||||
"migrate": "node src/db/migrate.js",
|
||||
"seed": "node src/db/seed.js",
|
||||
"seed:permissions": "node src/db/seed-permissions.js",
|
||||
"test": "node --test tests/*.test.js"
|
||||
},
|
||||
"dependencies": {
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
'use strict';
|
||||
require('../controllers/permissionsController').seedDefaults();
|
||||
require('../controllers/gamificationController').seedAchievements();
|
||||
console.log('[seed-permissions] OK');
|
||||
+13
-3
@@ -1,9 +1,19 @@
|
||||
const config = require('./config'); // validates .env, fails fast on error
|
||||
const logger = require('./utils/logger'); // structured logging
|
||||
|
||||
require('./db/migrate'); // авто-миграция при каждом старте
|
||||
const { seedDefaults: seedPermissions } = require('./controllers/permissionsController');
|
||||
seedPermissions();
|
||||
/* ── Schema check — fail fast if migrate hasn't been run ── */
|
||||
const _bootDb = require('./db/db');
|
||||
try {
|
||||
_bootDb.prepare('SELECT 1 FROM users LIMIT 1').get();
|
||||
_bootDb.prepare('SELECT 1 FROM role_permissions LIMIT 1').get();
|
||||
} catch (e) {
|
||||
process.stderr.write(
|
||||
'[boot] FATAL: schema not initialized.\n' +
|
||||
'Run: npm run migrate && npm run seed:permissions\n'
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const express = require('express');
|
||||
const cors = require('cors');
|
||||
const path = require('path');
|
||||
|
||||
Reference in New Issue
Block a user