Commit | Line | Data |
---|---|---|
89021f18 BA |
1 | let router = require("express").Router(); |
2 | const access = require("../utils/access"); | |
3 | const ProblemModel = require("../models/Problem"); | |
4 | const sanitizeHtml = require('sanitize-html'); | |
5 | ||
866842c3 | 6 | router.post("/problems", access.logged, access.ajax, (req,res) => { |
0234201f BA |
7 | if (ProblemModel.checkProblem(req.body.prob)) { |
8 | const problem = { | |
866842c3 BA |
9 | vid: req.body.prob.vid, |
10 | fen: req.body.prob.fen, | |
11 | uid: req.userId, | |
12 | instruction: sanitizeHtml(req.body.prob.instruction), | |
13 | solution: sanitizeHtml(req.body.prob.solution), | |
14 | }; | |
0234201f BA |
15 | ProblemModel.create(problem, (err, ret) => { |
16 | res.json(err || ret); | |
866842c3 BA |
17 | }); |
18 | } | |
19 | else | |
20 | res.json({}); | |
21 | }); | |
22 | ||
e57c4de4 | 23 | router.get("/problems", access.ajax, (req,res) => { |
84fc0f02 | 24 | const probId = req.query["id"]; |
68e19a44 BA |
25 | const cursor = req.query["cursor"]; |
26 | if (!!probId && !!probId.match(/^[0-9]+$/)) { | |
84fc0f02 | 27 | ProblemModel.getOne(probId, (err, problem) => { |
866842c3 | 28 | res.json(err || {problem: problem}); |
89021f18 | 29 | }); |
68e19a44 | 30 | } else if (!!cursor && !!cursor.match(/^[0-9]+$/)) { |
84fc0f02 BA |
31 | const onlyMine = (req.query["mode"] == "mine"); |
32 | const uid = parseInt(req.query["uid"]); | |
33 | ProblemModel.getNext(uid, onlyMine, cursor, (err, problems) => { | |
0234201f | 34 | res.json(err || { problems: problems }); |
89021f18 BA |
35 | }); |
36 | } | |
37 | }); | |
38 | ||
89021f18 | 39 | router.put("/problems", access.logged, access.ajax, (req,res) => { |
604b951e | 40 | let obj = req.body.prob; |
0234201f | 41 | if (ProblemModel.checkProblem(obj)) { |
866842c3 BA |
42 | obj.instruction = sanitizeHtml(obj.instruction); |
43 | obj.solution = sanitizeHtml(obj.solution); | |
44 | ProblemModel.safeUpdate(obj, req.userId); | |
45 | } | |
46 | res.json({}); | |
89021f18 BA |
47 | }); |
48 | ||
49 | router.delete("/problems", access.logged, access.ajax, (req,res) => { | |
50 | const pid = req.query.id; | |
866842c3 BA |
51 | if (pid.toString().match(/^[0-9]+$/)) |
52 | ProblemModel.safeRemove(pid, req.userId); | |
53 | res.json({}); | |
89021f18 BA |
54 | }); |
55 | ||
56 | module.exports = router; |