anujjoshi3105's picture
first commit
3d23b0f
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;