cosmoEagle/leetcode-api
0
1import { Request, Response } from 'express';2import * as gqlQueries from './GQLQueries';3import * as formatUtils from './FormatUtils';4import * as controllers from './Controllers';5import { TransformedUserDataRequest } from './types';6 7export const userData = (req: TransformedUserDataRequest, res: Response) => {8 controllers.fetchUserDetails(9 req.body,10 res,11 formatUtils.formatUserData,12 gqlQueries.userProfileQuery13 );14};15 16export const userBadges = (req: TransformedUserDataRequest, res: Response) => {17 controllers.fetchUserDetails(18 req.body,19 res,20 formatUtils.formatBadgesData,21 gqlQueries.userProfileQuery22 );23};24 25export const userContest = (req: TransformedUserDataRequest, res: Response) => {26 controllers.fetchUserDetails(27 req.body,28 res,29 formatUtils.formatContestData,30 gqlQueries.contestQuery31 );32};33 34export const userContestHistory = (35 req: TransformedUserDataRequest,36 res: Response37) => {38 controllers.fetchUserDetails(39 req.body,40 res,41 formatUtils.formatContestHistoryData,42 gqlQueries.contestQuery43 );44};45 46export const solvedProblem = (47 req: TransformedUserDataRequest,48 res: Response49) => {50 controllers.fetchUserDetails(51 req.body,52 res,53 formatUtils.formatSolvedProblemsData,54 gqlQueries.userProfileQuery55 );56};57 58export const submission = (req: TransformedUserDataRequest, res: Response) => {59 controllers.fetchUserDetails(60 req.body,61 res,62 formatUtils.formatSubmissionData,63 gqlQueries.submissionQuery64 );65};66 67export const acSubmission = (68 req: TransformedUserDataRequest,69 res: Response70) => {71 controllers.fetchUserDetails(72 req.body,73 res,74 formatUtils.formatAcSubmissionData,75 gqlQueries.AcSubmissionQuery76 );77};78 79export const calendar = (req: TransformedUserDataRequest, res: Response) => {80 controllers.fetchUserDetails(81 req.body,82 res,83 formatUtils.formatSubmissionCalendarData,84 gqlQueries.userProfileQuery85 );86};87 88//Problems Details89export const dailyProblem = (_req: Request, res: Response) => {90 controllers.fetchSingleProblem(91 res,92 formatUtils.formatDailyData,93 gqlQueries.dailyProblemQuery,94 null95 );96};97 98export const selectProblem = (req: Request, res: Response) => {99 const title = req.query.titleSlug as string;100 if (title !== undefined) {101 controllers.fetchSingleProblem(102 res,103 formatUtils.formatQuestionData,104 gqlQueries.selectProblemQuery,105 title106 );107 } else {108 res.status(400).json({109 error: 'Missing or invalid query parameter: titleSlug',110 solution: 'put query after select',111 example: 'localhost:3000/select?titleSlug=two-sum',112 });113 }114};115 116export const problems = (117 req: Request<{}, {}, {}, { limit: number; skip: number; tags: string; difficulty: string }>,118 res: Response119) => {120 const difficulty=req.query.difficulty;121 const limit = req.query.limit;122 const skip = req.query.skip;123 const tags = req.query.tags;124 125 controllers.fetchProblems(126 { limit, skip, tags, difficulty },127 res,128 formatUtils.formatProblemsData,129 gqlQueries.problemListQuery130 );131};132 133 134export const trendingCategoryTopics = (_req: Request, res: Response) => {135 const first = parseInt(_req.query.first as string);136 if (!isNaN(first)) {137 controllers.fetchTrendingTopics(138 { first },139 res,140 formatUtils.formatTrendingCategoryTopicData,141 gqlQueries.trendingDiscussQuery142 );143 }144 else {145 res.status(400).json({146 error: 'Missing or invalid query parameter: limit',147 solution: 'put query after discussion',148 example: 'localhost:3000/trendingDiscuss?first=20',149 });150 }151 152};153 154export const languageStats = (_req: Request, res: Response) => {155 const username = _req.query.username as string;156 if (username) {157 controllers.fetchDataRawFormat(158 { username },159 res,160 gqlQueries.languageStatsQuery161 );162 }163 else {164 res.status(400).json({165 error: 'Missing or invalid query parameter: username',166 solution: 'put query after discussion',167 example: 'localhost:3000/languageStats?username=uwi',168 });169 }170 171};