Skip to content

Commit

Permalink
Merge pull request #172 from IUrreta/main
Browse files Browse the repository at this point in the history
Main
  • Loading branch information
IUrreta authored Dec 20, 2023
2 parents 6dc80f2 + 303bc7c commit ff0bd4a
Show file tree
Hide file tree
Showing 11 changed files with 531 additions and 68 deletions.
15 changes: 10 additions & 5 deletions back/back.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ async def handle_command(message):
global cursor
global log
argument = ""
logtxt = str(message)
if type == "connect":
log = open("../log.txt", 'a', encoding='utf-8')
argument = type
Expand Down Expand Up @@ -176,6 +177,7 @@ async def handle_command(message):
results = fetch_seasonResults(message["year"])
results.insert(0, fetch_events_from(message["year"]))
results.insert(0, "Results fetched")
results.append(fetch_teamsStadings(message["year"]))
data_json_results = json.dumps(results)
#argument = json.dumps(message)
await send_message_to_client(data_json_results)
Expand Down Expand Up @@ -262,7 +264,7 @@ async def handle_command(message):
info_json = json.dumps(info)
await send_message_to_client(info_json)

log.write("[" + str(datetime.now()) + "] INFO: Command executed: " + argument + "\n")
log.write("[" + str(datetime.now()) + "] INFO: Command executed: " + logtxt + "\n")
log.flush()


Expand Down Expand Up @@ -313,6 +315,10 @@ def fetch_driverNumebrs():
numList.append(num[0])
return numList

def fetch_teamsStadings(year):
res = cursor.execute("SELECT TeamID, Position FROM Races_TeamStandings WHERE SeasonID = " + str(year) + " AND RaceFormula = 1").fetchall()
return res

def fetch_driverRetirement(driverID):
day_season = cursor.execute("SELECT Day, CurrentSeason FROM Player_State").fetchone()
retirement_age = cursor.execute("SELECT RetirementAge FROM Staff_GameData WHERE StaffID = " + str(driverID)).fetchone()
Expand Down Expand Up @@ -359,8 +365,7 @@ def fetch_driverContract(id):
return details

def fetch_staff():
staff = cursor.execute("SELECT DISTINCT bas.FirstName, bas.LastName, bas.StaffID, con.TeamID, gam.StaffType FROM Staff_GameData gam JOIN Staff_BasicData bas ON gam.StaffID = bas.StaffID LEFT JOIN Staff_Contracts con ON bas.StaffiD = con.StaffID WHERE gam.StaffType != 0 AND (con.ContractType = 0 OR con.ContractType IS NULL OR con.ContractType = 3) GROUP BY bas.StaffID").fetchall()

staff = cursor.execute("SELECT DISTINCT bas.FirstName, bas.LastName, bas.StaffID, con.TeamID, gam.StaffType FROM Staff_GameData gam JOIN Staff_BasicData bas ON gam.StaffID = bas.StaffID LEFT JOIN Staff_Contracts con ON bas.StaffiD = con.StaffID WHERE gam.StaffType != 0 AND (con.ContractType = 0 OR con.ContractType IS NULL OR con.ContractType = 3) GROUP BY bas.StaffID ORDER BY CASE WHEN con.TeamID IS NULL THEN 1 ELSE 0 END, con.TeamID").fetchall()
formatted_tuples = []

for tupla in staff:
Expand Down Expand Up @@ -480,7 +485,7 @@ def format_seasonResults(results, driverName, teamID, driverID, year, sprints):
return formatred_results

def fetch_drivers_per_year(year):
drivers = cursor.execute('SELECT bas.FirstName, bas.LastName, res.DriverID, res.TeamID FROM Staff_BasicData bas JOIN Races_Results res ON bas.StaffID = res.DriverID WHERE Season = ' + str(year) + " GROUP BY bas.FirstName, bas.LastName, bas.StaffID, res.TeamID").fetchall()
drivers = cursor.execute('SELECT bas.FirstName, bas.LastName, res.DriverID, res.TeamID FROM Staff_BasicData bas JOIN Races_Results res ON bas.StaffID = res.DriverID WHERE Season = ' + str(year) + " GROUP BY bas.FirstName, bas.LastName, bas.StaffID, res.TeamID ORDER BY res.TeamID").fetchall()
formatted_tuples = []
for tupla in drivers:
result = format_names_simple(tupla)
Expand All @@ -489,7 +494,7 @@ def fetch_drivers_per_year(year):

def fetch_info():

