Skip to content

Commit 498c02c

Browse files
committed
new endpoint in ck_playerrank;notes;models;query
1 parent 48711ad commit 498c02c

2 files changed

Lines changed: 70 additions & 20 deletions

File tree

surftimer/ck_playerrank.py

Lines changed: 69 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@
99

1010
class UpdatePlayerPoints(BaseModel):
1111
name: str
12-
points: str
12+
points: int
1313
wrpoints: int
1414
wrbpoints: int
1515
wrcppoints: int
1616
top10points: int
1717
groupspoints: int
1818
mappoints: int
1919
bonuspoints: int
20-
finishedmapspro: str
20+
finishedmapspro: int
2121
finishedbonuses: int
2222
finishedstages: int
2323
wrs: int
@@ -32,6 +32,16 @@ class UpdatePlayerPoints(BaseModel):
3232
style: int
3333

3434

35+
class InsertPlayerModel(BaseModel):
36+
steamid32: str
37+
steamid64: int
38+
name: str
39+
country: str
40+
countryCode: str
41+
continentCode: str
42+
joined: int
43+
style: int
44+
3545
router = APIRouter()
3646

3747

@@ -44,26 +54,20 @@ class UpdatePlayerPoints(BaseModel):
4454
async def insertPlayerRank(
4555
request: Request,
4656
response: Response,
47-
steamid32,
48-
steamid64,
49-
name,
50-
country,
51-
countryCode,
52-
continentCode,
53-
joined,
54-
style,
57+
data: InsertPlayerModel,
5558
):
59+
"""```char sql_insertPlayerRank[] = ....```"""
5660
tic = time.perf_counter()
5761

5862
sql = surftimer.queries.sql_insertPlayerRank.format(
59-
steamid32,
60-
steamid64,
61-
name,
62-
country,
63-
countryCode,
64-
continentCode,
65-
joined,
66-
style,
63+
data.steamid32,
64+
data.steamid64,
65+
data.name,
66+
data.country,
67+
data.countryCode,
68+
data.continentCode,
69+
data.joined,
70+
data.style,
6771
)
6872
xquery = insertQuery(sql)
6973

@@ -94,6 +98,7 @@ async def updatePlayerRankPoints(
9498
response: Response,
9599
data: UpdatePlayerPoints,
96100
):
101+
"""```char sql_updatePlayerRankPoints[] = ....```"""
97102
tic = time.perf_counter()
98103

99104
sql = surftimer.queries.sql_updatePlayerRankPoints.format(
@@ -145,6 +150,7 @@ async def updatePlayerRankPoints2(
145150
response: Response,
146151
data: UpdatePlayerPoints,
147152
):
153+
"""```char sql_updatePlayerRankPoints2[] = ....```"""
148154
tic = time.perf_counter()
149155

150156
sql = surftimer.queries.sql_updatePlayerRankPoints2.format(
@@ -202,6 +208,7 @@ async def updatePlayerRank(
202208
steamid32: str,
203209
style: str,
204210
):
211+
"""```char sql_updatePlayerRank[] = ....```"""
205212
tic = time.perf_counter()
206213

207214
sql = surftimer.queries.sql_updatePlayerRank.format(
@@ -279,6 +286,7 @@ async def updateLastSeen(
279286
response: Response,
280287
steamid32: str,
281288
):
289+
"""```char sql_UpdateLastSeenMySQL[] = ....```"""
282290
tic = time.perf_counter()
283291

284292
sql = surftimer.queries.sql_UpdateLastSeenMySQL.format(steamid32)
@@ -351,7 +359,8 @@ async def selectRankedPlayersRank(
351359
style: int,
352360
steamid32: str,
353361
):
354-
"""`char[] sql_selectRankedPlayersRank = ....`"""
362+
"""`char[] sql_selectRankedPlayersRank = ....`\n
363+
Done 2/4 query executions in ST code for this T_T"""
355364
tic = time.perf_counter()
356365

357366
# Check if data is cached in Redis
@@ -540,3 +549,44 @@ async def selectPlayerProfile(
540549
set_cache(cache_key, xquery)
541550

542551
return xquery
552+
553+
@router.get(
554+
"/surftimer/selectUnknownPlayerProfile",
555+
name="Select Unknown Player Profile",
556+
tags=["ck_playerrank"],
557+
)
558+
async def selectUnknownPlayerProfile(
559+
request: Request,
560+
response: Response,
561+
name: str,
562+
):
563+
"""`SELECT steamid, name, points FROM ck_playerrank WHERE name LIKE '%c%s%c' ORDER BY points DESC LIMIT 0, 1;`"""
564+
tic = time.perf_counter()
565+
566+
# Check if data is cached in Redis
567+
cache_key = f"selectUnknownPlayerProfile:{name}"
568+
cached_data = get_cache(cache_key)
569+
if cached_data is not None:
570+
print(f"[Redis] Loaded '{cache_key}' ({time.perf_counter() - tic:0.4f}s)")
571+
return JSONResponse(
572+
status_code=status.HTTP_200_OK, content=json.loads(cached_data)
573+
)
574+
575+
xquery = selectQuery(
576+
surftimer.queries.sql_selectPlayerRankUnknown.format(name)
577+
)
578+
579+
if xquery:
580+
xquery = xquery.pop()
581+
else:
582+
xquery = {"name": name}
583+
return JSONResponse(status_code=status.HTTP_404_NOT_FOUND, content=xquery)
584+
585+
toc = time.perf_counter()
586+
587+
print(f"Execution time {toc - tic:0.4f}")
588+
589+
# Cache the data in Redis
590+
set_cache(cache_key, xquery)
591+
592+
return xquery

surftimer/queries.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
sql_UpdateLastSeenMySQL = (
6363
"UPDATE ck_playerrank SET lastseen = UNIX_TIMESTAMP() where steamid = '{}';"
6464
)
65-
65+
sql_selectPlayerRankUnknown = "SELECT `steamid`, `name`, `points` FROM `ck_playerrank` WHERE `name` LIKE '%{}%' ORDER BY `points` DESC LIMIT 0, 1;"
6666
sql_selectTopPlayers = "SELECT name, points, finishedmapspro, steamid FROM ck_playerrank WHERE style = {} ORDER BY points DESC LIMIT 100"
6767
sql_selectRankedPlayer = "SELECT steamid, name, points, finishedmapspro, country, lastseen, timealive, timespec, connections, readchangelog, style, countryCode, continentCode from ck_playerrank where steamid='{}';"
6868
sql_selectRankedPlayersRank = "SELECT name FROM ck_playerrank WHERE style = {} AND points >= (SELECT points FROM ck_playerrank WHERE steamid = '{}' AND style = {}) ORDER BY points;"

0 commit comments

Comments
 (0)