aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorNidboj132 <lol2s@vp.plm>2023-09-05 18:23:11 +0200
committerNidboj132 <lol2s@vp.plm>2023-09-05 18:23:11 +0200
commit3869cb67351ccf3bc45b076f31afdc7133292c39 (patch)
treedc03341e147dde0964bf6be84b14e13424c647b7 /docs
parentadded graph and fixed some css (diff)
parentfix: create map summary, why the fuck does this have to be a pointer integer?? (diff)
downloadlphub-3869cb67351ccf3bc45b076f31afdc7133292c39.tar.gz
lphub-3869cb67351ccf3bc45b076f31afdc7133292c39.tar.bz2
lphub-3869cb67351ccf3bc45b076f31afdc7133292c39.zip
Merge branch 'main' of https://github.com/pektezol/LeastPortalsHub
Former-commit-id: 221385f463b7f5b0fc43a093b2c7c46e68d46d68
Diffstat (limited to '')
-rw-r--r--docs/docs.go549
-rw-r--r--docs/swagger.json549
-rw-r--r--docs/swagger.yaml383
3 files changed, 1050 insertions, 431 deletions
diff --git a/docs/docs.go b/docs/docs.go
index 423afad..4129343 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -50,7 +50,7 @@ const docTemplate = `{
50 "type": "object", 50 "type": "object",
51 "properties": { 51 "properties": {
52 "data": { 52 "data": {
53 "$ref": "#/definitions/models.ChapterMapsResponse" 53 "$ref": "#/definitions/handlers.ChapterMapsResponse"
54 } 54 }
55 } 55 }
56 } 56 }
@@ -173,7 +173,7 @@ const docTemplate = `{
173 "type": "object", 173 "type": "object",
174 "properties": { 174 "properties": {
175 "data": { 175 "data": {
176 "$ref": "#/definitions/models.ChaptersResponse" 176 "$ref": "#/definitions/handlers.ChaptersResponse"
177 } 177 }
178 } 178 }
179 } 179 }
@@ -213,7 +213,90 @@ const docTemplate = `{
213 "type": "object", 213 "type": "object",
214 "properties": { 214 "properties": {
215 "data": { 215 "data": {
216 "$ref": "#/definitions/models.LoginResponse" 216 "$ref": "#/definitions/handlers.LoginResponse"
217 }
218 }
219 }
220 ]
221 }
222 },
223 "400": {
224 "description": "Bad Request",
225 "schema": {
226 "$ref": "#/definitions/models.Response"
227 }
228 }
229 }
230 }
231 },
232 "/logs/mod": {
233 "get": {
234 "description": "Get mod logs.",
235 "produces": [
236 "application/json"
237 ],
238 "tags": [
239 "logs"
240 ],
241 "parameters": [
242 {
243 "type": "string",
244 "description": "JWT Token",
245 "name": "Authorization",
246 "in": "header",
247 "required": true
248 }
249 ],
250 "responses": {
251 "200": {
252 "description": "OK",
253 "schema": {
254 "allOf": [
255 {
256 "$ref": "#/definitions/models.Response"
257 },
258 {
259 "type": "object",
260 "properties": {
261 "data": {
262 "$ref": "#/definitions/handlers.LogsResponse"
263 }
264 }
265 }
266 ]
267 }
268 },
269 "400": {
270 "description": "Bad Request",
271 "schema": {
272 "$ref": "#/definitions/models.Response"
273 }
274 }
275 }
276 }
277 },
278 "/logs/score": {
279 "get": {
280 "description": "Get score logs of every player.",
281 "produces": [
282 "application/json"
283 ],
284 "tags": [
285 "logs"
286 ],
287 "responses": {
288 "200": {
289 "description": "OK",
290 "schema": {
291 "allOf": [
292 {
293 "$ref": "#/definitions/models.Response"
294 },
295 {
296 "type": "object",
297 "properties": {
298 "data": {
299 "$ref": "#/definitions/handlers.ScoreLogsResponse"
217 } 300 }
218 } 301 }
219 } 302 }
@@ -259,7 +342,7 @@ const docTemplate = `{
259 "in": "body", 342 "in": "body",
260 "required": true, 343 "required": true,
261 "schema": { 344 "schema": {
262 "$ref": "#/definitions/models.EditMapImageRequest" 345 "$ref": "#/definitions/handlers.EditMapImageRequest"
263 } 346 }
264 } 347 }
265 ], 348 ],
@@ -275,7 +358,7 @@ const docTemplate = `{
275 "type": "object", 358 "type": "object",
276 "properties": { 359 "properties": {
277 "data": { 360 "data": {
278 "$ref": "#/definitions/models.EditMapImageRequest" 361 "$ref": "#/definitions/handlers.EditMapImageRequest"
279 } 362 }
280 } 363 }
281 } 364 }
@@ -321,19 +404,7 @@ const docTemplate = `{
321 "type": "object", 404 "type": "object",
322 "properties": { 405 "properties": {
323 "data": { 406 "data": {
324 "allOf": [ 407 "$ref": "#/definitions/handlers.MapLeaderboardsResponse"
325 {
326 "$ref": "#/definitions/models.Map"
327 },
328 {
329 "type": "object",
330 "properties": {
331 "data": {
332 "$ref": "#/definitions/models.MapRecords"
333 }
334 }
335 }
336 ]
337 } 408 }
338 } 409 }
339 } 410 }
@@ -414,7 +485,7 @@ const docTemplate = `{
414 "type": "object", 485 "type": "object",
415 "properties": { 486 "properties": {
416 "data": { 487 "data": {
417 "$ref": "#/definitions/models.RecordResponse" 488 "$ref": "#/definitions/handlers.RecordResponse"
418 } 489 }
419 } 490 }
420 } 491 }
@@ -466,7 +537,7 @@ const docTemplate = `{
466 "type": "object", 537 "type": "object",
467 "properties": { 538 "properties": {
468 "data": { 539 "data": {
469 "$ref": "#/definitions/models.MapSummaryResponse" 540 "$ref": "#/definitions/handlers.MapSummaryResponse"
470 } 541 }
471 } 542 }
472 } 543 }
@@ -510,7 +581,7 @@ const docTemplate = `{
510 "in": "body", 581 "in": "body",
511 "required": true, 582 "required": true,
512 "schema": { 583 "schema": {
513 "$ref": "#/definitions/models.EditMapSummaryRequest" 584 "$ref": "#/definitions/handlers.EditMapSummaryRequest"
514 } 585 }
515 } 586 }
516 ], 587 ],
@@ -526,7 +597,7 @@ const docTemplate = `{
526 "type": "object", 597 "type": "object",
527 "properties": { 598 "properties": {
528 "data": { 599 "data": {
529 "$ref": "#/definitions/models.EditMapSummaryRequest" 600 "$ref": "#/definitions/handlers.EditMapSummaryRequest"
530 } 601 }
531 } 602 }
532 } 603 }
@@ -570,7 +641,7 @@ const docTemplate = `{
570 "in": "body", 641 "in": "body",
571 "required": true, 642 "required": true,
572 "schema": { 643 "schema": {
573 "$ref": "#/definitions/models.CreateMapSummaryRequest" 644 "$ref": "#/definitions/handlers.CreateMapSummaryRequest"
574 } 645 }
575 } 646 }
576 ], 647 ],
@@ -586,7 +657,7 @@ const docTemplate = `{
586 "type": "object", 657 "type": "object",
587 "properties": { 658 "properties": {
588 "data": { 659 "data": {
589 "$ref": "#/definitions/models.CreateMapSummaryRequest" 660 "$ref": "#/definitions/handlers.CreateMapSummaryRequest"
590 } 661 }
591 } 662 }
592 } 663 }
@@ -630,7 +701,7 @@ const docTemplate = `{
630 "in": "body", 701 "in": "body",
631 "required": true, 702 "required": true,
632 "schema": { 703 "schema": {
633 "$ref": "#/definitions/models.DeleteMapSummaryRequest" 704 "$ref": "#/definitions/handlers.DeleteMapSummaryRequest"
634 } 705 }
635 } 706 }
636 ], 707 ],
@@ -646,7 +717,7 @@ const docTemplate = `{
646 "type": "object", 717 "type": "object",
647 "properties": { 718 "properties": {
648 "data": { 719 "data": {
649 "$ref": "#/definitions/models.DeleteMapSummaryRequest" 720 "$ref": "#/definitions/handlers.DeleteMapSummaryRequest"
650 } 721 }
651 } 722 }
652 } 723 }
@@ -695,7 +766,7 @@ const docTemplate = `{
695 "type": "object", 766 "type": "object",
696 "properties": { 767 "properties": {
697 "data": { 768 "data": {
698 "$ref": "#/definitions/models.ProfileResponse" 769 "$ref": "#/definitions/handlers.ProfileResponse"
699 } 770 }
700 } 771 }
701 } 772 }
@@ -796,7 +867,7 @@ const docTemplate = `{
796 "type": "object", 867 "type": "object",
797 "properties": { 868 "properties": {
798 "data": { 869 "data": {
799 "$ref": "#/definitions/models.ProfileResponse" 870 "$ref": "#/definitions/handlers.ProfileResponse"
800 } 871 }
801 } 872 }
802 } 873 }
@@ -839,7 +910,7 @@ const docTemplate = `{
839 "type": "object", 910 "type": "object",
840 "properties": { 911 "properties": {
841 "data": { 912 "data": {
842 "$ref": "#/definitions/models.RankingsResponse" 913 "$ref": "#/definitions/handlers.RankingsResponse"
843 } 914 }
844 } 915 }
845 } 916 }
@@ -884,7 +955,7 @@ const docTemplate = `{
884 "type": "object", 955 "type": "object",
885 "properties": { 956 "properties": {
886 "data": { 957 "data": {
887 "$ref": "#/definitions/models.SearchResponse" 958 "$ref": "#/definitions/handlers.SearchResponse"
888 } 959 }
889 } 960 }
890 } 961 }
@@ -921,7 +992,7 @@ const docTemplate = `{
921 "type": "object", 992 "type": "object",
922 "properties": { 993 "properties": {
923 "data": { 994 "data": {
924 "$ref": "#/definitions/models.LoginResponse" 995 "$ref": "#/definitions/handlers.LoginResponse"
925 } 996 }
926 } 997 }
927 } 998 }
@@ -956,7 +1027,7 @@ const docTemplate = `{
956 "type": "object", 1027 "type": "object",
957 "properties": { 1028 "properties": {
958 "data": { 1029 "data": {
959 "$ref": "#/definitions/models.LoginResponse" 1030 "$ref": "#/definitions/handlers.LoginResponse"
960 } 1031 }
961 } 1032 }
962 } 1033 }
@@ -1005,7 +1076,7 @@ const docTemplate = `{
1005 "type": "object", 1076 "type": "object",
1006 "properties": { 1077 "properties": {
1007 "data": { 1078 "data": {
1008 "$ref": "#/definitions/models.ProfileResponse" 1079 "$ref": "#/definitions/handlers.ProfileResponse"
1009 } 1080 }
1010 } 1081 }
1011 } 1082 }
@@ -1029,29 +1100,7 @@ const docTemplate = `{
1029 } 1100 }
1030 }, 1101 },
1031 "definitions": { 1102 "definitions": {
1032 "models.Category": { 1103 "handlers.ChapterMapsResponse": {
1033 "type": "object",
1034 "properties": {
1035 "id": {
1036 "type": "integer"
1037 },
1038 "name": {
1039 "type": "string"
1040 }
1041 }
1042 },
1043 "models.Chapter": {
1044 "type": "object",
1045 "properties": {
1046 "id": {
1047 "type": "integer"
1048 },
1049 "name": {
1050 "type": "string"
1051 }
1052 }
1053 },
1054 "models.ChapterMapsResponse": {
1055 "type": "object", 1104 "type": "object",
1056 "properties": { 1105 "properties": {
1057 "chapter": { 1106 "chapter": {
@@ -1065,7 +1114,7 @@ const docTemplate = `{
1065 } 1114 }
1066 } 1115 }
1067 }, 1116 },
1068 "models.ChaptersResponse": { 1117 "handlers.ChaptersResponse": {
1069 "type": "object", 1118 "type": "object",
1070 "properties": { 1119 "properties": {
1071 "chapters": { 1120 "chapters": {
@@ -1079,7 +1128,7 @@ const docTemplate = `{
1079 } 1128 }
1080 } 1129 }
1081 }, 1130 },
1082 "models.CreateMapSummaryRequest": { 1131 "handlers.CreateMapSummaryRequest": {
1083 "type": "object", 1132 "type": "object",
1084 "required": [ 1133 "required": [
1085 "category_id", 1134 "category_id",
@@ -1109,7 +1158,7 @@ const docTemplate = `{
1109 } 1158 }
1110 } 1159 }
1111 }, 1160 },
1112 "models.DeleteMapSummaryRequest": { 1161 "handlers.DeleteMapSummaryRequest": {
1113 "type": "object", 1162 "type": "object",
1114 "required": [ 1163 "required": [
1115 "route_id" 1164 "route_id"
@@ -1120,7 +1169,7 @@ const docTemplate = `{
1120 } 1169 }
1121 } 1170 }
1122 }, 1171 },
1123 "models.EditMapImageRequest": { 1172 "handlers.EditMapImageRequest": {
1124 "type": "object", 1173 "type": "object",
1125 "required": [ 1174 "required": [
1126 "image" 1175 "image"
@@ -1131,7 +1180,7 @@ const docTemplate = `{
1131 } 1180 }
1132 } 1181 }
1133 }, 1182 },
1134 "models.EditMapSummaryRequest": { 1183 "handlers.EditMapSummaryRequest": {
1135 "type": "object", 1184 "type": "object",
1136 "required": [ 1185 "required": [
1137 "description", 1186 "description",
@@ -1161,128 +1210,114 @@ const docTemplate = `{
1161 } 1210 }
1162 } 1211 }
1163 }, 1212 },
1164 "models.Game": { 1213 "handlers.LoginResponse": {
1165 "type": "object", 1214 "type": "object",
1166 "properties": { 1215 "properties": {
1167 "id": { 1216 "token": {
1168 "type": "integer"
1169 },
1170 "is_coop": {
1171 "type": "boolean"
1172 },
1173 "name": {
1174 "type": "string" 1217 "type": "string"
1175 } 1218 }
1176 } 1219 }
1177 }, 1220 },
1178 "models.LoginResponse": { 1221 "handlers.LogsResponse": {
1179 "type": "object", 1222 "type": "object",
1180 "properties": { 1223 "properties": {
1181 "token": { 1224 "logs": {
1182 "type": "string" 1225 "type": "array",
1226 "items": {
1227 "$ref": "#/definitions/handlers.LogsResponseDetails"
1228 }
1183 } 1229 }
1184 } 1230 }
1185 }, 1231 },
1186 "models.Map": { 1232 "handlers.LogsResponseDetails": {
1187 "type": "object", 1233 "type": "object",
1188 "properties": { 1234 "properties": {
1189 "chapter_name": { 1235 "date": {
1190 "type": "string"
1191 },
1192 "game_name": {
1193 "type": "string" 1236 "type": "string"
1194 }, 1237 },
1195 "id": { 1238 "detail": {
1196 "type": "integer"
1197 },
1198 "image": {
1199 "type": "string" 1239 "type": "string"
1200 }, 1240 },
1201 "is_coop": { 1241 "user": {
1202 "type": "boolean" 1242 "$ref": "#/definitions/models.UserShort"
1203 },
1204 "map_name": {
1205 "type": "string"
1206 } 1243 }
1207 } 1244 }
1208 }, 1245 },
1209 "models.MapHistory": { 1246 "handlers.MapLeaderboardsResponse": {
1210 "type": "object", 1247 "type": "object",
1211 "properties": { 1248 "properties": {
1212 "date": { 1249 "map": {
1213 "type": "string" 1250 "$ref": "#/definitions/models.Map"
1214 },
1215 "runner_name": {
1216 "type": "string"
1217 }, 1251 },
1218 "score_count": { 1252 "records": {}
1219 "type": "integer"
1220 }
1221 } 1253 }
1222 }, 1254 },
1223 "models.MapRecords": { 1255 "handlers.MapSummaryResponse": {
1224 "type": "object", 1256 "type": "object",
1225 "properties": { 1257 "properties": {
1226 "records": {} 1258 "map": {
1259 "$ref": "#/definitions/models.Map"
1260 },
1261 "summary": {
1262 "$ref": "#/definitions/models.MapSummary"
1263 }
1227 } 1264 }
1228 }, 1265 },
1229 "models.MapRoute": { 1266 "handlers.ProfileRankings": {
1230 "type": "object", 1267 "type": "object",
1231 "properties": { 1268 "properties": {
1232 "category": { 1269 "cooperative": {
1233 "$ref": "#/definitions/models.Category" 1270 "$ref": "#/definitions/handlers.ProfileRankingsDetails"
1234 },
1235 "description": {
1236 "type": "string"
1237 }, 1271 },
1238 "history": { 1272 "overall": {
1239 "$ref": "#/definitions/models.MapHistory" 1273 "$ref": "#/definitions/handlers.ProfileRankingsDetails"
1240 }, 1274 },
1241 "rating": { 1275 "singleplayer": {
1242 "type": "number" 1276 "$ref": "#/definitions/handlers.ProfileRankingsDetails"
1243 },
1244 "route_id": {
1245 "type": "integer"
1246 },
1247 "showcase": {
1248 "type": "string"
1249 } 1277 }
1250 } 1278 }
1251 }, 1279 },
1252 "models.MapShort": { 1280 "handlers.ProfileRankingsDetails": {
1253 "type": "object", 1281 "type": "object",
1254 "properties": { 1282 "properties": {
1255 "id": { 1283 "completion_count": {
1256 "type": "integer" 1284 "type": "integer"
1257 }, 1285 },
1258 "name": { 1286 "completion_total": {
1259 "type": "string" 1287 "type": "integer"
1288 },
1289 "rank": {
1290 "type": "integer"
1260 } 1291 }
1261 } 1292 }
1262 }, 1293 },
1263 "models.MapSummary": { 1294 "handlers.ProfileRecords": {
1264 "type": "object", 1295 "type": "object",
1265 "properties": { 1296 "properties": {
1266 "routes": { 1297 "category_id": {
1298 "type": "integer"
1299 },
1300 "game_id": {
1301 "type": "integer"
1302 },
1303 "map_id": {
1304 "type": "integer"
1305 },
1306 "map_name": {
1307 "type": "string"
1308 },
1309 "map_wr_count": {
1310 "type": "integer"
1311 },
1312 "scores": {
1267 "type": "array", 1313 "type": "array",
1268 "items": { 1314 "items": {
1269 "$ref": "#/definitions/models.MapRoute" 1315 "$ref": "#/definitions/handlers.ProfileScores"
1270 } 1316 }
1271 } 1317 }
1272 } 1318 }
1273 }, 1319 },
1274 "models.MapSummaryResponse": { 1320 "handlers.ProfileResponse": {
1275 "type": "object",
1276 "properties": {
1277 "map": {
1278 "$ref": "#/definitions/models.Map"
1279 },
1280 "summary": {
1281 "$ref": "#/definitions/models.MapSummary"
1282 }
1283 }
1284 },
1285 "models.ProfileResponse": {
1286 "type": "object", 1321 "type": "object",
1287 "properties": { 1322 "properties": {
1288 "avatar_link": { 1323 "avatar_link": {
@@ -1291,39 +1326,68 @@ const docTemplate = `{
1291 "country_code": { 1326 "country_code": {
1292 "type": "string" 1327 "type": "string"
1293 }, 1328 },
1329 "links": {
1330 "$ref": "#/definitions/models.Links"
1331 },
1294 "profile": { 1332 "profile": {
1295 "type": "boolean" 1333 "type": "boolean"
1296 }, 1334 },
1297 "scores_mp": { 1335 "rankings": {
1336 "$ref": "#/definitions/handlers.ProfileRankings"
1337 },
1338 "records": {
1298 "type": "array", 1339 "type": "array",
1299 "items": { 1340 "items": {
1300 "$ref": "#/definitions/models.ScoreResponse" 1341 "$ref": "#/definitions/handlers.ProfileRecords"
1301 } 1342 }
1302 }, 1343 },
1303 "scores_sp": { 1344 "steam_id": {
1345 "type": "string"
1346 },
1347 "titles": {
1304 "type": "array", 1348 "type": "array",
1305 "items": { 1349 "items": {
1306 "$ref": "#/definitions/models.ScoreResponse" 1350 "$ref": "#/definitions/models.Title"
1307 } 1351 }
1308 }, 1352 },
1309 "steam_id": { 1353 "user_name": {
1354 "type": "string"
1355 }
1356 }
1357 },
1358 "handlers.ProfileScores": {
1359 "type": "object",
1360 "properties": {
1361 "date": {
1310 "type": "string" 1362 "type": "string"
1311 }, 1363 },
1312 "user_name": { 1364 "demo_id": {
1313 "type": "string" 1365 "type": "string"
1366 },
1367 "score_count": {
1368 "type": "integer"
1369 },
1370 "score_time": {
1371 "type": "integer"
1314 } 1372 }
1315 } 1373 }
1316 }, 1374 },
1317 "models.RankingsResponse": { 1375 "handlers.RankingsResponse": {
1318 "type": "object", 1376 "type": "object",
1319 "properties": { 1377 "properties": {
1320 "rankings_mp": { 1378 "rankings_multiplayer": {
1379 "type": "array",
1380 "items": {
1381 "$ref": "#/definitions/models.UserRanking"
1382 }
1383 },
1384 "rankings_overall": {
1321 "type": "array", 1385 "type": "array",
1322 "items": { 1386 "items": {
1323 "$ref": "#/definitions/models.UserRanking" 1387 "$ref": "#/definitions/models.UserRanking"
1324 } 1388 }
1325 }, 1389 },
1326 "rankings_sp": { 1390 "rankings_singleplayer": {
1327 "type": "array", 1391 "type": "array",
1328 "items": { 1392 "items": {
1329 "$ref": "#/definitions/models.UserRanking" 1393 "$ref": "#/definitions/models.UserRanking"
@@ -1331,7 +1395,7 @@ const docTemplate = `{
1331 } 1395 }
1332 } 1396 }
1333 }, 1397 },
1334 "models.RecordResponse": { 1398 "handlers.RecordResponse": {
1335 "type": "object", 1399 "type": "object",
1336 "properties": { 1400 "properties": {
1337 "score_count": { 1401 "score_count": {
@@ -1342,28 +1406,44 @@ const docTemplate = `{
1342 } 1406 }
1343 } 1407 }
1344 }, 1408 },
1345 "models.Response": { 1409 "handlers.ScoreLogsResponse": {
1346 "type": "object", 1410 "type": "object",
1347 "properties": { 1411 "properties": {
1348 "data": {}, 1412 "scores": {
1349 "message": { 1413 "type": "array",
1350 "type": "string" 1414 "items": {
1351 }, 1415 "$ref": "#/definitions/handlers.ScoreLogsResponseDetails"
1352 "success": { 1416 }
1353 "type": "boolean"
1354 } 1417 }
1355 } 1418 }
1356 }, 1419 },
1357 "models.ScoreResponse": { 1420 "handlers.ScoreLogsResponseDetails": {
1358 "type": "object", 1421 "type": "object",
1359 "properties": { 1422 "properties": {
1360 "map_id": { 1423 "date": {
1424 "type": "string"
1425 },
1426 "demo_id": {
1427 "type": "string"
1428 },
1429 "game": {
1430 "$ref": "#/definitions/models.Game"
1431 },
1432 "map": {
1433 "$ref": "#/definitions/models.MapShort"
1434 },
1435 "score_count": {
1361 "type": "integer" 1436 "type": "integer"
1362 }, 1437 },
1363 "records": {} 1438 "score_time": {
1439 "type": "integer"
1440 },
1441 "user": {
1442 "$ref": "#/definitions/models.UserShort"
1443 }
1364 } 1444 }
1365 }, 1445 },
1366 "models.SearchResponse": { 1446 "handlers.SearchResponse": {
1367 "type": "object", 1447 "type": "object",
1368 "properties": { 1448 "properties": {
1369 "maps": { 1449 "maps": {
@@ -1380,17 +1460,172 @@ const docTemplate = `{
1380 } 1460 }
1381 } 1461 }
1382 }, 1462 },
1383 "models.UserRanking": { 1463 "models.Category": {
1384 "type": "object", 1464 "type": "object",
1385 "properties": { 1465 "properties": {
1386 "total_score": { 1466 "id": {
1387 "type": "integer" 1467 "type": "integer"
1388 }, 1468 },
1389 "user_id": { 1469 "name": {
1390 "type": "string" 1470 "type": "string"
1471 }
1472 }
1473 },
1474 "models.Chapter": {
1475 "type": "object",
1476 "properties": {
1477 "id": {
1478 "type": "integer"
1391 }, 1479 },
1392 "user_name": { 1480 "name": {
1481 "type": "string"
1482 }
1483 }
1484 },
1485 "models.Game": {
1486 "type": "object",
1487 "properties": {
1488 "id": {
1489 "type": "integer"
1490 },
1491 "is_coop": {
1492 "type": "boolean"
1493 },
1494 "name": {
1495 "type": "string"
1496 }
1497 }
1498 },
1499 "models.Links": {
1500 "type": "object",
1501 "properties": {
1502 "p2sr": {
1503 "type": "string"
1504 },
1505 "stream": {
1506 "type": "string"
1507 },
1508 "twitch": {
1509 "type": "string"
1510 },
1511 "youtube": {
1512 "type": "string"
1513 }
1514 }
1515 },
1516 "models.Map": {
1517 "type": "object",
1518 "properties": {
1519 "chapter_name": {
1520 "type": "string"
1521 },
1522 "game_name": {
1523 "type": "string"
1524 },
1525 "id": {
1526 "type": "integer"
1527 },
1528 "image": {
1529 "type": "string"
1530 },
1531 "is_coop": {
1532 "type": "boolean"
1533 },
1534 "map_name": {
1535 "type": "string"
1536 }
1537 }
1538 },
1539 "models.MapHistory": {
1540 "type": "object",
1541 "properties": {
1542 "date": {
1543 "type": "string"
1544 },
1545 "runner_name": {
1546 "type": "string"
1547 },
1548 "score_count": {
1549 "type": "integer"
1550 }
1551 }
1552 },
1553 "models.MapRoute": {
1554 "type": "object",
1555 "properties": {
1556 "category": {
1557 "$ref": "#/definitions/models.Category"
1558 },
1559 "description": {
1560 "type": "string"
1561 },
1562 "history": {
1563 "$ref": "#/definitions/models.MapHistory"
1564 },
1565 "rating": {
1566 "type": "number"
1567 },
1568 "route_id": {
1569 "type": "integer"
1570 },
1571 "showcase": {
1572 "type": "string"
1573 }
1574 }
1575 },
1576 "models.MapShort": {
1577 "type": "object",
1578 "properties": {
1579 "id": {
1580 "type": "integer"
1581 },
1582 "name": {
1583 "type": "string"
1584 }
1585 }
1586 },
1587 "models.MapSummary": {
1588 "type": "object",
1589 "properties": {
1590 "routes": {
1591 "type": "array",
1592 "items": {
1593 "$ref": "#/definitions/models.MapRoute"
1594 }
1595 }
1596 }
1597 },
1598 "models.Response": {
1599 "type": "object",
1600 "properties": {
1601 "data": {},
1602 "message": {
1603 "type": "string"
1604 },
1605 "success": {
1606 "type": "boolean"
1607 }
1608 }
1609 },
1610 "models.Title": {
1611 "type": "object",
1612 "properties": {
1613 "color": {
1393 "type": "string" 1614 "type": "string"
1615 },
1616 "name": {
1617 "type": "string"
1618 }
1619 }
1620 },
1621 "models.UserRanking": {
1622 "type": "object",
1623 "properties": {
1624 "total_score": {
1625 "type": "integer"
1626 },
1627 "user": {
1628 "$ref": "#/definitions/models.UserShort"
1394 } 1629 }
1395 } 1630 }
1396 }, 1631 },
diff --git a/docs/swagger.json b/docs/swagger.json
index 2e1a789..646da0f 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -43,7 +43,7 @@
43 "type": "object", 43 "type": "object",
44 "properties": { 44 "properties": {
45 "data": { 45 "data": {
46 "$ref": "#/definitions/models.ChapterMapsResponse" 46 "$ref": "#/definitions/handlers.ChapterMapsResponse"
47 } 47 }
48 } 48 }
49 } 49 }
@@ -166,7 +166,7 @@
166 "type": "object", 166 "type": "object",
167 "properties": { 167 "properties": {
168 "data": { 168 "data": {
169 "$ref": "#/definitions/models.ChaptersResponse" 169 "$ref": "#/definitions/handlers.ChaptersResponse"
170 } 170 }
171 } 171 }
172 } 172 }
@@ -206,7 +206,90 @@
206 "type": "object", 206 "type": "object",
207 "properties": { 207 "properties": {
208 "data": { 208 "data": {
209 "$ref": "#/definitions/models.LoginResponse" 209 "$ref": "#/definitions/handlers.LoginResponse"
210 }
211 }
212 }
213 ]
214 }
215 },
216 "400": {
217 "description": "Bad Request",
218 "schema": {
219 "$ref": "#/definitions/models.Response"
220 }
221 }
222 }
223 }
224 },
225 "/logs/mod": {
226 "get": {
227 "description": "Get mod logs.",
228 "produces": [
229 "application/json"
230 ],
231 "tags": [
232 "logs"
233 ],
234 "parameters": [
235 {
236 "type": "string",
237 "description": "JWT Token",
238 "name": "Authorization",
239 "in": "header",
240 "required": true
241 }
242 ],
243 "responses": {
244 "200": {
245 "description": "OK",
246 "schema": {
247 "allOf": [
248 {
249 "$ref": "#/definitions/models.Response"
250 },
251 {
252 "type": "object",
253 "properties": {
254 "data": {
255 "$ref": "#/definitions/handlers.LogsResponse"
256 }
257 }
258 }
259 ]
260 }
261 },
262 "400": {
263 "description": "Bad Request",
264 "schema": {
265 "$ref": "#/definitions/models.Response"
266 }
267 }
268 }
269 }
270 },
271 "/logs/score": {
272 "get": {
273 "description": "Get score logs of every player.",
274 "produces": [
275 "application/json"
276 ],
277 "tags": [
278 "logs"
279 ],
280 "responses": {
281 "200": {
282 "description": "OK",
283 "schema": {
284 "allOf": [
285 {
286 "$ref": "#/definitions/models.Response"
287 },
288 {
289 "type": "object",
290 "properties": {
291 "data": {
292 "$ref": "#/definitions/handlers.ScoreLogsResponse"
210 } 293 }
211 } 294 }
212 } 295 }
@@ -252,7 +335,7 @@
252 "in": "body", 335 "in": "body",
253 "required": true, 336 "required": true,
254 "schema": { 337 "schema": {
255 "$ref": "#/definitions/models.EditMapImageRequest" 338 "$ref": "#/definitions/handlers.EditMapImageRequest"
256 } 339 }
257 } 340 }
258 ], 341 ],
@@ -268,7 +351,7 @@
268 "type": "object", 351 "type": "object",
269 "properties": { 352 "properties": {
270 "data": { 353 "data": {
271 "$ref": "#/definitions/models.EditMapImageRequest" 354 "$ref": "#/definitions/handlers.EditMapImageRequest"
272 } 355 }
273 } 356 }
274 } 357 }
@@ -314,19 +397,7 @@
314 "type": "object", 397 "type": "object",
315 "properties": { 398 "properties": {
316 "data": { 399 "data": {
317 "allOf": [ 400 "$ref": "#/definitions/handlers.MapLeaderboardsResponse"
318 {
319 "$ref": "#/definitions/models.Map"
320 },
321 {
322 "type": "object",
323 "properties": {
324 "data": {
325 "$ref": "#/definitions/models.MapRecords"
326 }
327 }
328 }
329 ]
330 } 401 }
331 } 402 }
332 } 403 }
@@ -407,7 +478,7 @@
407 "type": "object", 478 "type": "object",
408 "properties": { 479 "properties": {
409 "data": { 480 "data": {
410 "$ref": "#/definitions/models.RecordResponse" 481 "$ref": "#/definitions/handlers.RecordResponse"
411 } 482 }
412 } 483 }
413 } 484 }
@@ -459,7 +530,7 @@
459 "type": "object", 530 "type": "object",
460 "properties": { 531 "properties": {
461 "data": { 532 "data": {
462 "$ref": "#/definitions/models.MapSummaryResponse" 533 "$ref": "#/definitions/handlers.MapSummaryResponse"
463 } 534 }
464 } 535 }
465 } 536 }
@@ -503,7 +574,7 @@
503 "in": "body", 574 "in": "body",
504 "required": true, 575 "required": true,
505 "schema": { 576 "schema": {
506 "$ref": "#/definitions/models.EditMapSummaryRequest" 577 "$ref": "#/definitions/handlers.EditMapSummaryRequest"
507 } 578 }
508 } 579 }
509 ], 580 ],
@@ -519,7 +590,7 @@
519 "type": "object", 590 "type": "object",
520 "properties": { 591 "properties": {
521 "data": { 592 "data": {
522 "$ref": "#/definitions/models.EditMapSummaryRequest" 593 "$ref": "#/definitions/handlers.EditMapSummaryRequest"
523 } 594 }
524 } 595 }
525 } 596 }
@@ -563,7 +634,7 @@
563 "in": "body", 634 "in": "body",
564 "required": true, 635 "required": true,
565 "schema": { 636 "schema": {
566 "$ref": "#/definitions/models.CreateMapSummaryRequest" 637 "$ref": "#/definitions/handlers.CreateMapSummaryRequest"
567 } 638 }
568 } 639 }
569 ], 640 ],
@@ -579,7 +650,7 @@
579 "type": "object", 650 "type": "object",
580 "properties": { 651 "properties": {
581 "data": { 652 "data": {
582 "$ref": "#/definitions/models.CreateMapSummaryRequest" 653 "$ref": "#/definitions/handlers.CreateMapSummaryRequest"
583 } 654 }
584 } 655 }
585 } 656 }
@@ -623,7 +694,7 @@
623 "in": "body", 694 "in": "body",
624 "required": true, 695 "required": true,
625 "schema": { 696 "schema": {
626 "$ref": "#/definitions/models.DeleteMapSummaryRequest" 697 "$ref": "#/definitions/handlers.DeleteMapSummaryRequest"
627 } 698 }
628 } 699 }
629 ], 700 ],
@@ -639,7 +710,7 @@
639 "type": "object", 710 "type": "object",
640 "properties": { 711 "properties": {
641 "data": { 712 "data": {
642 "$ref": "#/definitions/models.DeleteMapSummaryRequest" 713 "$ref": "#/definitions/handlers.DeleteMapSummaryRequest"
643 } 714 }
644 } 715 }
645 } 716 }
@@ -688,7 +759,7 @@
688 "type": "object", 759 "type": "object",
689 "properties": { 760 "properties": {
690 "data": { 761 "data": {
691 "$ref": "#/definitions/models.ProfileResponse" 762 "$ref": "#/definitions/handlers.ProfileResponse"
692 } 763 }
693 } 764 }
694 } 765 }
@@ -789,7 +860,7 @@
789 "type": "object", 860 "type": "object",
790 "properties": { 861 "properties": {
791 "data": { 862 "data": {
792 "$ref": "#/definitions/models.ProfileResponse" 863 "$ref": "#/definitions/handlers.ProfileResponse"
793 } 864 }
794 } 865 }
795 } 866 }
@@ -832,7 +903,7 @@
832 "type": "object", 903 "type": "object",
833 "properties": { 904 "properties": {
834 "data": { 905 "data": {
835 "$ref": "#/definitions/models.RankingsResponse" 906 "$ref": "#/definitions/handlers.RankingsResponse"
836 } 907 }
837 } 908 }
838 } 909 }
@@ -877,7 +948,7 @@
877 "type": "object", 948 "type": "object",
878 "properties": { 949 "properties": {
879 "data": { 950 "data": {
880 "$ref": "#/definitions/models.SearchResponse" 951 "$ref": "#/definitions/handlers.SearchResponse"
881 } 952 }
882 } 953 }
883 } 954 }
@@ -914,7 +985,7 @@
914 "type": "object", 985 "type": "object",
915 "properties": { 986 "properties": {
916 "data": { 987 "data": {
917 "$ref": "#/definitions/models.LoginResponse" 988 "$ref": "#/definitions/handlers.LoginResponse"
918 } 989 }
919 } 990 }
920 } 991 }
@@ -949,7 +1020,7 @@
949 "type": "object", 1020 "type": "object",
950 "properties": { 1021 "properties": {
951 "data": { 1022 "data": {
952 "$ref": "#/definitions/models.LoginResponse" 1023 "$ref": "#/definitions/handlers.LoginResponse"
953 } 1024 }
954 } 1025 }
955 } 1026 }
@@ -998,7 +1069,7 @@
998 "type": "object", 1069 "type": "object",
999 "properties": { 1070 "properties": {
1000 "data": { 1071 "data": {
1001 "$ref": "#/definitions/models.ProfileResponse" 1072 "$ref": "#/definitions/handlers.ProfileResponse"
1002 } 1073 }
1003 } 1074 }
1004 } 1075 }
@@ -1022,29 +1093,7 @@
1022 } 1093 }
1023 }, 1094 },
1024 "definitions": { 1095 "definitions": {
1025 "models.Category": { 1096 "handlers.ChapterMapsResponse": {
1026 "type": "object",
1027 "properties": {
1028 "id": {
1029 "type": "integer"
1030 },
1031 "name": {
1032 "type": "string"
1033 }
1034 }
1035 },
1036 "models.Chapter": {
1037 "type": "object",
1038 "properties": {
1039 "id": {
1040 "type": "integer"
1041 },
1042 "name": {
1043 "type": "string"
1044 }
1045 }
1046 },
1047 "models.ChapterMapsResponse": {
1048 "type": "object", 1097 "type": "object",
1049 "properties": { 1098 "properties": {
1050 "chapter": { 1099 "chapter": {
@@ -1058,7 +1107,7 @@
1058 } 1107 }
1059 } 1108 }
1060 }, 1109 },
1061 "models.ChaptersResponse": { 1110 "handlers.ChaptersResponse": {
1062 "type": "object", 1111 "type": "object",
1063 "properties": { 1112 "properties": {
1064 "chapters": { 1113 "chapters": {
@@ -1072,7 +1121,7 @@
1072 } 1121 }
1073 } 1122 }
1074 }, 1123 },
1075 "models.CreateMapSummaryRequest": { 1124 "handlers.CreateMapSummaryRequest": {
1076 "type": "object", 1125 "type": "object",
1077 "required": [ 1126 "required": [
1078 "category_id", 1127 "category_id",
@@ -1102,7 +1151,7 @@
1102 } 1151 }
1103 } 1152 }
1104 }, 1153 },
1105 "models.DeleteMapSummaryRequest": { 1154 "handlers.DeleteMapSummaryRequest": {
1106 "type": "object", 1155 "type": "object",
1107 "required": [ 1156 "required": [
1108 "route_id" 1157 "route_id"
@@ -1113,7 +1162,7 @@
1113 } 1162 }
1114 } 1163 }
1115 }, 1164 },
1116 "models.EditMapImageRequest": { 1165 "handlers.EditMapImageRequest": {
1117 "type": "object", 1166 "type": "object",
1118 "required": [ 1167 "required": [
1119 "image" 1168 "image"
@@ -1124,7 +1173,7 @@
1124 } 1173 }
1125 } 1174 }
1126 }, 1175 },
1127 "models.EditMapSummaryRequest": { 1176 "handlers.EditMapSummaryRequest": {
1128 "type": "object", 1177 "type": "object",
1129 "required": [ 1178 "required": [
1130 "description", 1179 "description",
@@ -1154,128 +1203,114 @@
1154 } 1203 }
1155 } 1204 }
1156 }, 1205 },
1157 "models.Game": { 1206 "handlers.LoginResponse": {
1158 "type": "object", 1207 "type": "object",
1159 "properties": { 1208 "properties": {
1160 "id": { 1209 "token": {
1161 "type": "integer"
1162 },
1163 "is_coop": {
1164 "type": "boolean"
1165 },
1166 "name": {
1167 "type": "string" 1210 "type": "string"
1168 } 1211 }
1169 } 1212 }
1170 }, 1213 },
1171 "models.LoginResponse": { 1214 "handlers.LogsResponse": {
1172 "type": "object", 1215 "type": "object",
1173 "properties": { 1216 "properties": {
1174 "token": { 1217 "logs": {
1175 "type": "string" 1218 "type": "array",
1219 "items": {
1220 "$ref": "#/definitions/handlers.LogsResponseDetails"
1221 }
1176 } 1222 }
1177 } 1223 }
1178 }, 1224 },
1179 "models.Map": { 1225 "handlers.LogsResponseDetails": {
1180 "type": "object", 1226 "type": "object",
1181 "properties": { 1227 "properties": {
1182 "chapter_name": { 1228 "date": {
1183 "type": "string"
1184 },
1185 "game_name": {
1186 "type": "string" 1229 "type": "string"
1187 }, 1230 },
1188 "id": { 1231 "detail": {
1189 "type": "integer"
1190 },
1191 "image": {
1192 "type": "string" 1232 "type": "string"
1193 }, 1233 },
1194 "is_coop": { 1234 "user": {
1195 "type": "boolean" 1235 "$ref": "#/definitions/models.UserShort"
1196 },
1197 "map_name": {
1198 "type": "string"
1199 } 1236 }
1200 } 1237 }
1201 }, 1238 },
1202 "models.MapHistory": { 1239 "handlers.MapLeaderboardsResponse": {
1203 "type": "object", 1240 "type": "object",
1204 "properties": { 1241 "properties": {
1205 "date": { 1242 "map": {
1206 "type": "string" 1243 "$ref": "#/definitions/models.Map"
1207 },
1208 "runner_name": {
1209 "type": "string"
1210 }, 1244 },
1211 "score_count": { 1245 "records": {}
1212 "type": "integer"
1213 }
1214 } 1246 }
1215 }, 1247 },
1216 "models.MapRecords": { 1248 "handlers.MapSummaryResponse": {
1217 "type": "object", 1249 "type": "object",
1218 "properties": { 1250 "properties": {
1219 "records": {} 1251 "map": {
1252 "$ref": "#/definitions/models.Map"
1253 },
1254 "summary": {
1255 "$ref": "#/definitions/models.MapSummary"
1256 }
1220 } 1257 }
1221 }, 1258 },
1222 "models.MapRoute": { 1259 "handlers.ProfileRankings": {
1223 "type": "object", 1260 "type": "object",
1224 "properties": { 1261 "properties": {
1225 "category": { 1262 "cooperative": {
1226 "$ref": "#/definitions/models.Category" 1263 "$ref": "#/definitions/handlers.ProfileRankingsDetails"
1227 },
1228 "description": {
1229 "type": "string"
1230 }, 1264 },
1231 "history": { 1265 "overall": {
1232 "$ref": "#/definitions/models.MapHistory" 1266 "$ref": "#/definitions/handlers.ProfileRankingsDetails"
1233 }, 1267 },
1234 "rating": { 1268 "singleplayer": {
1235 "type": "number" 1269 "$ref": "#/definitions/handlers.ProfileRankingsDetails"
1236 },
1237 "route_id": {
1238 "type": "integer"
1239 },
1240 "showcase": {
1241 "type": "string"
1242 } 1270 }
1243 } 1271 }
1244 }, 1272 },
1245 "models.MapShort": { 1273 "handlers.ProfileRankingsDetails": {
1246 "type": "object", 1274 "type": "object",
1247 "properties": { 1275 "properties": {
1248 "id": { 1276 "completion_count": {
1249 "type": "integer" 1277 "type": "integer"
1250 }, 1278 },
1251 "name": { 1279 "completion_total": {
1252 "type": "string" 1280 "type": "integer"
1281 },
1282 "rank": {
1283 "type": "integer"
1253 } 1284 }
1254 } 1285 }
1255 }, 1286 },
1256 "models.MapSummary": { 1287 "handlers.ProfileRecords": {
1257 "type": "object", 1288 "type": "object",
1258 "properties": { 1289 "properties": {
1259 "routes": { 1290 "category_id": {
1291 "type": "integer"
1292 },
1293 "game_id": {
1294 "type": "integer"
1295 },
1296 "map_id": {
1297 "type": "integer"
1298 },
1299 "map_name": {
1300 "type": "string"
1301 },
1302 "map_wr_count": {
1303 "type": "integer"
1304 },
1305 "scores": {
1260 "type": "array", 1306 "type": "array",
1261 "items": { 1307 "items": {
1262 "$ref": "#/definitions/models.MapRoute" 1308 "$ref": "#/definitions/handlers.ProfileScores"
1263 } 1309 }
1264 } 1310 }
1265 } 1311 }
1266 }, 1312 },
1267 "models.MapSummaryResponse": { 1313 "handlers.ProfileResponse": {
1268 "type": "object",
1269 "properties": {
1270 "map": {
1271 "$ref": "#/definitions/models.Map"
1272 },
1273 "summary": {
1274 "$ref": "#/definitions/models.MapSummary"
1275 }
1276 }
1277 },
1278 "models.ProfileResponse": {
1279 "type": "object", 1314 "type": "object",
1280 "properties": { 1315 "properties": {
1281 "avatar_link": { 1316 "avatar_link": {
@@ -1284,39 +1319,68 @@
1284 "country_code": { 1319 "country_code": {
1285 "type": "string" 1320 "type": "string"
1286 }, 1321 },
1322 "links": {
1323 "$ref": "#/definitions/models.Links"
1324 },
1287 "profile": { 1325 "profile": {
1288 "type": "boolean" 1326 "type": "boolean"
1289 }, 1327 },
1290 "scores_mp": { 1328 "rankings": {
1329 "$ref": "#/definitions/handlers.ProfileRankings"
1330 },
1331 "records": {
1291 "type": "array", 1332 "type": "array",
1292 "items": { 1333 "items": {
1293 "$ref": "#/definitions/models.ScoreResponse" 1334 "$ref": "#/definitions/handlers.ProfileRecords"
1294 } 1335 }
1295 }, 1336 },
1296 "scores_sp": { 1337 "steam_id": {
1338 "type": "string"
1339 },
1340 "titles": {
1297 "type": "array", 1341 "type": "array",
1298 "items": { 1342 "items": {
1299 "$ref": "#/definitions/models.ScoreResponse" 1343 "$ref": "#/definitions/models.Title"
1300 } 1344 }
1301 }, 1345 },
1302 "steam_id": { 1346 "user_name": {
1347 "type": "string"
1348 }
1349 }
1350 },
1351 "handlers.ProfileScores": {
1352 "type": "object",
1353 "properties": {
1354 "date": {
1303 "type": "string" 1355 "type": "string"
1304 }, 1356 },
1305 "user_name": { 1357 "demo_id": {
1306 "type": "string" 1358 "type": "string"
1359 },
1360 "score_count": {
1361 "type": "integer"
1362 },
1363 "score_time": {
1364 "type": "integer"
1307 } 1365 }
1308 } 1366 }
1309 }, 1367 },
1310 "models.RankingsResponse": { 1368 "handlers.RankingsResponse": {
1311 "type": "object", 1369 "type": "object",
1312 "properties": { 1370 "properties": {
1313 "rankings_mp": { 1371 "rankings_multiplayer": {
1372 "type": "array",
1373 "items": {
1374 "$ref": "#/definitions/models.UserRanking"
1375 }
1376 },
1377 "rankings_overall": {
1314 "type": "array", 1378 "type": "array",
1315 "items": { 1379 "items": {
1316 "$ref": "#/definitions/models.UserRanking" 1380 "$ref": "#/definitions/models.UserRanking"
1317 } 1381 }
1318 }, 1382 },
1319 "rankings_sp": { 1383 "rankings_singleplayer": {
1320 "type": "array", 1384 "type": "array",
1321 "items": { 1385 "items": {
1322 "$ref": "#/definitions/models.UserRanking" 1386 "$ref": "#/definitions/models.UserRanking"
@@ -1324,7 +1388,7 @@
1324 } 1388 }
1325 } 1389 }
1326 }, 1390 },
1327 "models.RecordResponse": { 1391 "handlers.RecordResponse": {
1328 "type": "object", 1392 "type": "object",
1329 "properties": { 1393 "properties": {
1330 "score_count": { 1394 "score_count": {
@@ -1335,28 +1399,44 @@
1335 } 1399 }
1336 } 1400 }
1337 }, 1401 },
1338 "models.Response": { 1402 "handlers.ScoreLogsResponse": {
1339 "type": "object", 1403 "type": "object",
1340 "properties": { 1404 "properties": {
1341 "data": {}, 1405 "scores": {
1342 "message": { 1406 "type": "array",
1343 "type": "string" 1407 "items": {
1344 }, 1408 "$ref": "#/definitions/handlers.ScoreLogsResponseDetails"
1345 "success": { 1409 }
1346 "type": "boolean"
1347 } 1410 }
1348 } 1411 }
1349 }, 1412 },
1350 "models.ScoreResponse": { 1413 "handlers.ScoreLogsResponseDetails": {
1351 "type": "object", 1414 "type": "object",
1352 "properties": { 1415 "properties": {
1353 "map_id": { 1416 "date": {
1417 "type": "string"
1418 },
1419 "demo_id": {
1420 "type": "string"
1421 },
1422 "game": {
1423 "$ref": "#/definitions/models.Game"
1424 },
1425 "map": {
1426 "$ref": "#/definitions/models.MapShort"
1427 },
1428 "score_count": {
1354 "type": "integer" 1429 "type": "integer"
1355 }, 1430 },
1356 "records": {} 1431 "score_time": {
1432 "type": "integer"
1433 },
1434 "user": {
1435 "$ref": "#/definitions/models.UserShort"
1436 }
1357 } 1437 }
1358 }, 1438 },
1359 "models.SearchResponse": { 1439 "handlers.SearchResponse": {
1360 "type": "object", 1440 "type": "object",
1361 "properties": { 1441 "properties": {
1362 "maps": { 1442 "maps": {
@@ -1373,17 +1453,172 @@
1373 } 1453 }
1374 } 1454 }
1375 }, 1455 },
1376 "models.UserRanking": { 1456 "models.Category": {
1377 "type": "object", 1457 "type": "object",
1378 "properties": { 1458 "properties": {
1379 "total_score": { 1459 "id": {
1380 "type": "integer" 1460 "type": "integer"
1381 }, 1461 },
1382 "user_id": { 1462 "name": {
1383 "type": "string" 1463 "type": "string"
1464 }
1465 }
1466 },
1467 "models.Chapter": {
1468 "type": "object",
1469 "properties": {
1470 "id": {
1471 "type": "integer"
1384 }, 1472 },
1385 "user_name": { 1473 "name": {
1474 "type": "string"
1475 }
1476 }
1477 },
1478 "models.Game": {
1479 "type": "object",
1480 "properties": {
1481 "id": {
1482 "type": "integer"
1483 },
1484 "is_coop": {
1485 "type": "boolean"
1486 },
1487 "name": {
1488 "type": "string"
1489 }
1490 }
1491 },
1492 "models.Links": {
1493 "type": "object",
1494 "properties": {
1495 "p2sr": {
1496 "type": "string"
1497 },
1498 "stream": {
1499 "type": "string"
1500 },
1501 "twitch": {
1502 "type": "string"
1503 },
1504 "youtube": {
1505 "type": "string"
1506 }
1507 }
1508 },
1509 "models.Map": {
1510 "type": "object",
1511 "properties": {
1512 "chapter_name": {
1513 "type": "string"
1514 },
1515 "game_name": {
1516 "type": "string"
1517 },
1518 "id": {
1519 "type": "integer"
1520 },
1521 "image": {
1522 "type": "string"
1523 },
1524 "is_coop": {
1525 "type": "boolean"
1526 },
1527 "map_name": {
1528 "type": "string"
1529 }
1530 }
1531 },
1532 "models.MapHistory": {
1533 "type": "object",
1534 "properties": {
1535 "date": {
1536 "type": "string"
1537 },
1538 "runner_name": {
1539 "type": "string"
1540 },
1541 "score_count": {
1542 "type": "integer"
1543 }
1544 }
1545 },
1546 "models.MapRoute": {
1547 "type": "object",
1548 "properties": {
1549 "category": {
1550 "$ref": "#/definitions/models.Category"
1551 },
1552 "description": {
1553 "type": "string"
1554 },
1555 "history": {
1556 "$ref": "#/definitions/models.MapHistory"
1557 },
1558 "rating": {
1559 "type": "number"
1560 },
1561 "route_id": {
1562 "type": "integer"
1563 },
1564 "showcase": {
1565 "type": "string"
1566 }
1567 }
1568 },
1569 "models.MapShort": {
1570 "type": "object",
1571 "properties": {
1572 "id": {
1573 "type": "integer"
1574 },
1575 "name": {
1576 "type": "string"
1577 }
1578 }
1579 },
1580 "models.MapSummary": {
1581 "type": "object",
1582 "properties": {
1583 "routes": {
1584 "type": "array",
1585 "items": {
1586 "$ref": "#/definitions/models.MapRoute"
1587 }
1588 }
1589 }
1590 },
1591 "models.Response": {
1592 "type": "object",
1593 "properties": {
1594 "data": {},
1595 "message": {
1596 "type": "string"
1597 },
1598 "success": {
1599 "type": "boolean"
1600 }
1601 }
1602 },
1603 "models.Title": {
1604 "type": "object",
1605 "properties": {
1606 "color": {
1386 "type": "string" 1607 "type": "string"
1608 },
1609 "name": {
1610 "type": "string"
1611 }
1612 }
1613 },
1614 "models.UserRanking": {
1615 "type": "object",
1616 "properties": {
1617 "total_score": {
1618 "type": "integer"
1619 },
1620 "user": {
1621 "$ref": "#/definitions/models.UserShort"
1387 } 1622 }
1388 } 1623 }
1389 }, 1624 },
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 7571073..6b1e6ea 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -1,20 +1,6 @@
1basePath: /v1 1basePath: /v1
2definitions: 2definitions:
3 models.Category: 3 handlers.ChapterMapsResponse:
4 properties:
5 id:
6 type: integer
7 name:
8 type: string
9 type: object
10 models.Chapter:
11 properties:
12 id:
13 type: integer
14 name:
15 type: string
16 type: object
17 models.ChapterMapsResponse:
18 properties: 4 properties:
19 chapter: 5 chapter:
20 $ref: '#/definitions/models.Chapter' 6 $ref: '#/definitions/models.Chapter'
@@ -23,7 +9,7 @@ definitions:
23 $ref: '#/definitions/models.MapShort' 9 $ref: '#/definitions/models.MapShort'
24 type: array 10 type: array
25 type: object 11 type: object
26 models.ChaptersResponse: 12 handlers.ChaptersResponse:
27 properties: 13 properties:
28 chapters: 14 chapters:
29 items: 15 items:
@@ -32,7 +18,7 @@ definitions:
32 game: 18 game:
33 $ref: '#/definitions/models.Game' 19 $ref: '#/definitions/models.Game'
34 type: object 20 type: object
35 models.CreateMapSummaryRequest: 21 handlers.CreateMapSummaryRequest:
36 properties: 22 properties:
37 category_id: 23 category_id:
38 type: integer 24 type: integer
@@ -53,21 +39,21 @@ definitions:
53 - score_count 39 - score_count
54 - user_name 40 - user_name
55 type: object 41 type: object
56 models.DeleteMapSummaryRequest: 42 handlers.DeleteMapSummaryRequest:
57 properties: 43 properties:
58 route_id: 44 route_id:
59 type: integer 45 type: integer
60 required: 46 required:
61 - route_id 47 - route_id
62 type: object 48 type: object
63 models.EditMapImageRequest: 49 handlers.EditMapImageRequest:
64 properties: 50 properties:
65 image: 51 image:
66 type: string 52 type: string
67 required: 53 required:
68 - image 54 - image
69 type: object 55 type: object
70 models.EditMapSummaryRequest: 56 handlers.EditMapSummaryRequest:
71 properties: 57 properties:
72 description: 58 description:
73 type: string 59 type: string
@@ -88,6 +74,182 @@ definitions:
88 - score_count 74 - score_count
89 - user_name 75 - user_name
90 type: object 76 type: object
77 handlers.LoginResponse:
78 properties:
79 token:
80 type: string
81 type: object
82 handlers.LogsResponse:
83 properties:
84 logs:
85 items:
86 $ref: '#/definitions/handlers.LogsResponseDetails'
87 type: array
88 type: object
89 handlers.LogsResponseDetails:
90 properties:
91 date:
92 type: string
93 detail:
94 type: string
95 user:
96 $ref: '#/definitions/models.UserShort'
97 type: object
98 handlers.MapLeaderboardsResponse:
99 properties:
100 map:
101 $ref: '#/definitions/models.Map'
102 records: {}
103 type: object
104 handlers.MapSummaryResponse:
105 properties:
106 map:
107 $ref: '#/definitions/models.Map'
108 summary:
109 $ref: '#/definitions/models.MapSummary'
110 type: object
111 handlers.ProfileRankings:
112 properties:
113 cooperative:
114 $ref: '#/definitions/handlers.ProfileRankingsDetails'
115 overall:
116 $ref: '#/definitions/handlers.ProfileRankingsDetails'
117 singleplayer:
118 $ref: '#/definitions/handlers.ProfileRankingsDetails'
119 type: object
120 handlers.ProfileRankingsDetails:
121 properties:
122 completion_count:
123 type: integer
124 completion_total:
125 type: integer
126 rank:
127 type: integer
128 type: object
129 handlers.ProfileRecords:
130 properties:
131 category_id:
132 type: integer
133 game_id:
134 type: integer
135 map_id:
136 type: integer
137 map_name:
138 type: string
139 map_wr_count:
140 type: integer
141 scores:
142 items:
143 $ref: '#/definitions/handlers.ProfileScores'
144 type: array
145 type: object
146 handlers.ProfileResponse:
147 properties:
148 avatar_link:
149 type: string
150 country_code:
151 type: string
152 links:
153 $ref: '#/definitions/models.Links'
154 profile:
155 type: boolean
156 rankings:
157 $ref: '#/definitions/handlers.ProfileRankings'
158 records:
159 items:
160 $ref: '#/definitions/handlers.ProfileRecords'
161 type: array
162 steam_id:
163 type: string
164 titles:
165 items:
166 $ref: '#/definitions/models.Title'
167 type: array
168 user_name:
169 type: string
170 type: object
171 handlers.ProfileScores:
172 properties:
173 date:
174 type: string
175 demo_id:
176 type: string
177 score_count:
178 type: integer
179 score_time:
180 type: integer
181 type: object
182 handlers.RankingsResponse:
183 properties:
184 rankings_multiplayer:
185 items:
186 $ref: '#/definitions/models.UserRanking'
187 type: array
188 rankings_overall:
189 items:
190 $ref: '#/definitions/models.UserRanking'
191 type: array
192 rankings_singleplayer:
193 items:
194 $ref: '#/definitions/models.UserRanking'
195 type: array
196 type: object
197 handlers.RecordResponse:
198 properties:
199 score_count:
200 type: integer
201 score_time:
202 type: integer
203 type: object
204 handlers.ScoreLogsResponse:
205 properties:
206 scores:
207 items:
208 $ref: '#/definitions/handlers.ScoreLogsResponseDetails'
209 type: array
210 type: object
211 handlers.ScoreLogsResponseDetails:
212 properties:
213 date:
214 type: string
215 demo_id:
216 type: string
217 game:
218 $ref: '#/definitions/models.Game'
219 map:
220 $ref: '#/definitions/models.MapShort'
221 score_count:
222 type: integer
223 score_time:
224 type: integer
225 user:
226 $ref: '#/definitions/models.UserShort'
227 type: object
228 handlers.SearchResponse:
229 properties:
230 maps:
231 items:
232 $ref: '#/definitions/models.MapShort'
233 type: array
234 players:
235 items:
236 $ref: '#/definitions/models.UserShort'
237 type: array
238 type: object
239 models.Category:
240 properties:
241 id:
242 type: integer
243 name:
244 type: string
245 type: object
246 models.Chapter:
247 properties:
248 id:
249 type: integer
250 name:
251 type: string
252 type: object
91 models.Game: 253 models.Game:
92 properties: 254 properties:
93 id: 255 id:
@@ -97,9 +259,15 @@ definitions:
97 name: 259 name:
98 type: string 260 type: string
99 type: object 261 type: object
100 models.LoginResponse: 262 models.Links:
101 properties: 263 properties:
102 token: 264 p2sr:
265 type: string
266 stream:
267 type: string
268 twitch:
269 type: string
270 youtube:
103 type: string 271 type: string
104 type: object 272 type: object
105 models.Map: 273 models.Map:
@@ -126,10 +294,6 @@ definitions:
126 score_count: 294 score_count:
127 type: integer 295 type: integer
128 type: object 296 type: object
129 models.MapRecords:
130 properties:
131 records: {}
132 type: object
133 models.MapRoute: 297 models.MapRoute:
134 properties: 298 properties:
135 category: 299 category:
@@ -159,52 +323,6 @@ definitions:
159 $ref: '#/definitions/models.MapRoute' 323 $ref: '#/definitions/models.MapRoute'
160 type: array 324 type: array
161 type: object 325 type: object
162 models.MapSummaryResponse:
163 properties:
164 map:
165 $ref: '#/definitions/models.Map'
166 summary:
167 $ref: '#/definitions/models.MapSummary'
168 type: object
169 models.ProfileResponse:
170 properties:
171 avatar_link:
172 type: string
173 country_code:
174 type: string
175 profile:
176 type: boolean
177 scores_mp:
178 items:
179 $ref: '#/definitions/models.ScoreResponse'
180 type: array
181 scores_sp:
182 items:
183 $ref: '#/definitions/models.ScoreResponse'
184 type: array
185 steam_id:
186 type: string
187 user_name:
188 type: string
189 type: object
190 models.RankingsResponse:
191 properties:
192 rankings_mp:
193 items:
194 $ref: '#/definitions/models.UserRanking'
195 type: array
196 rankings_sp:
197 items:
198 $ref: '#/definitions/models.UserRanking'
199 type: array
200 type: object
201 models.RecordResponse:
202 properties:
203 score_count:
204 type: integer
205 score_time:
206 type: integer
207 type: object
208 models.Response: 326 models.Response:
209 properties: 327 properties:
210 data: {} 328 data: {}
@@ -213,31 +331,19 @@ definitions:
213 success: 331 success:
214 type: boolean 332 type: boolean
215 type: object 333 type: object
216 models.ScoreResponse: 334 models.Title:
217 properties:
218 map_id:
219 type: integer
220 records: {}
221 type: object
222 models.SearchResponse:
223 properties: 335 properties:
224 maps: 336 color:
225 items: 337 type: string
226 $ref: '#/definitions/models.MapShort' 338 name:
227 type: array 339 type: string
228 players:
229 items:
230 $ref: '#/definitions/models.UserShort'
231 type: array
232 type: object 340 type: object
233 models.UserRanking: 341 models.UserRanking:
234 properties: 342 properties:
235 total_score: 343 total_score:
236 type: integer 344 type: integer
237 user_id: 345 user:
238 type: string 346 $ref: '#/definitions/models.UserShort'
239 user_name:
240 type: string
241 type: object 347 type: object
242 models.UserShort: 348 models.UserShort:
243 properties: 349 properties:
@@ -275,7 +381,7 @@ paths:
275 - $ref: '#/definitions/models.Response' 381 - $ref: '#/definitions/models.Response'
276 - properties: 382 - properties:
277 data: 383 data:
278 $ref: '#/definitions/models.ChapterMapsResponse' 384 $ref: '#/definitions/handlers.ChapterMapsResponse'
279 type: object 385 type: object
280 "400": 386 "400":
281 description: Bad Request 387 description: Bad Request
@@ -349,7 +455,7 @@ paths:
349 - $ref: '#/definitions/models.Response' 455 - $ref: '#/definitions/models.Response'
350 - properties: 456 - properties:
351 data: 457 data:
352 $ref: '#/definitions/models.ChaptersResponse' 458 $ref: '#/definitions/handlers.ChaptersResponse'
353 type: object 459 type: object
354 "400": 460 "400":
355 description: Bad Request 461 description: Bad Request
@@ -372,7 +478,7 @@ paths:
372 - $ref: '#/definitions/models.Response' 478 - $ref: '#/definitions/models.Response'
373 - properties: 479 - properties:
374 data: 480 data:
375 $ref: '#/definitions/models.LoginResponse' 481 $ref: '#/definitions/handlers.LoginResponse'
376 type: object 482 type: object
377 "400": 483 "400":
378 description: Bad Request 484 description: Bad Request
@@ -380,6 +486,54 @@ paths:
380 $ref: '#/definitions/models.Response' 486 $ref: '#/definitions/models.Response'
381 tags: 487 tags:
382 - login 488 - login
489 /logs/mod:
490 get:
491 description: Get mod logs.
492 parameters:
493 - description: JWT Token
494 in: header
495 name: Authorization
496 required: true
497 type: string
498 produces:
499 - application/json
500 responses:
501 "200":
502 description: OK
503 schema:
504 allOf:
505 - $ref: '#/definitions/models.Response'
506 - properties:
507 data:
508 $ref: '#/definitions/handlers.LogsResponse'
509 type: object
510 "400":
511 description: Bad Request
512 schema:
513 $ref: '#/definitions/models.Response'
514 tags:
515 - logs
516 /logs/score:
517 get:
518 description: Get score logs of every player.
519 produces:
520 - application/json
521 responses:
522 "200":
523 description: OK
524 schema:
525 allOf:
526 - $ref: '#/definitions/models.Response'
527 - properties:
528 data:
529 $ref: '#/definitions/handlers.ScoreLogsResponse'
530 type: object
531 "400":
532 description: Bad Request
533 schema:
534 $ref: '#/definitions/models.Response'
535 tags:
536 - logs
383 /maps/{id}/image: 537 /maps/{id}/image:
384 put: 538 put:
385 description: Edit map image with specified map id. 539 description: Edit map image with specified map id.
@@ -399,7 +553,7 @@ paths:
399 name: request 553 name: request
400 required: true 554 required: true
401 schema: 555 schema:
402 $ref: '#/definitions/models.EditMapImageRequest' 556 $ref: '#/definitions/handlers.EditMapImageRequest'
403 produces: 557 produces:
404 - application/json 558 - application/json
405 responses: 559 responses:
@@ -410,7 +564,7 @@ paths:
410 - $ref: '#/definitions/models.Response' 564 - $ref: '#/definitions/models.Response'
411 - properties: 565 - properties:
412 data: 566 data:
413 $ref: '#/definitions/models.EditMapImageRequest' 567 $ref: '#/definitions/handlers.EditMapImageRequest'
414 type: object 568 type: object
415 "400": 569 "400":
416 description: Bad Request 570 description: Bad Request
@@ -437,12 +591,7 @@ paths:
437 - $ref: '#/definitions/models.Response' 591 - $ref: '#/definitions/models.Response'
438 - properties: 592 - properties:
439 data: 593 data:
440 allOf: 594 $ref: '#/definitions/handlers.MapLeaderboardsResponse'
441 - $ref: '#/definitions/models.Map'
442 - properties:
443 data:
444 $ref: '#/definitions/models.MapRecords'
445 type: object
446 type: object 595 type: object
447 "400": 596 "400":
448 description: Bad Request 597 description: Bad Request
@@ -493,7 +642,7 @@ paths:
493 - $ref: '#/definitions/models.Response' 642 - $ref: '#/definitions/models.Response'
494 - properties: 643 - properties:
495 data: 644 data:
496 $ref: '#/definitions/models.RecordResponse' 645 $ref: '#/definitions/handlers.RecordResponse'
497 type: object 646 type: object
498 "400": 647 "400":
499 description: Bad Request 648 description: Bad Request
@@ -524,7 +673,7 @@ paths:
524 name: request 673 name: request
525 required: true 674 required: true
526 schema: 675 schema:
527 $ref: '#/definitions/models.DeleteMapSummaryRequest' 676 $ref: '#/definitions/handlers.DeleteMapSummaryRequest'
528 produces: 677 produces:
529 - application/json 678 - application/json
530 responses: 679 responses:
@@ -535,7 +684,7 @@ paths:
535 - $ref: '#/definitions/models.Response' 684 - $ref: '#/definitions/models.Response'
536 - properties: 685 - properties:
537 data: 686 data:
538 $ref: '#/definitions/models.DeleteMapSummaryRequest' 687 $ref: '#/definitions/handlers.DeleteMapSummaryRequest'
539 type: object 688 type: object
540 "400": 689 "400":
541 description: Bad Request 690 description: Bad Request
@@ -561,7 +710,7 @@ paths:
561 - $ref: '#/definitions/models.Response' 710 - $ref: '#/definitions/models.Response'
562 - properties: 711 - properties:
563 data: 712 data:
564 $ref: '#/definitions/models.MapSummaryResponse' 713 $ref: '#/definitions/handlers.MapSummaryResponse'
565 type: object 714 type: object
566 "400": 715 "400":
567 description: Bad Request 716 description: Bad Request
@@ -587,7 +736,7 @@ paths:
587 name: request 736 name: request
588 required: true 737 required: true
589 schema: 738 schema:
590 $ref: '#/definitions/models.CreateMapSummaryRequest' 739 $ref: '#/definitions/handlers.CreateMapSummaryRequest'
591 produces: 740 produces:
592 - application/json 741 - application/json
593 responses: 742 responses:
@@ -598,7 +747,7 @@ paths:
598 - $ref: '#/definitions/models.Response' 747 - $ref: '#/definitions/models.Response'
599 - properties: 748 - properties:
600 data: 749 data:
601 $ref: '#/definitions/models.CreateMapSummaryRequest' 750 $ref: '#/definitions/handlers.CreateMapSummaryRequest'
602 type: object 751 type: object
603 "400": 752 "400":
604 description: Bad Request 753 description: Bad Request
@@ -624,7 +773,7 @@ paths:
624 name: request 773 name: request
625 required: true 774 required: true
626 schema: 775 schema:
627 $ref: '#/definitions/models.EditMapSummaryRequest' 776 $ref: '#/definitions/handlers.EditMapSummaryRequest'
628 produces: 777 produces:
629 - application/json 778 - application/json
630 responses: 779 responses:
@@ -635,7 +784,7 @@ paths:
635 - $ref: '#/definitions/models.Response' 784 - $ref: '#/definitions/models.Response'
636 - properties: 785 - properties:
637 data: 786 data:
638 $ref: '#/definitions/models.EditMapSummaryRequest' 787 $ref: '#/definitions/handlers.EditMapSummaryRequest'
639 type: object 788 type: object
640 "400": 789 "400":
641 description: Bad Request 790 description: Bad Request
@@ -664,7 +813,7 @@ paths:
664 - $ref: '#/definitions/models.Response' 813 - $ref: '#/definitions/models.Response'
665 - properties: 814 - properties:
666 data: 815 data:
667 $ref: '#/definitions/models.ProfileResponse' 816 $ref: '#/definitions/handlers.ProfileResponse'
668 type: object 817 type: object
669 "400": 818 "400":
670 description: Bad Request 819 description: Bad Request
@@ -696,7 +845,7 @@ paths:
696 - $ref: '#/definitions/models.Response' 845 - $ref: '#/definitions/models.Response'
697 - properties: 846 - properties:
698 data: 847 data:
699 $ref: '#/definitions/models.ProfileResponse' 848 $ref: '#/definitions/handlers.ProfileResponse'
700 type: object 849 type: object
701 "400": 850 "400":
702 description: Bad Request 851 description: Bad Request
@@ -753,7 +902,7 @@ paths:
753 - $ref: '#/definitions/models.Response' 902 - $ref: '#/definitions/models.Response'
754 - properties: 903 - properties:
755 data: 904 data:
756 $ref: '#/definitions/models.RankingsResponse' 905 $ref: '#/definitions/handlers.RankingsResponse'
757 type: object 906 type: object
758 "400": 907 "400":
759 description: Bad Request 908 description: Bad Request
@@ -779,7 +928,7 @@ paths:
779 - $ref: '#/definitions/models.Response' 928 - $ref: '#/definitions/models.Response'
780 - properties: 929 - properties:
781 data: 930 data:
782 $ref: '#/definitions/models.SearchResponse' 931 $ref: '#/definitions/handlers.SearchResponse'
783 type: object 932 type: object
784 "400": 933 "400":
785 description: Bad Request 934 description: Bad Request
@@ -800,7 +949,7 @@ paths:
800 - $ref: '#/definitions/models.Response' 949 - $ref: '#/definitions/models.Response'
801 - properties: 950 - properties:
802 data: 951 data:
803 $ref: '#/definitions/models.LoginResponse' 952 $ref: '#/definitions/handlers.LoginResponse'
804 type: object 953 type: object
805 "404": 954 "404":
806 description: Not Found 955 description: Not Found
@@ -820,7 +969,7 @@ paths:
820 - $ref: '#/definitions/models.Response' 969 - $ref: '#/definitions/models.Response'
821 - properties: 970 - properties:
822 data: 971 data:
823 $ref: '#/definitions/models.LoginResponse' 972 $ref: '#/definitions/handlers.LoginResponse'
824 type: object 973 type: object
825 "404": 974 "404":
826 description: Not Found 975 description: Not Found
@@ -849,7 +998,7 @@ paths:
849 - $ref: '#/definitions/models.Response' 998 - $ref: '#/definitions/models.Response'
850 - properties: 999 - properties:
851 data: 1000 data:
852 $ref: '#/definitions/models.ProfileResponse' 1001 $ref: '#/definitions/handlers.ProfileResponse'
853 type: object 1002 type: object
854 "400": 1003 "400":
855 description: Bad Request 1004 description: Bad Request