drivers = cursor.execute('SELECT DISTINCT bas.FirstName, bas.LastName, bas.StaffID, con.TeamID, con.PosInTeam, MIN(con.ContractType) AS MinContractType, gam.Retired FROM Staff_BasicData bas JOIN Staff_DriverData dri ON bas.StaffID = dri.StaffID LEFT JOIN Staff_Contracts con ON dri.StaffID = con.StaffID LEFT JOIN Staff_GameData gam ON dri.StaffID = gam.StaffID GROUP BY bas.StaffID;').fetchall()
drivers = cursor.execute('SELECT DISTINCT bas.FirstName, bas.LastName, bas.StaffID, con.TeamID, con.PosInTeam, MIN(con.ContractType) AS MinContractType, gam.Retired FROM Staff_BasicData bas JOIN Staff_DriverData dri ON bas.StaffID = dri.StaffID LEFT JOIN Staff_Contracts con ON dri.StaffID = con.StaffID LEFT JOIN Staff_GameData gam ON dri.StaffID = gam.StaffID GROUP BY bas.StaffID ORDER BY CASE WHEN con.TeamID IS NULL THEN 1 ELSE 0 END, con.TeamID;').fetchall()
formatted_tuples = []
for tupla in drivers:
result = format_names_get_stats(tupla, "driver")
Expand Down
68 changes: 64 additions & 4 deletions back/scripts/head2head_23.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import sqlite3
import numpy as np
def fetch_Head2Head(driver1ID, driver2ID, year):
conn = sqlite3.connect("../result/main.db")
cursor = conn.cursor()
Expand All @@ -20,6 +21,14 @@ def fetch_Head2Head(driver1ID, driver2ID, year):
d2_BestRace = 21
d1_BestQauli = 21
d2_BestQauli = 21
d1_avgPace = []
d2_avgPace = []
d1_avgQPace = []
d2_avgQPace = []
d1_RPositions = []
d2_RPositions = []
d1_QPositions = []
d2_QPositions = []
for race in tuple_races:
d1_QStage = cursor.execute("SELECT MAX(QualifyingStage) FROM Races_QualifyingResults WHERE RaceFormula = 1 AND RaceID =" + str(race) + " AND SeasonID = " + str(year[0]) + " AND DriverID = " + str(driver1ID[0])).fetchone()
d2_QStage = cursor.execute("SELECT MAX(QualifyingStage) FROM Races_QualifyingResults WHERE RaceFormula = 1 AND RaceID =" + str(race) + " AND SeasonID = " + str(year[0]) + " AND DriverID = " + str(driver2ID[0])).fetchone()
Expand All @@ -34,6 +43,14 @@ def fetch_Head2Head(driver1ID, driver2ID, year):
qualiH2H[0]+= 1
elif(d1_QRes[0] > d2_QRes[0]):
qualiH2H[1]+= 1
d1_QPositions.append(d1_QRes[0])
d2_QPositions.append(d2_QRes[0])
minQ = d1_QStage[0] if d1_QStage[0] <= d2_QStage[0] else d2_QStage[0]
d1_qLap = cursor.execute("SELECT FastestLap FROM Races_QualifyingResults WHERE RaceFormula = 1 AND RaceID =" + str(race) + " AND SeasonID = " + str(year[0]) + " AND DriverID = " + str(driver1ID[0]) + " AND QualifyingStage = " + str(minQ)).fetchone()
d2_qLap = cursor.execute("SELECT FastestLap FROM Races_QualifyingResults WHERE RaceFormula = 1 AND RaceID =" + str(race) + " AND SeasonID = " + str(year[0]) + " AND DriverID = " + str(driver2ID[0]) + " AND QualifyingStage = " + str(minQ)).fetchone()
if(d1_qLap[0] != 0) and (d2_qLap[0] != 0):
d1_avgQPace.append(d1_qLap[0])
d2_avgQPace.append(d2_qLap[0])
if(d1_QStage[0] == 3 and d1_QRes[0] == 1):
polesH2H[0] += 1
if(d2_QStage[0] == 3 and d2_QRes[0] == 1):
Expand All @@ -60,12 +77,21 @@ def fetch_Head2Head(driver1ID, driver2ID, year):
d1_BestRace = d1_RRes[0]
if(d2_RRes[0] < d2_BestRace):
d2_BestRace = d2_RRes[0]
d1_RPositions.append(d1_RRes[0])
d2_RPositions.append(d2_RRes[0])
d1_RDNF = cursor.execute("SELECT DNF FROM Races_Results WHERE RaceID =" + str(race) + " AND Season = " + str(year[0]) + " AND DriverID = " + str(driver1ID[0])).fetchone()
d2_RDNF = cursor.execute("SELECT DNF FROM Races_Results WHERE RaceID =" + str(race) + " AND Season = " + str(year[0]) + " AND DriverID = " + str(driver2ID[0])).fetchone()
if(d1_RDNF[0] == 1):
dnfH2H[0] += 1
if(d2_RDNF[0] == 1):
dnfH2H[1] += 1
if (d1_RDNF[0] != 1) and (d2_RDNF[0] != 1):
d1_raceTotal = cursor.execute("SELECT Time FROM Races_Results WHERE RaceID =" + str(race) + " AND Season = " + str(year[0]) + " AND DriverID = " + str(driver1ID[0])).fetchone()
d2_raceTotal = cursor.execute("SELECT Time FROM Races_Results WHERE RaceID =" + str(race) + " AND Season = " + str(year[0]) + " AND DriverID = " + str(driver2ID[0])).fetchone()
d1_raceLaps = cursor.execute("SELECT Laps FROM Races_Results WHERE RaceID =" + str(race) + " AND Season = " + str(year[0]) + " AND DriverID = " + str(driver1ID[0])).fetchone()
d2_raceLaps = cursor.execute("SELECT Laps FROM Races_Results WHERE RaceID =" + str(race) + " AND Season = " + str(year[0]) + " AND DriverID = " + str(driver2ID[0])).fetchone()
d1_avgPace.append(round(d1_raceTotal[0] / d1_raceLaps[0], 3))
d2_avgPace.append(round(d2_raceTotal[0] / d2_raceLaps[0], 3))
d1_SRes = cursor.execute("SELECT FinishingPos FROM Races_Sprintresults WHERE RaceID =" + str(race) + " AND SeasonID = " + str(year[0]) + " AND DriverID = " + str(driver1ID[0])).fetchone()
d2_SRes = cursor.execute("SELECT FinishingPos FROM Races_Sprintresults WHERE RaceID =" + str(race) + " AND SeasonID = " + str(year[0]) + " AND DriverID = " + str(driver2ID[0])).fetchone()
if(d1_SRes != None):
Expand All @@ -74,16 +100,27 @@ def fetch_Head2Head(driver1ID, driver2ID, year):
if(d2_SRes != None):
if(d2_SRes[0] == 1):
sprintWinsH2H[1] += 1

