-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
completed backend of question router
- Loading branch information
1 parent
9af9252
commit 5bbbea6
Showing
2 changed files
with
160 additions
and
0 deletions.
There are no files selected for viewing
157 changes: 157 additions & 0 deletions
157
Backend-Realm/routers/questionRouters/questionRouters.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,157 @@ | ||
const express = require("express"); | ||
const { User, Question, Answer } = require("../../DataBase/db"); | ||
const questionRouters = express.Router(); | ||
const { z } = require("zod"); | ||
const jwt = require("jsonwebtoken"); | ||
const { SECRET_KEY } = require("../../config"); | ||
const { authMiddleware } = require("../authMiddleware/authMiddleware"); | ||
|
||
questionRouters.post("/addques", authMiddleware, async (req, res) => { | ||
const reqQues = { | ||
title: req.body.title, | ||
author: req.body.author, | ||
}; | ||
const ques = { | ||
title: reqQues.title, | ||
author: reqQues.author, | ||
likes: 0, | ||
dislikes: 0, | ||
}; | ||
|
||
try { | ||
const existingQues = await Question.findOne({ title: ques.title }); | ||
if (existingQues) { | ||
return res.status(410).json({ message: "Question Already Asked!!!" }); | ||
} | ||
const dbQues = await Question.create(ques); | ||
res.json({ | ||
message: "Question Added", | ||
quesId: dbQues._id, | ||
title: dbQues.title, | ||
}); | ||
} catch { | ||
res.status(411).json({ message: "Server Error" }); | ||
} | ||
}); | ||
|
||
questionRouters.get("/allques", authMiddleware, async (req, res) => { | ||
try { | ||
const filter = req.query.filter || ""; | ||
const allQues = await Question.find({ title: { $regex: filter } }); | ||
const ques = allQues.map((que) => ({ | ||
title: que.title, | ||
author: que.author, | ||
likes: que.likes, | ||
dislikes: que.dislikes, | ||
quesId: que._id, | ||
})); | ||
res.json({ allQues: ques }); | ||
} catch { | ||
res.json({ allQues: [] }); | ||
} | ||
}); | ||
|
||
questionRouters.post("/addanswer", authMiddleware, async (req, res) => { | ||
try { | ||
const content = req.body.content; | ||
const author = req.body.author; | ||
const quesId = req.body.quesId; | ||
const answer = { | ||
content: content, | ||
author: author, | ||
likes: 0, | ||
dislikes: 0, | ||
}; | ||
const dbAnswer = await Answer.create(answer) | ||
const updatedQues = await Question.findByIdAndUpdate( | ||
quesId, | ||
{ | ||
$push: { answers: dbAnswer._id }, | ||
}, | ||
{ new: true } | ||
).exec(); | ||
res.json({message:"Answer Added"}) | ||
} catch { | ||
res.status(410).json({message:"Error while Adding Answer"}) | ||
} | ||
}); | ||
|
||
questionRouters.post("/question",authMiddleware,async(req,res)=>{ | ||
try{ | ||
const quesId = req.body.quesId; | ||
const ques = await Question.findById(quesId); | ||
console.log("hehehehe my question is", ques.content); | ||
console.log(ques) | ||
const answerList = ques.answers; | ||
const n = answerList.length | ||
var answers =[]; | ||
for( var i=0; i<n;i++){ | ||
const ans = await Answer.findById(answerList[i]); | ||
const temp = {content:ans.content, author: ans.author, likes:ans.likes, dislikes:ans.dislikes, ansdbId:ans._id}; | ||
answers.push(temp); | ||
} | ||
console.log("answers are ", answers) | ||
res.json({title:ques.title, author:ques.author, likes:ques.likes, dislikes:ques.dislikes, answers:answers}) | ||
} | ||
catch{ | ||
res.json({title:"",author:"",likes:0,dislikes:0,answers:[]}) | ||
} | ||
}) | ||
|
||
questionRouters.post("/likeques",authMiddleware,async(req,res)=>{ | ||
//try{ | ||
const quesId = req.body.quesId; | ||
|
||
await Question.findByIdAndUpdate( | ||
quesId, | ||
{ $inc: { likes: 1 } }, | ||
{ new: true }); | ||
return res.json({message:"Liked"}) | ||
// } | ||
//catch{ | ||
//res.status(410).json({message:"Error"}) | ||
//} | ||
}) | ||
|
||
questionRouters.post("/dislikeques",authMiddleware,async(req,res)=>{ | ||
try{ | ||
const quesId = req.body.quesId; | ||
|
||
await Question.findByIdAndUpdate( | ||
quesId, | ||
{ $inc: { dislikes: 1 } }, | ||
|
||
{ new: true }); | ||
return res.json({message:"Disliked"}) | ||
}catch{ | ||
res.status(410).json({message:"Error"}) | ||
} | ||
}) | ||
questionRouters.post("/likeanswer",authMiddleware,async(req,res)=>{ | ||
try{ | ||
const ansId = req.body.ansId; | ||
|
||
await Answer.findByIdAndUpdate( | ||
ansId, | ||
{ $inc: { likes: 1 } }, | ||
{ new: true }); | ||
return res.json({message:"Liked"}) | ||
}catch{ | ||
res.status(410).json({message:"Error"}) | ||
} | ||
}) | ||
questionRouters.post("/dislikeanswer",authMiddleware,async(req,res)=>{ | ||
try{ | ||
const ansId = req.body.ansId; | ||
|
||
await Answer.findByIdAndUpdate( | ||
ansId, | ||
{ $inc: { dislikes: 1 } }, | ||
{ new: true }); | ||
return res.json({message:"Disliked"}) | ||
}catch{ | ||
res.status(410).json({message:"Error"}) | ||
} | ||
}) | ||
|
||
module.exports =questionRouters |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,12 @@ | ||
const express = require("express") | ||
const userRouters = require("./userRouters/userRouters") | ||
const chatRouters = require("./chatRouters/chatRouters") | ||
const questionRouters = require("./questionRouters/questionRouters") | ||
|
||
const router = express.Router(); | ||
|
||
router.use("/user",userRouters); | ||
router.use("/chat",chatRouters); | ||
router.use("/question",questionRouters); | ||
|
||
module.exports = router; |