File size: 2,627 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 |
import { FastifyPluginAsync } from 'fastify';
import * as handlers from '../handlers';
import * as schemas from '../schemas';
import validateUsername from '../../../shared/middlewares/validate';
const userRoutes: FastifyPluginAsync = async (fastify) => {
fastify.addHook('preHandler', validateUsername);
fastify.get<{ Params: { username: string } }>(
'/:username',
{ schema: schemas.userDetailsSchema },
handlers.getUserDetailsHandler
);
fastify.get<{ Params: { username: string } }>(
'/:username/badges',
{ schema: schemas.userBadgesSchema },
handlers.getUserBadgesHandler
);
fastify.get<{ Params: { username: string } }>(
'/:username/solved',
{ schema: schemas.userSolvedSchema },
handlers.getUserSolvedHandler
);
fastify.get<{ Params: { username: string } }>(
'/:username/contest',
{ schema: schemas.userContestSchema },
handlers.getUserContestHandler
);
fastify.get<{ Params: { username: string } }>(
'/:username/contest/history',
{ schema: schemas.userContestHistorySchema },
handlers.getUserContestHistoryHandler
);
fastify.get<{ Params: { username: string }; Querystring: { limit?: string } }>(
'/:username/submission',
{ schema: schemas.userSubmissionSchema },
handlers.getUserSubmissionHandler
);
fastify.get<{ Params: { username: string }; Querystring: { limit?: string } }>(
'/:username/accepted-submission',
{ schema: { ...schemas.userSubmissionSchema, summary: 'Get user accepted submissions' } },
handlers.getUserAcSubmissionHandler
);
fastify.get<{ Params: { username: string }; Querystring: { year?: string } }>(
'/:username/calendar',
{ schema: schemas.userCalendarSchema },
handlers.getUserCalendarHandler
);
fastify.get<{ Params: { username: string } }>(
'/:username/skill',
{ schema: schemas.userSkillSchema },
handlers.getUserSkillHandler
);
fastify.get<{ Params: { username: string } }>(
'/:username/profile',
{ schema: schemas.userProfileSchema },
handlers.getUserProfileHandler
);
fastify.get<{ Params: { username: string } }>(
'/:username/language',
{ schema: schemas.userLanguageSchema },
handlers.getUserLanguageHandler
);
fastify.get<{ Params: { username: string } }>(
'/:username/progress',
{ schema: schemas.userProgressSchema },
handlers.getUserProgressHandler
);
};
export default userRoutes;
|