Skip to content

Commit 7b3a92a

Browse files
committed
feat: migrate /user/problem_stats & add section for dev server
1 parent 3d130a9 commit 7b3a92a

File tree

5 files changed

+95
-58
lines changed

5 files changed

+95
-58
lines changed

src/main.tsp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ using TypeSpec.Versioning;
3333
[GitHub에서 보기](https://github.com/solvedac/unofficial-documentation)
3434
3535
36-
**주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51))
36+
**주의**: (2023/03/08~) CORS 문제로 인해 API는 사이트 내에서 호출할 수 없으므로 별도 도구를 이용해주십시오. ([#51](https://github.com/solvedac/unofficial-documentation/issues/51)) <br>
37+
**참고**: 본 저장소를 내려받고, `pnpm dev`를 실행하시면 로컬 개발 서버를 프록시로 삼아 CORS를 무시할 수 있습니다.
3738
3839
3940
![@solvedac/unofficial-documentation banner](./assets/solvedac-ud-compact.png)

src/openapi.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ openapi: "3.1.0"
55
paths:
66
/account/verify_credentials:
77
$ref: "./paths/account/verify_credentials.yaml#/paths/Path"
8-
/user/problem_stats:
9-
$ref: "./paths/user/problem_stats.yaml#/paths/Path"
108

119
components:
1210
schemas:

src/operations/user/_barrel.tsp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
import "./show.tsp";
22
import "./top_100.tsp";
33
import "./organizations.tsp";
4+
import "./problem_stats.tsp";

src/operations/user/problem_stats.tsp

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
using TypeSpec.Http;
2+
using TypeSpec.OpenAPI;
3+
4+
namespace SolvedAC;
5+
6+
/**
7+
* 해당 핸들의 사용자가 푼 문제 수를 문제 수준별로 나누어 가져옵니다.
8+
*
9+
* @return
10+
* 문제 수준별 푼 문제 수가 담긴 목록
11+
*/
12+
@summary("문제 수준별로 사용자가 푼 문제 수 가져오기")
13+
@tag("user")
14+
@get
15+
@route("/user/problem_stats")
16+
op getUserProblemStats(
17+
/**
18+
* 요청할 사용자명
19+
*/
20+
@query
21+
handle: string,
22+
): GetUserProblemStats.Ok;
23+
24+
namespace GetUserProblemStats {
25+
/**
26+
* @example
27+
* [
28+
* { "level": 0, "solved": 33, "tried": 3, "partial": 2, "total": 7078 },
29+
* { "level": 1, "solved": 108, "tried": 0, "partial": 0, "total": 154 },
30+
* { "level": 2, "solved": 155, "tried": 0, "partial": 0, "total": 283 },
31+
* { "level": 3, "solved": 341, "tried": 0, "partial": 0, "total": 703 },
32+
* { "level": 4, "solved": 365, "tried": 0, "partial": 0, "total": 902 },
33+
* { "level": 5, "solved": 227, "tried": 0, "partial": 0, "total": 783 },
34+
* { "level": 6, "solved": 193, "tried": 0, "partial": 0, "total": 783 },
35+
* { "level": 7, "solved": 183, "tried": 0, "partial": 0, "total": 847 },
36+
* { "level": 8, "solved": 180, "tried": 0, "partial": 0, "total": 892 },
37+
* { "level": 9, "solved": 165, "tried": 0, "partial": 0, "total": 972 },
38+
* { "level": 10, "solved": 154, "tried": 0, "partial": 0, "total": 1051 },
39+
* { "level": 11, "solved": 186, "tried": 1, "partial": 0, "total": 940 },
40+
* { "level": 12, "solved": 196, "tried": 0, "partial": 0, "total": 1431 },
41+
* { "level": 13, "solved": 154, "tried": 3, "partial": 0, "total": 1318 },
42+
* { "level": 14, "solved": 131, "tried": 3, "partial": 0, "total": 1145 },
43+
* { "level": 15, "solved": 104, "tried": 3, "partial": 0, "total": 1041 },
44+
* { "level": 16, "solved": 120, "tried": 2, "partial": 0, "total": 1185 },
45+
* { "level": 17, "solved": 110, "tried": 6, "partial": 0, "total": 1147 },
46+
* { "level": 18, "solved": 98, "tried": 6, "partial": 1, "total": 1181 },
47+
* { "level": 19, "solved": 83, "tried": 4, "partial": 0, "total": 1147 },
48+
* { "level": 20, "solved": 64, "tried": 5, "partial": 0, "total": 891 },
49+
* { "level": 21, "solved": 52, "tried": 3, "partial": 0, "total": 930 },
50+
* { "level": 22, "solved": 32, "tried": 6, "partial": 1, "total": 871 },
51+
* { "level": 23, "solved": 23, "tried": 2, "partial": 1, "total": 615 },
52+
* { "level": 24, "solved": 13, "tried": 1, "partial": 0, "total": 450 },
53+
* { "level": 25, "solved": 7, "tried": 1, "partial": 0, "total": 356 },
54+
* { "level": 26, "solved": 4, "tried": 0, "partial": 0, "total": 283 },
55+
* { "level": 27, "solved": 1, "tried": 0, "partial": 0, "total": 150 },
56+
* { "level": 28, "solved": 1, "tried": 0, "partial": 1, "total": 92 },
57+
* { "level": 29, "solved": 1, "tried": 0, "partial": 0, "total": 34 },
58+
* { "level": 30, "solved": 2, "tried": 0, "partial": 0, "total": 28 }
59+
* ]
60+
*/
61+
@extension(XInternal, true)
62+
model Ok {
63+
@statusCode status: 200;
64+
@body data: Array<ProblemStat>;
65+
}
66+
67+
@extension(XInternal, true)
68+
model ProblemStat {
69+
level: ProblemLevel;
70+
71+
/**
72+
* solved.ac에 등록된 해당 수준 문제 수입니다.
73+
* @example 0
74+
*/
75+
total: uint64;
76+
77+
/**
78+
* 사용자가 푼 문제 수입니다.
79+
*/
80+
solved: uint64;
81+
82+
/**
83+
* 사용자가 부분 성공한 문제 수입니다.
84+
*/
85+
partial: uint64;
86+
87+
/**
88+
* 사용자가 시도해 본 문제 수입니다.
89+
*/
90+
tried: uint64;
91+
}
92+
}

src/paths/user/problem_stats.yaml

Lines changed: 0 additions & 55 deletions
This file was deleted.

0 commit comments

Comments
 (0)