Added get polls route
This commit is contained in:
@@ -4,6 +4,7 @@ import {
|
||||
createVoteService,
|
||||
deletePollService,
|
||||
getAllCreatedPollsService,
|
||||
getAllPollsService,
|
||||
getBookmarkPollService,
|
||||
getPollDataService,
|
||||
} from "../services/poll.service.js";
|
||||
@@ -188,4 +189,31 @@ export const getBookmarkPollController = async (req, res) => {
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const getAllPolls = async (req, res) => {
|
||||
try {
|
||||
const page = req.query.page || 1;
|
||||
const limit = req.query.limit || 10;
|
||||
const data = await getAllPollsService(page, limit);
|
||||
res.json({
|
||||
success: true,
|
||||
message: "All Polls fetched successfully",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
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,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -61,3 +61,24 @@ export async function updatePollVoteCount(pollId, optionId) {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
export async function findPolls(page, limit) {
|
||||
try{
|
||||
const skip = (page - 1) * limit;
|
||||
const polls = await PollModel.find().skip(skip).limit(limit).populate("creatorId");
|
||||
return polls;
|
||||
}
|
||||
catch(err){
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
export async function getAllPollsCount(){
|
||||
try{
|
||||
const count = await PollModel.find().countDocuments();
|
||||
return count;
|
||||
}
|
||||
catch(err){
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import express from "express";
|
||||
import { verifyToken } from "../../middlwares/verifyToken.js";
|
||||
import { addToBookmarkController, createPollController, createVoteController, deletePollController, getAllCreatedPollsController, getBookmarkPollController, getPollDataController } from "../../controllers/poll.controller.js";
|
||||
import { addToBookmarkController, createPollController, createVoteController, deletePollController, getAllCreatedPollsController, getAllPolls, getBookmarkPollController, getPollDataController } from "../../controllers/poll.controller.js";
|
||||
import pollDataSchema from "../../validations/pollDataValidation.js";
|
||||
import validator from "../../validations/validator.js";
|
||||
import voteSchema from "../../validations/voteValidation.js";
|
||||
@@ -196,4 +196,33 @@ pollRouter.get("/bookmark/:pollId", verifyToken, addToBookmarkController);
|
||||
*/
|
||||
pollRouter.get("/bookmarks", verifyToken, getBookmarkPollController);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /poll/all?page={page}&limit={limit}:
|
||||
* get:
|
||||
* summary: Get all polls
|
||||
* tags: [Poll]
|
||||
* parameters:
|
||||
* - in: query
|
||||
* name: page
|
||||
* schema:
|
||||
* type: integer
|
||||
* required: false
|
||||
* description: Page number
|
||||
* - in: query
|
||||
* name: limit
|
||||
* schema:
|
||||
* type: integer
|
||||
* required: false
|
||||
* description: Limit
|
||||
* responses:
|
||||
* 200:
|
||||
* description: All polls fetched successfully
|
||||
* 401:
|
||||
* description: Unauthorized
|
||||
* 500:
|
||||
* description: Internal server error
|
||||
*/
|
||||
pollRouter.get("/all", getAllPolls)
|
||||
|
||||
export default pollRouter;
|
||||
@@ -3,7 +3,9 @@ import {
|
||||
createPollByData,
|
||||
deletePollById,
|
||||
findPollById,
|
||||
findPolls,
|
||||
findPollsByCreatorId,
|
||||
getAllPollsCount,
|
||||
updatePollVoteCount,
|
||||
} from "../repositories/poll.repo.js";
|
||||
import {
|
||||
@@ -133,8 +135,9 @@ export async function addToBookMarkService(pollId, user) {
|
||||
updatedData = await removePollIdFromBookmark(user._id, poll._id);
|
||||
message = "Removed from bookmark successfully.";
|
||||
}
|
||||
const {password, ...userData} = updatedData._doc;
|
||||
return {
|
||||
updatedData,
|
||||
updatedData : userData,
|
||||
message,
|
||||
};
|
||||
} catch (err) {
|
||||
@@ -150,4 +153,28 @@ export async function getBookmarkPollService(userId) {
|
||||
} catch (err) {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
export async function getAllPollsService(page, limit) {
|
||||
try {
|
||||
const data = await findPolls(page, limit);
|
||||
const filteredData = data.map((poll) => {
|
||||
const { creatorId, ...pollData } = poll._doc;
|
||||
const { username, _id, ...creatorData } = creatorId._doc;
|
||||
const {options, ...rest} = pollData;
|
||||
return {
|
||||
...rest,
|
||||
creatorData: { username, _id }
|
||||
};
|
||||
});
|
||||
const totalPollCount = await getAllPollsCount();
|
||||
return {
|
||||
polls: filteredData,
|
||||
totalPollCount: totalPollCount,
|
||||
totalPages: Math.ceil(totalPollCount / limit),
|
||||
};
|
||||
}
|
||||
catch (err) {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user