File size: 3,934 Bytes
3d23b0f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import { FastifyRequest, FastifyReply } from 'fastify';
import * as service from '../services';
import type { ContestRankingQuery } from '../types';

export async function getUserRatingHandler(
    request: FastifyRequest<{ Querystring: ContestRankingQuery }>,
    reply: FastifyReply
) {
    const { username } = request.query;
    const data = await service.getUserRating(username);
    return reply.send(data);
}

export async function getUserProfileHandler(
    request: FastifyRequest<{ Params: { username: string } }>,
    reply: FastifyReply
) {
    const { username } = request.params;
    const data = await service.getUserProfile(username);
    return reply.send(data);
}

export async function getUserDetailsHandler(
    request: FastifyRequest<{ Params: { username: string } }>,
    reply: FastifyReply
) {
    const { username } = request.params;
    const data = await service.getUserDetails(username);
    return reply.send(data);
}

export async function getUserBadgesHandler(
    request: FastifyRequest<{ Params: { username: string } }>,
    reply: FastifyReply
) {
    const { username } = request.params;
    const data = await service.getUserBadges(username);
    return reply.send(data);
}

export async function getUserSolvedHandler(
    request: FastifyRequest<{ Params: { username: string } }>,
    reply: FastifyReply
) {
    const { username } = request.params;
    const data = await service.getUserSolved(username);
    return reply.send(data);
}

export async function getUserContestHandler(
    request: FastifyRequest<{ Params: { username: string } }>,
    reply: FastifyReply
) {
    const { username } = request.params;
    const data = await service.getUserContest(username);
    return reply.send(data);
}

export async function getUserContestHistoryHandler(
    request: FastifyRequest<{ Params: { username: string } }>,
    reply: FastifyReply
) {
    const { username } = request.params;
    const data = await service.getUserContestHistory(username);
    return reply.send(data);
}

export async function getUserSubmissionHandler(
    request: FastifyRequest<{ Params: { username: string }; Querystring: { limit?: string } }>,
    reply: FastifyReply
) {
    const { username } = request.params;
    const limit = parseInt(request.query.limit || '20', 10);
    const data = await service.getUserSubmission(username, limit);
    return reply.send(data);
}

export async function getUserAcSubmissionHandler(
    request: FastifyRequest<{ Params: { username: string }; Querystring: { limit?: string } }>,
    reply: FastifyReply
) {
    const { username } = request.params;
    const limit = parseInt(request.query.limit || '20', 10);
    const data = await service.getUserAcSubmission(username, limit);
    return reply.send(data);
}

export async function getUserCalendarHandler(
    request: FastifyRequest<{ Params: { username: string }; Querystring: { year?: string } }>,
    reply: FastifyReply
) {
    const { username } = request.params;
    const year = parseInt(request.query.year || '0', 10);
    const data = await service.getUserCalendar(username, year);
    return reply.send(data);
}

export async function getUserSkillHandler(
    request: FastifyRequest<{ Params: { username: string } }>,
    reply: FastifyReply
) {
    const { username } = request.params;
    const data = await service.getUserSkill(username);
    return reply.send(data);
}

export async function getUserLanguageHandler(
    request: FastifyRequest<{ Params: { username: string } }>,
    reply: FastifyReply
) {
    const { username } = request.params;
    const data = await service.getUserLanguage(username);
    return reply.send(data);
}

export async function getUserProgressHandler(
    request: FastifyRequest<{ Params: { username: string } }>,
    reply: FastifyReply
) {
    const { username } = request.params;
    const data = await service.getUserProgress(username);
    return reply.send(data);
}