#!/usr/bin/env python3
"""
Script to add case limit to free plan features
"""

from app import app
from models import db, SubscriptionPlan
import json

def update_free_plan_case_limit():
    """Add case limit to free plan features"""

    with app.app_context():
        # Find the free plan
        free_plan = SubscriptionPlan.query.filter_by(name='free').first()

        if not free_plan:
            print("❌ Free plan not found")
            return False

        print(f"✅ Found free plan: {free_plan.display_name}")
        print(f"📊 Current features: {json.dumps(free_plan.features, indent=2)}")

        # Update features to include case limit
        if not free_plan.features:
            free_plan.features = {}

        free_plan.features['max_cases'] = 5
        free_plan.features['case_management'] = True  # Allow case management but with limits

        # Ensure monthly_analyses is set
        if 'monthly_analyses' not in free_plan.features:
            free_plan.features['monthly_analyses'] = 5

        # Force update to ensure JSON column is properly marked as modified
        from sqlalchemy.orm.attributes import flag_modified
        flag_modified(free_plan, 'features')

        try:
            db.session.commit()
            print(f"\n✅ Updated free plan features!")
            print(f"📊 New features: {json.dumps(free_plan.features, indent=2)}")
            return True
        except Exception as e:
            db.session.rollback()
            print(f"❌ Error updating plan: {str(e)}")
            return False

if __name__ == "__main__":
    update_free_plan_case_limit()