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",
|
"dev": "nodemon src/server.js",
|
||||||
"migrate": "node src/db/migrate.js",
|
"migrate": "node src/db/migrate.js",
|
||||||
"seed": "node src/db/seed.js",
|
"seed": "node src/db/seed.js",
|
||||||
|
"seed:permissions": "node src/db/seed-permissions.js",
|
||||||
"test": "node --test tests/*.test.js"
|
"test": "node --test tests/*.test.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"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 config = require('./config'); // validates .env, fails fast on error
|
||||||
const logger = require('./utils/logger'); // structured logging
|
const logger = require('./utils/logger'); // structured logging
|
||||||
|
|
||||||
require('./db/migrate'); // авто-миграция при каждом старте
|
/* ── Schema check — fail fast if migrate hasn't been run ── */
|
||||||
const { seedDefaults: seedPermissions } = require('./controllers/permissionsController');
|
const _bootDb = require('./db/db');
|
||||||
seedPermissions();
|
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 express = require('express');
|
||||||
const cors = require('cors');
|
const cors = require('cors');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
|
|||||||
Reference in New Issue
Block a user