"""
Migration: Add text overlay fields to campaigns table
Usage: Run this within Flask shell or as part of app startup
"""

def migrate_campaign_fields():
    """Add text overlay fields to campaigns table if they don't exist"""
    from app.extensions import db
    from sqlalchemy import text

    try:
        # Check if columns exist
        inspector = db.inspect(db.engine)
        columns = [col['name'] for col in inspector.get_columns('campaigns')]

        if 'text_overlays' not in columns:
            print("Adding text_overlays column...")
            db.session.execute(text("ALTER TABLE campaigns ADD COLUMN text_overlays JSONB"))
            print("✅ text_overlays column added")

        if 'overlay_instructions' not in columns:
            print("Adding overlay_instructions column...")
            db.session.execute(text("ALTER TABLE campaigns ADD COLUMN overlay_instructions JSONB"))
            print("✅ overlay_instructions column added")

        if 'video_with_text_url' not in columns:
            print("Adding video_with_text_url column...")
            db.session.execute(text("ALTER TABLE campaigns ADD COLUMN video_with_text_url TEXT"))
            print("✅ video_with_text_url column added")

        db.session.commit()
        print("✅ Campaign text overlay fields migration completed!")
        return True

    except Exception as e:
        db.session.rollback()
        print(f"❌ Migration failed: {e}")
        return False

if __name__ == "__main__":
    # For testing purposes
    from app import create_app
    app = create_app()
    with app.app_context():
        migrate_campaign_fields()