nextjs-rewrite (#5)
Reviewed-on: #5 Co-authored-by: David Gwilliam <dhgwilliam@gmail.com> Co-committed-by: David Gwilliam <dhgwilliam@gmail.com>
This commit was merged in pull request #5.
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
#!/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()
|
||||
Reference in New Issue
Block a user