Created get Poll data route

This commit is contained in:
Manik Maity
2024-11-09 20:53:28 +05:30
parent bd1d3e988d
commit a419f8f917
7 changed files with 60 additions and 100 deletions

View File

@@ -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,
});
}
}
}

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -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;
}
}