Created get Poll data route
This commit is contained in:
@@ -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,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user