#!/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();