File size: 1,593 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 | import { FastifyRequest, FastifyReply } from 'fastify';
import * as service from './service';
import type {
UserQuery,
SubmissionsQuery,
UserPostsQuery,
LeaderboardQuery,
PromotionalEventsQuery
} from './types';
export async function getUserRatingHandler(
request: FastifyRequest<{ Querystring: UserQuery }>,
reply: FastifyReply
) {
const { username } = request.query;
const data = await service.getUserRating(username);
return reply.send(data);
}
export async function getUserSubmissionsHandler(
request: FastifyRequest<{ Body: SubmissionsQuery }>,
reply: FastifyReply
) {
const data = await service.getUserSubmissions(request.body);
return reply.send(data);
}
export async function getUserPostsHandler(
request: FastifyRequest<{ Params: { username: string }, Querystring: Omit<UserPostsQuery, 'username'> }>,
reply: FastifyReply
) {
const { username } = request.params;
const { fetch_type, page } = request.query;
const data = await service.getUserPosts({ username, fetch_type, page });
return reply.send(data);
}
export async function getPromotionalEventsHandler(
request: FastifyRequest<{ Querystring: PromotionalEventsQuery }>,
reply: FastifyReply
) {
const data = await service.getPromotionalEvents(request.query);
return reply.send(data);
}
export async function getContestLeaderboardHandler(
request: FastifyRequest<{ Querystring: LeaderboardQuery }>,
reply: FastifyReply
) {
const data = await service.getContestLeaderboard(request.query);
return reply.send(data);
}
|