| 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; | |