#!/usr/bin/env python3 """Fix missing sentiment columns in citation_records table.""" import asyncio import asyncpg async def fix_schema(): # Read DATABASE_URL from .env file in project root db_url = "postgresql://chiguyong@localhost:5432/geo_platform" conn = await asyncpg.connect(db_url) try: # Check existing columns rows = await conn.fetch( "SELECT column_name FROM information_schema.columns WHERE table_name = 'citation_records'" ) existing = {r["column_name"] for r in rows} print(f"Existing columns: {existing}") needed = ["sentiment", "sentiment_confidence", "sentiment_key_phrases"] missing = [c for c in needed if c not in existing] if not missing: print("All sentiment columns already exist.") return print(f"Missing columns: {missing}") if "sentiment" in missing: await conn.execute( "ALTER TABLE citation_records ADD COLUMN sentiment VARCHAR(20) NULL" ) print("Added sentiment column") if "sentiment_confidence" in missing: await conn.execute( "ALTER TABLE citation_records ADD COLUMN sentiment_confidence DOUBLE PRECISION NULL" ) print("Added sentiment_confidence column") if "sentiment_key_phrases" in missing: await conn.execute( "ALTER TABLE citation_records ADD COLUMN sentiment_key_phrases JSONB NULL" ) print("Added sentiment_key_phrases column") print("Schema fix complete.") finally: await conn.close() if __name__ == "__main__": asyncio.run(fix_schema())