d1_Pts = cursor.execute("SELECT Points FROM Races_DriverStandings WHERE RaceFormula = 1 AND SeasonID = " + str(year[0]) + " AND DriverID = " + str(driver1ID[0])).fetchone()
d2_Pts = cursor.execute("SELECT Points FROM Races_DriverStandings WHERE RaceFormula = 1 AND SeasonID = " + str(year[0]) + " AND DriverID = " + str(driver2ID[0])).fetchone()
pointsH2H[0] = d1_Pts[0]
pointsH2H[1] = d2_Pts[0]
bestRace[0] = d1_BestRace
bestRace[1] = d2_BestRace
bestQuali[0] = d1_BestQauli
bestQuali[1] = d2_BestQauli
resultList = [tuple(raceH2H),tuple(qualiH2H),tuple(pointsH2H),tuple(podiumsH2H),tuple(bestRace),tuple(bestQuali),tuple(dnfH2H), tuple(winsH2H), tuple(polesH2H), tuple(sprintWinsH2H)]
bestQuali[1] = d2_BestQauli
rDifferences = [d2 - d1 for d1, d2 in zip(d1_avgPace, d2_avgPace)]
qDifferences = [d2 - d1 for d1, d2 in zip(d1_avgQPace, d2_avgQPace)]
avg_racediff = round(np.mean(rDifferences), 3)
avg_qualidiff = round(np.mean(qDifferences), 3)
meanRd1 = round(np.mean(d1_RPositions), 1)
meanRd2 = round(np.mean(d2_RPositions), 1)
medianRd1 = np.median(d1_RPositions)
medianRd2 = np.median(d2_RPositions)
meanQd1 = round(np.mean(d1_QPositions), 1)
meanQd2 = round(np.mean(d2_QPositions), 1)
medianQd1 = np.median(d1_QPositions)
medianQd2 = np.median(d2_QPositions)
resultList = [tuple(raceH2H),tuple(qualiH2H),tuple(pointsH2H),tuple(podiumsH2H),tuple(bestRace),tuple(bestQuali),tuple(dnfH2H), tuple(winsH2H), tuple(polesH2H), tuple(sprintWinsH2H), (-avg_racediff, avg_racediff), (-avg_qualidiff, avg_qualidiff), (meanRd1, meanRd2), (medianRd1, medianRd2), (meanQd1, meanQd2), (medianQd1, medianQd2)]

