Added get user bookmark🔖

This commit is contained in:
Manik Maity
2024-11-12 23:39:02 +05:30
parent 642e4a2880
commit 6ab90696df
4 changed files with 64 additions and 1 deletions

View File

@@ -4,6 +4,7 @@ import {
createVoteService,
deletePollService,
getAllCreatedPollsService,
getBookmarkPollService,
getPollDataService,
} from "../services/poll.service.js";
@@ -161,4 +162,30 @@ export const addToBookmarkController = async (req, res) => {
});
}
}
}
export const getBookmarkPollController = async (req, res) => {
try {
const reqUser = req.user;
const data = await getBookmarkPollService(reqUser._id);
res.json({
success: true,
message: "Bookmarked 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,
});
}
}
}

View File

@@ -60,4 +60,13 @@ export async function removePollIdFromBookmark(userId, pollId) {
catch{
throw err;
}
}
export async function getUserBookmarkedPolls(userId) {
try {
const user = await UserModel.findById(userId).populate("bookmarks");
return user.bookmarks;
} catch (err) {
throw err;
}
}

View File

@@ -1,6 +1,6 @@
import express from "express";
import { verifyToken } from "../../middlwares/verifyToken.js";
import { addToBookmarkController, createPollController, createVoteController, deletePollController, getAllCreatedPollsController, getPollDataController } from "../../controllers/poll.controller.js";
import { addToBookmarkController, createPollController, createVoteController, deletePollController, getAllCreatedPollsController, 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";
@@ -180,4 +180,20 @@ pollRouter.post("/vote", validator(voteSchema), verifyToken, createVoteControlle
* */
pollRouter.get("/bookmark/:pollId", verifyToken, addToBookmarkController);
/**
* @swagger
* /poll/bookmarks:
* get:
* summary: Get bookmarked polls
* tags: [Bookmark]
* responses:
* 200:
* description: Bookmarked polls fetched successfully
* 401:
* description: Unauthorized
* 500:
* description: Internal server error
*/
pollRouter.get("/bookmarks", verifyToken, getBookmarkPollController);
export default pollRouter;

View File

@@ -12,6 +12,7 @@ import {
} from "../repositories/vote.repo.js";
import {
addPollIdToBookmark,
getUserBookmarkedPolls,
removePollIdFromBookmark,
} from "../repositories/user.repo.js";
@@ -140,3 +141,13 @@ export async function addToBookMarkService(pollId, user) {
throw err;
}
}
export async function getBookmarkPollService(userId) {
try {
const data = await getUserBookmarkedPolls(userId);
return data;
} catch (err) {
throw err;
}
}