diff --git a/backend/src/controllers/poll.controller.js b/backend/src/controllers/poll.controller.js index 078822d..aebdee2 100644 --- a/backend/src/controllers/poll.controller.js +++ b/backend/src/controllers/poll.controller.js @@ -1,4 +1,4 @@ -import { createPollService } from "../services/poll.service.js"; +import { createPollService, getPollDataService } from "../services/poll.service.js"; export async function createPollController(req, res) { try { @@ -25,3 +25,29 @@ export async function createPollController(req, res) { } } } + + +export async function getPollDataController(req, res) { + try { + const pollId = req.params.pollId; + const poll = await getPollDataService(pollId); + res.status(200).json({ + success: true, + message: "Poll data fetched successfully", + data: poll, + }); + } + catch(err) { + if (err.statusCode) { + res.status(err.statusCode).json({ + success: false, + message: err.message, + }); + } else { + res.status(500).json({ + success: false, + message: err.message, + }); + } + } +} \ No newline at end of file diff --git a/backend/src/repositories/poll.repo.js b/backend/src/repositories/poll.repo.js index 2d5f9c6..75ca2bb 100644 --- a/backend/src/repositories/poll.repo.js +++ b/backend/src/repositories/poll.repo.js @@ -8,4 +8,14 @@ export async function createPollByData(data) { catch(err){ throw err; } +} + +export async function findPollById(id) { + try { + const poll = await PollModel.findById(id).populate("creatorId"); + return poll; + } + catch(err){ + throw err; + } } \ No newline at end of file diff --git a/backend/src/routes/v1/poll.route.js b/backend/src/routes/v1/poll.route.js index 28cdd2e..41b3582 100644 --- a/backend/src/routes/v1/poll.route.js +++ b/backend/src/routes/v1/poll.route.js @@ -1,6 +1,6 @@ import express from "express"; import { verifyToken } from "../../middlwares/verifyToken.js"; -import { createPollController } from "../../controllers/poll.controller.js"; +import { createPollController, getPollDataController } from "../../controllers/poll.controller.js"; import pollDataSchema from "../../validations/pollDataValidation.js"; import validator from "../../validations/validator.js"; const pollRouter = express.Router(); @@ -60,4 +60,6 @@ pollRouter.get("/test", (req, res) => { */ pollRouter.post("/create", validator(pollDataSchema), verifyToken, createPollController); +pollRouter.get("/:pollId", verifyToken, getPollDataController); + export default pollRouter; \ No newline at end of file diff --git a/backend/src/services/poll.service.js b/backend/src/services/poll.service.js index 536ef20..65d8a50 100644 --- a/backend/src/services/poll.service.js +++ b/backend/src/services/poll.service.js @@ -1,5 +1,5 @@ import mongoose from "mongoose"; -import { createPollByData } from "../repositories/poll.repo.js"; +import { createPollByData, findPollById } from "../repositories/poll.repo.js"; export async function createPollService(title, description, options, userId) { try { @@ -20,4 +20,22 @@ export async function createPollService(title, description, options, userId) { catch(err){ throw err; } +} + +export async function getPollDataService(pollId) { + try { + const poll = await findPollById(pollId); + if (!poll) { + throw { + statusCode: 404, + message: "Poll not found" + } + } + const {creatorId, ...pollData} = poll._doc; + const {username, _id, ...creatorData} = creatorId._doc; + return {pollData, creatorData : {username, _id}}; + } + catch(err){ + throw err; + } } \ No newline at end of file diff --git a/frontend/index.html b/frontend/index.html index d79e72a..424d38a 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -4,7 +4,7 @@ -