50 lines
2.1 KiB
JavaScript
50 lines
2.1 KiB
JavaScript
|
|
// Setup Script for CVE Dashboard — PostgreSQL
|
||
|
|
// Runs the db-schema.sql DDL against the Postgres instance configured in DATABASE_URL.
|
||
|
|
// Idempotent — safe to run multiple times.
|
||
|
|
//
|
||
|
|
// Usage: node backend/setup-postgres.js
|
||
|
|
//
|
||
|
|
// Requires DATABASE_URL in .env or environment.
|
||
|
|
|
||
|
|
require('dotenv').config({ path: require('path').join(__dirname, '.env') });
|
||
|
|
|
||
|
|
const fs = require('fs');
|
||
|
|
const path = require('path');
|
||
|
|
const pool = require('./db');
|
||
|
|
|
||
|
|
const SCHEMA_FILE = path.join(__dirname, 'db-schema.sql');
|
||
|
|
|
||
|
|
async function main() {
|
||
|
|
console.log('🚀 CVE Dashboard — PostgreSQL Schema Setup\n');
|
||
|
|
console.log('════════════════════════════════════════\n');
|
||
|
|
|
||
|
|
try {
|
||
|
|
// Verify connection
|
||
|
|
const { rows } = await pool.query('SELECT version()');
|
||
|
|
console.log(`✓ Connected to: ${rows[0].version.split(',')[0]}`);
|
||
|
|
console.log(` Database URL: ${process.env.DATABASE_URL.replace(/:[^:@]+@/, ':***@')}\n`);
|
||
|
|
|
||
|
|
// Read and execute schema
|
||
|
|
const schema = fs.readFileSync(SCHEMA_FILE, 'utf8');
|
||
|
|
await pool.query(schema);
|
||
|
|
console.log('✓ Schema created/verified (all tables and indexes)\n');
|
||
|
|
|
||
|
|
// Verify table count
|
||
|
|
const { rows: tables } = await pool.query(
|
||
|
|
"SELECT COUNT(*) as count FROM information_schema.tables WHERE table_schema = 'public'"
|
||
|
|
);
|
||
|
|
console.log(`✓ ${tables[0].count} tables in database\n`);
|
||
|
|
|
||
|
|
console.log('╔════════════════════════════════════════════════════════╗');
|
||
|
|
console.log('║ POSTGRESQL SCHEMA SETUP COMPLETE ║');
|
||
|
|
console.log('╚════════════════════════════════════════════════════════╝\n');
|
||
|
|
} catch (err) {
|
||
|
|
console.error('❌ Setup failed:', err.message);
|
||
|
|
process.exit(1);
|
||
|
|
} finally {
|
||
|
|
await pool.end();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
main();
|