2026-01-18 02:22:05 -06:00
|
|
|
const { query, pool } = require('./config/database');
|
|
|
|
|
const fs = require('fs');
|
2026-01-04 17:52:37 -06:00
|
|
|
|
2026-01-18 02:22:05 -06:00
|
|
|
async function applyFixes() {
|
|
|
|
|
console.log('🔧 Applying database fixes...\n');
|
|
|
|
|
|
2026-01-04 17:52:37 -06:00
|
|
|
try {
|
2026-01-18 02:22:05 -06:00
|
|
|
const sql = fs.readFileSync('./fix-database-issues.sql', 'utf8');
|
|
|
|
|
|
|
|
|
|
console.log('Executing SQL fixes...');
|
|
|
|
|
await query(sql);
|
|
|
|
|
|
|
|
|
|
console.log('\n✅ All fixes applied successfully!\n');
|
|
|
|
|
|
|
|
|
|
// Verify the fixes
|
|
|
|
|
console.log('📊 Verifying fixes:');
|
|
|
|
|
|
|
|
|
|
// Count indexes
|
|
|
|
|
const indexes = await query(`
|
|
|
|
|
SELECT COUNT(*) as count
|
|
|
|
|
FROM pg_indexes
|
2026-01-04 17:52:37 -06:00
|
|
|
WHERE schemaname = 'public'
|
|
|
|
|
`);
|
2026-01-18 02:22:05 -06:00
|
|
|
console.log(` • Total indexes: ${indexes.rows[0].count}`);
|
|
|
|
|
|
|
|
|
|
// Check constraints
|
|
|
|
|
const constraints = await query(`
|
|
|
|
|
SELECT COUNT(*) as count
|
|
|
|
|
FROM information_schema.table_constraints
|
|
|
|
|
WHERE table_schema = 'public'
|
2026-01-04 17:52:37 -06:00
|
|
|
`);
|
2026-01-18 02:22:05 -06:00
|
|
|
console.log(` • Total constraints: ${constraints.rows[0].count}`);
|
|
|
|
|
|
|
|
|
|
// Check triggers
|
|
|
|
|
const triggers = await query(`
|
|
|
|
|
SELECT COUNT(*) as count
|
|
|
|
|
FROM information_schema.triggers
|
|
|
|
|
WHERE trigger_schema = 'public'
|
|
|
|
|
`);
|
|
|
|
|
console.log(` • Total triggers: ${triggers.rows[0].count}`);
|
|
|
|
|
|
|
|
|
|
console.log('\n🎉 Database optimization complete!\n');
|
|
|
|
|
process.exit(0);
|
2026-01-04 17:52:37 -06:00
|
|
|
} catch (error) {
|
2026-01-18 02:22:05 -06:00
|
|
|
console.error('❌ Error applying fixes:', error.message);
|
|
|
|
|
console.error('Details:', error);
|
2026-01-04 17:52:37 -06:00
|
|
|
process.exit(1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-18 02:22:05 -06:00
|
|
|
applyFixes();
|