import { Pool } from 'pg'; import dotenv from 'dotenv'; import path from 'path'; // Load env vars from .env file in backend root dotenv.config({ path: path.join(__dirname, '../../.env') }); const pool = new Pool({ connectionString: process.env.DATABASE_URL, }); async function fixSchema() { console.log('🔧 Fixing schema...'); const client = await pool.connect(); try { // Add seo_keywords column console.log('Adding seo_keywords column...'); await client.query(` ALTER TABLE monitors ADD COLUMN IF NOT EXISTS seo_keywords JSONB; `); // Create monitor_rankings table console.log('Creating monitor_rankings table...'); await client.query(` CREATE TABLE IF NOT EXISTS monitor_rankings ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), monitor_id UUID NOT NULL REFERENCES monitors(id) ON DELETE CASCADE, keyword VARCHAR(255) NOT NULL, rank INTEGER, url_found TEXT, created_at TIMESTAMP DEFAULT NOW() ); `); // Create indexes for monitor_rankings await client.query(`CREATE INDEX IF NOT EXISTS idx_monitor_rankings_monitor_id ON monitor_rankings(monitor_id);`); await client.query(`CREATE INDEX IF NOT EXISTS idx_monitor_rankings_keyword ON monitor_rankings(keyword);`); await client.query(`CREATE INDEX IF NOT EXISTS idx_monitor_rankings_created_at ON monitor_rankings(created_at);`); console.log('✅ Schema fixed successfully!'); } catch (err) { console.error('❌ Schema fix failed:', err); } finally { client.release(); await pool.end(); } } fixSchema();