#!/usr/bin/env python3 """ Generate 100+ games to test ELO rating calculations """ import sqlite3 import random from datetime import datetime, timedelta DB_PATH = "prisma/prisma/dev.db" def get_players(): """Get all players from the database""" conn = sqlite3.connect(DB_PATH) cursor = conn.cursor() cursor.execute("SELECT id, name, currentElo FROM players") players = cursor.fetchall() conn.close() return players def generate_game(players, game_num, base_date): """Generate a single game with random players and scores""" # Randomly select 4 different players selected_players = random.sample(players, 4) p1, p2, p3, p4 = selected_players # Randomly assign teams (Team 1 vs Team 2) team1_p1 = p1 team1_p2 = p2 team2_p1 = p3 team2_p2 = p4 # Generate realistic scores (Euchre games typically 10 points max) # Team 1 wins 60% of the time for variety team1_wins = random.random() < 0.6 if team1_wins: # Team 1 wins - generate scores team1_score = random.randint(10, 15) team2_score = random.randint(0, 9) else: # Team 2 wins - generate scores team2_score = random.randint(10, 15) team1_score = random.randint(0, 9) # Generate random date in the past 30 days days_ago = random.randint(0, 30) game_date = base_date - timedelta( days=days_ago, hours=random.randint(0, 23), minutes=random.randint(0, 59) ) return { "team1P1Id": team1_p1[0], "team1P2Id": team1_p2[0], "team2P1Id": team2_p1[0], "team2P2Id": team2_p2[0], "team1Score": team1_score, "team2Score": team2_score, "playedAt": game_date.isoformat() + "Z", "status": "completed", "eventId": None, } def insert_games(games): """Insert games into the database""" conn = sqlite3.connect(DB_PATH) cursor = conn.cursor() for game in games: cursor.execute( """ INSERT INTO matches (team1P1Id, team1P2Id, team2P1Id, team2P2Id, team1Score, team2Score, playedAt, status, eventId, createdAt, updatedAt) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) """, ( game["team1P1Id"], game["team1P2Id"], game["team2P1Id"], game["team2P2Id"], game["team1Score"], game["team2Score"], game["playedAt"], game["status"], game["eventId"], datetime.now().isoformat() + "Z", datetime.now().isoformat() + "Z", ), ) conn.commit() conn.close() def main(): print("Generating 150 games to test ELO ratings...") print("=" * 60) players = get_players() print(f"Found {len(players)} players in database") # Generate 150 games num_games = 150 base_date = datetime.now() games = [] for i in range(num_games): game = generate_game(players, i, base_date) games.append(game) print(f"Generated {len(games)} games") # Insert games into database print("Inserting games into database...") insert_games(games) print("Games inserted successfully!") # Show sample games print("\nSample games:") print("-" * 80) for i, game in enumerate(games[:3]): print( f"Game {i + 1}: Team 1 ({game['team1Score']}) vs Team 2 ({game['team2Score']})" ) print(f" Team 1: Player {game['team1P1Id']} + Player {game['team1P2Id']}") print(f" Team 2: Player {game['team2P1Id']} + Player {game['team2P2Id']}") print(f" Date: {game['playedAt']}") print() print("=" * 60) print(f"Total games generated: {num_games}") print("Now check the ELO ratings by running the application!") if __name__ == "__main__": main()