Added delete poll route in backend

This commit is contained in:
Manik Maity
2024-11-09 22:31:19 +05:30
parent cd46cae87b
commit 8207767850
5 changed files with 77 additions and 11 deletions

View File

@@ -1,8 +1,13 @@
import { createPollService, getAllCreatedPollsService, getPollDataService } from "../services/poll.service.js"; import {
createPollService,
deletePollService,
getAllCreatedPollsService,
getPollDataService,
} from "../services/poll.service.js";
export async function createPollController(req, res) { export async function createPollController(req, res) {
try { try {
const {title, description, options} = req.body; const { title, description, options } = req.body;
const user = req.user; const user = req.user;
const poll = await createPollService(title, description, options, user._id); const poll = await createPollService(title, description, options, user._id);
res.status(201).json({ res.status(201).json({
@@ -10,7 +15,6 @@ export async function createPollController(req, res) {
message: "Poll created successfully", message: "Poll created successfully",
data: poll, data: poll,
}); });
} catch (err) { } catch (err) {
if (err.statusCode) { if (err.statusCode) {
res.status(err.statusCode).json({ res.status(err.statusCode).json({
@@ -26,7 +30,6 @@ export async function createPollController(req, res) {
} }
} }
export async function getPollDataController(req, res) { export async function getPollDataController(req, res) {
try { try {
const pollId = req.params.pollId; const pollId = req.params.pollId;
@@ -36,8 +39,7 @@ export async function getPollDataController(req, res) {
message: "Poll data fetched successfully", message: "Poll data fetched successfully",
data: poll, data: poll,
}); });
} } catch (err) {
catch(err) {
if (err.statusCode) { if (err.statusCode) {
res.status(err.statusCode).json({ res.status(err.statusCode).json({
success: false, success: false,
@@ -61,8 +63,7 @@ export async function getAllCreatedPollsController(req, res) {
message: "Polls fetched successfully", message: "Polls fetched successfully",
data: polls, data: polls,
}); });
} } catch (err) {
catch(err) {
console.log(err); console.log(err);
if (err.statusCode) { if (err.statusCode) {
res.status(err.statusCode).json({ res.status(err.statusCode).json({
@@ -76,4 +77,30 @@ export async function getAllCreatedPollsController(req, res) {
}); });
} }
} }
} }
export async function deletePollController(req, res) {
try {
const reqPollId = req.params.pollId;
const deletedPoll = await deletePollService(reqPollId, req.user);
res.json({
success : true,
message : "Poll deleted successfully.",
data : deletedPoll
})
}
catch (err) {
console.log(err);
if (err.statusCode) {
res.status(err.statusCode).json({
success: false,
message: err.message,
});
} else {
res.status(500).json({
success: false,
message: err.message,
});
}
}
}

View File

@@ -83,4 +83,5 @@ export async function logOutController(req, res) {
message : err.message message : err.message
}) })
} }
} }

View File

@@ -28,4 +28,14 @@ export async function findPollsByCreatorId(id) {
catch(err){ catch(err){
throw err; throw err;
} }
}
export async function deletePollById(id) {
try {
const poll = await PollModel.findByIdAndDelete(id);
return poll;
}
catch(err){
throw err;
}
} }

View File

@@ -1,6 +1,6 @@
import express from "express"; import express from "express";
import { verifyToken } from "../../middlwares/verifyToken.js"; import { verifyToken } from "../../middlwares/verifyToken.js";
import { createPollController, getAllCreatedPollsController, getPollDataController } from "../../controllers/poll.controller.js"; import { createPollController, deletePollController, getAllCreatedPollsController, getPollDataController } from "../../controllers/poll.controller.js";
import pollDataSchema from "../../validations/pollDataValidation.js"; import pollDataSchema from "../../validations/pollDataValidation.js";
import validator from "../../validations/validator.js"; import validator from "../../validations/validator.js";
const pollRouter = express.Router(); const pollRouter = express.Router();
@@ -99,4 +99,6 @@ pollRouter.get("/data/:pollId", verifyToken, getPollDataController);
*/ */
pollRouter.get("/created", verifyToken, getAllCreatedPollsController); pollRouter.get("/created", verifyToken, getAllCreatedPollsController);
pollRouter.delete("/delete/:pollId", verifyToken, deletePollController);
export default pollRouter; export default pollRouter;

View File

@@ -45,6 +45,32 @@ export async function getAllCreatedPollsService(id) {
const polls = await findPollsByCreatorId(id); const polls = await findPollsByCreatorId(id);
return polls; return polls;
} }
catch(err){
throw err;
}
}
export async function deletePollService(pollId, user) {
try {
const userId = user._id;
const poll = await findPollById(pollId);
if (!poll) {
throw {
statusCode: 404,
message: "Poll not found"
}
}
console.log(poll?.creatorId._id.toString(), userId.toString(), user);
if (poll.creatorId._id.toString() !== userId.toString()) {
throw {
statusCode: 401,
message: "Unauthorized"
}
}
const deletedPoll = await deletePollService(pollId);
return deletedPoll;
}
catch(err){ catch(err){
throw err; throw err;
} }