Skip to content

Commit

Permalink
completed backend of question router
Browse files Browse the repository at this point in the history
  • Loading branch information
Dushyantbha012 committed Feb 24, 2024
1 parent 9af9252 commit 5bbbea6
Show file tree
Hide file tree
Showing 2 changed files with 160 additions and 0 deletions.
157 changes: 157 additions & 0 deletions Backend-Realm/routers/questionRouters/questionRouters.js
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
3 changes: 3 additions & 0 deletions Backend-Realm/routers/router.js
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;

0 comments on commit 5bbbea6

Please sign in to comment.