conn.commit()
conn.close()
Expand All @@ -109,6 +146,10 @@ def fetch_Head2Head_team(teamID1, teamID2, year):
d2_BestRace = 21
d1_BestQauli = 21
d2_BestQauli = 21
d1_avgPace = []
d2_avgPace = []
d1_avgQPace = []
d2_avgQPace = []
for gp in races:
race = gp[0]
drivers1 = cursor.execute("SELECT DISTINCT DriverID FROM Races_QualifyingResults WHERE RaceFormula = 1 AND RaceID = " + str(race) + " AND TeamID = " + str(teamID1[0])).fetchall()
Expand All @@ -128,6 +169,12 @@ def fetch_Head2Head_team(teamID1, teamID2, year):
qualiH2H[0]+= 1
elif(d1_QRes[0] > d2_QRes[0]):
qualiH2H[1]+= 1
minQ = d1_QStage[0] if d1_QStage[0] <= d2_QStage[0] else d2_QStage[0]
d1_qLap = cursor.execute("SELECT FastestLap FROM Races_QualifyingResults WHERE RaceFormula = 1 AND RaceID =" + str(race) + " AND SeasonID = " + str(year[0]) + " AND DriverID IN " + str(drivers1) + " AND QualifyingStage = " + str(minQ)).fetchone()
d2_qLap = cursor.execute("SELECT FastestLap FROM Races_QualifyingResults WHERE RaceFormula = 1 AND RaceID =" + str(race) + " AND SeasonID = " + str(year[0]) + " AND DriverID IN " + str(drivers2) + " AND QualifyingStage = " + str(minQ)).fetchone()
if(d1_qLap[0] != 0) and (d2_qLap[0] != 0):
d1_avgQPace.append(d1_qLap[0])
d2_avgQPace.append(d2_qLap[0])
if(d1_QStage[0] == 3 and d1_QRes[0] == 1):
polesH2H[0] += 1
if(d2_QStage[0] == 3 and d2_QRes[0] == 1):
Expand Down Expand Up @@ -160,6 +207,13 @@ def fetch_Head2Head_team(teamID1, teamID2, year):
dnfH2H[0] += d1_RDNF[0]
if(d2_RDNF[0] > 0):
dnfH2H[1] += d2_RDNF[0]
if (d1_RDNF[0] == 0) and (d2_RDNF[0] == 0):
d1_raceTotal = cursor.execute("SELECT AVG(Time) FROM Races_Results WHERE RaceID =" + str(race) + " AND Season = " + str(year[0]) + " AND DriverID IN " + str(drivers1)).fetchone()
d2_raceTotal = cursor.execute("SELECT AVG(Time) FROM Races_Results WHERE RaceID =" + str(race) + " AND Season = " + str(year[0]) + " AND DriverID IN " + str(drivers2)).fetchone()
d1_raceLaps = cursor.execute("SELECT AVG(Laps) FROM Races_Results WHERE RaceID =" + str(race) + " AND Season = " + str(year[0]) + " AND DriverID IN " + str(drivers1)).fetchone()
d2_raceLaps = cursor.execute("SELECT AVG(Laps) FROM Races_Results WHERE RaceID =" + str(race) + " AND Season = " + str(year[0]) + " AND DriverID IN " + str(drivers2)).fetchone()
d1_avgPace.append(round(d1_raceTotal[0] / d1_raceLaps[0], 3))
d2_avgPace.append(round(d2_raceTotal[0] / d2_raceLaps[0], 3))
d1_SRes = cursor.execute("SELECT MIN(FinishingPos) FROM Races_Sprintresults WHERE RaceID =" + str(race) + " AND SeasonID = " + str(year[0]) + " AND DriverID IN " + str(drivers1)).fetchone()
d2_SRes = cursor.execute("SELECT MIN(FinishingPos) FROM Races_Sprintresults WHERE RaceID =" + str(race) + " AND SeasonID = " + str(year[0]) + " AND DriverID IN " + str(drivers2)).fetchone()
if(d1_SRes != None):
Expand All @@ -177,7 +231,13 @@ def fetch_Head2Head_team(teamID1, teamID2, year):
bestRace[1] = d2_BestRace
bestQuali[0] = d1_BestQauli
bestQuali[1] = d2_BestQauli
resultList = [tuple(raceH2H),tuple(qualiH2H),tuple(pointsH2H),tuple(podiumsH2H),tuple(bestRace),tuple(bestQuali),tuple(dnfH2H), tuple(winsH2H), tuple(polesH2H), tuple(sprintWinsH2H)]

rDifferences = [d2 - d1 for d1, d2 in zip(d1_avgPace, d2_avgPace)]
qDifferences = [d2 - d1 for d1, d2 in zip(d1_avgQPace, d2_avgQPace)]
avg_racediff = round(np.mean(rDifferences), 3)
avg_qualidiff = round(np.mean(qDifferences), 3)

resultList = [tuple(raceH2H),tuple(qualiH2H),tuple(pointsH2H),tuple(podiumsH2H),tuple(bestRace),tuple(bestQuali),tuple(dnfH2H), tuple(winsH2H), tuple(polesH2H), tuple(sprintWinsH2H), (-avg_racediff, avg_racediff), (-avg_qualidiff, avg_qualidiff)]

conn.commit()
conn.close()
Expand Down
Loading

0 comments on commit ff0bd4a

Please sign in to comment.