import { Pool } from 'pg'; import { config } from './environment'; import * as fs from 'fs'; import * as path from 'path'; // Main database pool for KIS API Builder metadata export const mainPool = new Pool({ host: config.mainDatabase.host, port: config.mainDatabase.port, database: config.mainDatabase.database, user: config.mainDatabase.user, password: config.mainDatabase.password, max: 20, idleTimeoutMillis: 30000, connectionTimeoutMillis: 2000, }); mainPool.on('error', (err) => { console.error('Unexpected error on idle client', err); process.exit(-1); }); export const initializeDatabase = async () => { try { const client = await mainPool.connect(); console.log('✅ Connected to main database successfully'); client.release(); } catch (error) { console.error('❌ Failed to connect to database:', error); throw error; } }; export const runMigrations = async () => { console.log('🔄 Running migrations...'); try { // In compiled JS, __dirname is /app/backend/dist/config // We need to go up to /app/backend and then into src/migrations const migrationsDir = path.join(__dirname, '../../src/migrations'); const files = fs.readdirSync(migrationsDir) .filter(f => f.endsWith('.sql')) .sort(); for (const file of files) { console.log(` 📄 ${file}`); const sql = fs.readFileSync(path.join(migrationsDir, file), 'utf-8'); await mainPool.query(sql); } console.log('✅ Migrations completed'); } catch (error) { console.error('❌ Migration failed:', error); throw error; } };