Files
ScraperControl/scripts/debug/check-production-db.ts

89 lines
2.8 KiB
TypeScript
Raw Permalink Normal View History

#!/usr/bin/env tsx
/**
* Check production database (Neon) for data
* Run with: npx tsx scripts/check-production-db.ts
*/
import { Pool } from 'pg';
import { config } from 'dotenv';
// Load environment variables (.env.local overrides .env)
config({ path: '.env.local' });
config({ path: '.env' });
const connectionString = process.env.DATABASE_URL;
if (!connectionString) {
console.error('❌ DATABASE_URL not found in environment');
process.exit(1);
}
console.log('🔍 Checking production database...');
console.log('📍 Connection:', connectionString.includes('neon.tech') ? 'Neon (Production)' : 'localhost');
const pool = new Pool({ connectionString });
async function checkDatabase() {
try {
// Test connection
console.log('\n1⃣ Testing database connection...');
await pool.query('SELECT NOW()');
console.log('✅ Database connection successful');
// Check tables exist
console.log('\n2⃣ Checking tables...');
const tablesResult = await pool.query(`
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public'
ORDER BY table_name
`);
console.log(`✅ Found ${tablesResult.rows.length} tables:`, tablesResult.rows.map(r => r.table_name).join(', '));
// Check churches
console.log('\n3⃣ Checking churches...');
const churchCount = await pool.query('SELECT COUNT(*) FROM "churches"');
console.log(`📊 Churches: ${churchCount.rows[0].count}`);
if (parseInt(churchCount.rows[0].count) > 0) {
const sampleChurch = await pool.query('SELECT id, name, city, state, latitude, longitude FROM "churches" LIMIT 1');
console.log('📍 Sample church:', sampleChurch.rows[0]);
} else {
console.log('⚠️ No churches found in database!');
}
// Check mass schedules
console.log('\n4⃣ Checking mass schedules...');
const massCount = await pool.query('SELECT COUNT(*) FROM "mass_schedules"');
console.log(`📊 Mass schedules: ${massCount.rows[0].count}`);
// Check liturgical days
console.log('\n5⃣ Checking liturgical days...');
const liturgicalCount = await pool.query('SELECT COUNT(*) FROM "liturgical_days"');
console.log(`📊 Liturgical days: ${liturgicalCount.rows[0].count}`);
// Check today's liturgical data
const today = new Date().toISOString().split('T')[0];
const todayData = await pool.query(
'SELECT * FROM "liturgical_days" WHERE date = $1',
[today]
);
if (todayData.rows.length > 0) {
console.log(`✅ Today's liturgical data exists:`, todayData.rows[0].season);
} else {
console.log(`⚠️ No liturgical data for today (${today})`);
}
console.log('\n✨ Database check complete!\n');
} catch (error) {
console.error('❌ Error:', error);
process.exit(1);
} finally {
await pool.end();
}
}
checkDatabase();