Files
api_builder/backend/src/config/database.ts
eshmeshek a8536d7916 modified: backend/src/config/database.ts
modified:   backend/src/server.ts
2025-12-18 14:54:34 +03:00

54 lines
1.4 KiB
TypeScript

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 {
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;
}
};