require('dotenv').config(); const { Client } = require('pg'); const fs = require('fs'); const path = require('path'); const getDbConfig = (database) => ({ host: process.env.DB_HOST, port: process.env.DB_PORT, user: process.env.DB_USER, password: process.env.DB_PASSWORD, database }); const ensureDatabase = async () => { const adminClient = new Client(getDbConfig('postgres')); await adminClient.connect(); const dbName = process.env.DB_NAME; const exists = await adminClient.query('SELECT 1 FROM pg_database WHERE datname = $1', [dbName]); if (exists.rowCount === 0) { await adminClient.query(`CREATE DATABASE ${dbName}`); } await adminClient.end(); }; const ensureSchema = async () => { const dbClient = new Client(getDbConfig(process.env.DB_NAME)); await dbClient.connect(); const sqlPath = path.join(__dirname, 'init_db.sql'); const sql = fs.readFileSync(sqlPath, 'utf8'); await dbClient.query(sql); await dbClient.end(); }; const run = async () => { try { await ensureDatabase(); await ensureSchema(); console.log('Database initialization complete.'); } catch (err) { console.error('Database initialization failed:', err.message); process.exit(1); } }; run();