"""
Seed script to create demo ratings for shows and performances.
Run with: python seed_ratings.py
"""
from sqlmodel import Session, create_engine, select
from database import DATABASE_URL
from models import Rating, Show, Performance, User
import random

def seed_ratings():
    engine = create_engine(DATABASE_URL)
    
    with Session(engine) as session:
        # Get first user (or admin) to attribute ratings to
        user = session.exec(select(User).limit(1)).first()
        if not user:
            print("No users found. Please create a user first.")
            return
            
        # Get some shows
        shows = session.exec(select(Show).limit(20)).all()
        # Get some performances
        performances = session.exec(select(Performance).limit(50)).all()
        
        created_count = 0
        
        # Seed show ratings (7-10 range for positive feel)
        for show in shows:
            # Check if rating already exists
            existing = session.exec(
                select(Rating).where(Rating.show_id == show.id, Rating.user_id == user.id)
            ).first()
            if existing:
                continue
                
            rating = Rating(
                user_id=user.id,
                show_id=show.id,
                score=random.randint(7, 10)
            )
            session.add(rating)
            created_count += 1
        
        # Seed performance ratings
        for perf in performances:
            existing = session.exec(
                select(Rating).where(Rating.performance_id == perf.id, Rating.user_id == user.id)
            ).first()
            if existing:
                continue
                
            rating = Rating(
                user_id=user.id,
                performance_id=perf.id,
                score=random.randint(6, 10)
            )
            session.add(rating)
            created_count += 1
        
        session.commit()
        print(f"Created {created_count} demo ratings!")

if __name__ == "__main__":
    seed_ratings()
