Added get polls route
This commit is contained in:
@@ -4,6 +4,7 @@ import {
|
|||||||
createVoteService,
|
createVoteService,
|
||||||
deletePollService,
|
deletePollService,
|
||||||
getAllCreatedPollsService,
|
getAllCreatedPollsService,
|
||||||
|
getAllPollsService,
|
||||||
getBookmarkPollService,
|
getBookmarkPollService,
|
||||||
getPollDataService,
|
getPollDataService,
|
||||||
} from "../services/poll.service.js";
|
} from "../services/poll.service.js";
|
||||||
@@ -189,3 +190,30 @@ 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;
|
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 express from "express";
|
||||||
import { verifyToken } from "../../middlwares/verifyToken.js";
|
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 pollDataSchema from "../../validations/pollDataValidation.js";
|
||||||
import validator from "../../validations/validator.js";
|
import validator from "../../validations/validator.js";
|
||||||
import voteSchema from "../../validations/voteValidation.js";
|
import voteSchema from "../../validations/voteValidation.js";
|
||||||
@@ -196,4 +196,33 @@ pollRouter.get("/bookmark/:pollId", verifyToken, addToBookmarkController);
|
|||||||
*/
|
*/
|
||||||
pollRouter.get("/bookmarks", verifyToken, getBookmarkPollController);
|
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;
|
export default pollRouter;
|
||||||
@@ -3,7 +3,9 @@ import {
|
|||||||
createPollByData,
|
createPollByData,
|
||||||
deletePollById,
|
deletePollById,
|
||||||
findPollById,
|
findPollById,
|
||||||
|
findPolls,
|
||||||
findPollsByCreatorId,
|
findPollsByCreatorId,
|
||||||
|
getAllPollsCount,
|
||||||
updatePollVoteCount,
|
updatePollVoteCount,
|
||||||
} from "../repositories/poll.repo.js";
|
} from "../repositories/poll.repo.js";
|
||||||
import {
|
import {
|
||||||
@@ -133,8 +135,9 @@ export async function addToBookMarkService(pollId, user) {
|
|||||||
updatedData = await removePollIdFromBookmark(user._id, poll._id);
|
updatedData = await removePollIdFromBookmark(user._id, poll._id);
|
||||||
message = "Removed from bookmark successfully.";
|
message = "Removed from bookmark successfully.";
|
||||||
}
|
}
|
||||||
|
const {password, ...userData} = updatedData._doc;
|
||||||
return {
|
return {
|
||||||
updatedData,
|
updatedData : userData,
|
||||||
message,
|
message,
|
||||||
};
|
};
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
@@ -151,3 +154,27 @@ export async function getBookmarkPollService(userId) {
|
|||||||
throw 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -25,7 +25,6 @@ function Bookmark() {
|
|||||||
navigator(`/view/${pollId}`);
|
navigator(`/view/${pollId}`);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const handleRemoveBookmark = async (bookmarkId) => {
|
const handleRemoveBookmark = async (bookmarkId) => {
|
||||||
queryClient.setQueryData(["bookmarks"], (oldData) => {
|
queryClient.setQueryData(["bookmarks"], (oldData) => {
|
||||||
return {
|
return {
|
||||||
|
|||||||
Reference in New Issue
Block a user