#!/usr/bin/env python3
"""Generate missing API keys for users who don't have one."""

import secrets
import string
from app.database import SessionLocal
from app.models import License

def generate_api_key():
    """Generate a secure random API key."""
    alphabet = string.ascii_letters + string.digits
    return 'ws_' + ''.join(secrets.choice(alphabet) for _ in range(40))

session = SessionLocal()
try:
    # Find users without API keys
    users_without_keys = session.query(License).filter(
        (License.api_key == None) | (License.api_key == '')
    ).all()
    
    print(f"Found {len(users_without_keys)} users without API keys")
    
    for user in users_without_keys:
        # Generate unique API key
        while True:
            new_key = generate_api_key()
            # Check if key already exists
            existing = session.query(License).filter(License.api_key == new_key).first()
            if not existing:
                break
        
        user.api_key = new_key
        print(f"✅ Generated API key for {user.email}: {new_key[:20]}...")
    
    session.commit()
    print(f"\n✅ Successfully generated {len(users_without_keys)} API keys!")
    
except Exception as e:
    session.rollback()
    print(f"❌ Error: {e}")
    raise
finally:
    session.close()
