diff --git a/backend/src/config/database.ts b/backend/src/config/database.ts index 12c5a44..d8534d0 100644 --- a/backend/src/config/database.ts +++ b/backend/src/config/database.ts @@ -1,5 +1,7 @@ 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({ @@ -28,3 +30,24 @@ export const initializeDatabase = async () => { throw error; } }; + +export const runMigrations = async () => { + console.log('🔄 Running migrations...'); + try { + const migrationsDir = path.join(__dirname, '../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; + } +}; diff --git a/backend/src/server.ts b/backend/src/server.ts index d2f2c4a..f68996f 100644 --- a/backend/src/server.ts +++ b/backend/src/server.ts @@ -5,7 +5,7 @@ import helmet from 'helmet'; import swaggerUi from 'swagger-ui-express'; import path from 'path'; import { config } from './config/environment'; -import { initializeDatabase } from './config/database'; +import { initializeDatabase, runMigrations } from './config/database'; import { generateDynamicSwagger } from './config/dynamicSwagger'; import { databasePoolManager } from './services/DatabasePoolManager'; @@ -154,6 +154,7 @@ app.use((err: any, _req: Request, res: Response, _next: any) => { const startServer = async () => { try { await initializeDatabase(); + await runMigrations(); await databasePoolManager.initialize(); app.listen(config.port, () => {