Skip to content

Commit 1d12739

Browse files
committed
feat: add player top time retrieval
1 parent 9e4e4a1 commit 1d12739

File tree

6 files changed

+529
-13
lines changed

6 files changed

+529
-13
lines changed

services/map-service/api/v3/intnl/client.gen.go

Lines changed: 139 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

services/map-service/api/v3/intnl/openapi.yaml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,35 @@ paths:
533533
description: Save states successfully deleted
534534
'404':
535535
$ref: '#/components/responses/MapPlayerNotFound'
536+
/map-players/{playerId}/topTimes:
537+
get:
538+
operationId: getPlayerTopTimes
539+
tags: [ players ]
540+
summary: Get a player's top times sorted by leaderboard placement
541+
description: Returns the player's best times across all completed maps, sorted by their rank on each map's leaderboard (best placements first).
542+
parameters:
543+
- name: playerId
544+
in: path
545+
required: true
546+
schema: { type: string }
547+
- name: page
548+
in: query
549+
required: true
550+
schema:
551+
type: integer
552+
format: int32
553+
minimum: 1
554+
- name: pageSize
555+
in: query
556+
required: true
557+
schema:
558+
type: integer
559+
format: int32
560+
minimum: 1
561+
maximum: 100
562+
responses:
563+
'200':
564+
$ref: '#/components/responses/GetPlayerTopTimes'
536565

537566
/hdb/search:
538567
get:
@@ -780,6 +809,19 @@ components:
780809
score: { type: integer }
781810
rank: { type: integer }
782811

812+
PlayerTopTimesEntry:
813+
type: object
814+
required: [ mapId, publishedId, mapName, completionTime, rank ]
815+
properties:
816+
mapId: { type: string }
817+
publishedId: { type: integer }
818+
mapName: { type: string }
819+
completionTime:
820+
type: integer
821+
description: Time to complete the map in milliseconds
822+
rank:
823+
type: integer
824+
description: Player's rank on this map's leaderboard (1-indexed)
783825
MapPlayerData:
784826
type: object
785827
required: [ id, mapSlots ]
@@ -1031,3 +1073,20 @@ components:
10311073
results:
10321074
type: array
10331075
items: { $ref: '#/components/schemas/MapHistoryEntry' }
1076+
GetPlayerTopTimes:
1077+
description: Player's top times sorted by leaderboard placement.
1078+
content:
1079+
application/json:
1080+
schema:
1081+
type: object
1082+
required: [ page, totalItems, items ]
1083+
properties:
1084+
page:
1085+
type: integer
1086+
format: int32
1087+
totalItems:
1088+
type: integer
1089+
format: int64
1090+
items:
1091+
type: array
1092+
items: { $ref: '#/components/schemas/PlayerTopTimesEntry' }

0 commit comments

Comments
 (0)