Untitled
unknown
plain_text
a year ago
16 kB
10
Indexable
/** @format */
require("dotenv").config();
const express = require("express");
const router = express.Router();
const Multer = require("multer");
const uuid = require("uuid");
const uuidv1 = uuid.v1;
const { Storage } = require("@google-cloud/storage");
const { default: mongoose } = require("mongoose");
const { config } = require("dotenv");
const sharp = require("sharp");
const Aerospike = require("aerospike");
const { getAerospikeClient } = require("../../../../databases/aerospike");
const maps = Aerospike.maps;
const { removeStopwords, eng, fra } = require("stopword");
const now = require("nano-time");
const multer = Multer({
storage: Multer.memoryStorage(),
limits: {
fileSize: 500 * 1024 * 1024,
},
});
// const bucket = storage.bucket("dexbros_files");
/**
* @START
*/
const {
createPostLike,
viewFullPost,
handleDislike,
handleHaha,
handleAngry,
fetchLikeUser,
fetchPosts,
fetchSubPosts,
fetchBlockFeed,
fetchSinglePost,
spamPost,
bookmarkPost,
repostPost,
editPost,
pinnedPost,
deletePost,
hideUnhidePost,
ctrlCreateNewBlockPost,
donatePost,
fetchAnalytics,
createComment,
fetchComments,
fetchSingleCommentMeta,
fetchMyComments,
likeComment,
removeLike,
reportComment,
pinnedComment,
editComment,
deleteComment,
hideComment,
handleRepostBlockComment,
fetchFlaggedUsersList,
createReply,
replyReply,
fetchReplies,
//getRepliesReply,
hideCommentReply,
deleteReply,
likeReply,
dislikeReply,
spamReply,
innerReplyLike,
createEvent,
fetchEvents,
joinEvent,
fetchEvent,
deleteEvent,
editReply,
eventInterest,
handleHideEvent,
eventNotInterest,
eventjoin,
blockFeed,
eventFeed,
reportEvent,
reportPost,
getPostAnalytics,
fetchFullPostInModal,
addPostLike,
removePostLike,
updateNewsPost,
upvoteNewsPost,
downvoteNewsPost,
fakeNewsPost,
flagPost,
excitedAnnouncementPost,
disapointedAnnouncementPost,
misleadingAnnouncementPost,
fetchUpvoteUsers,
fetchExcitedUsers,
sharePost,
fetchPostEarning,
fetchDonateUsers,
createOrUpdateBlockPostBoost,
getBlockPostBoost,
pinAndUnpinComment,
fetchCommentsMostReactions,
BlockCmntRepostWithQuote,
handleSpamComment,
} = require("../../../controller/post/blockPost/blockPostController");
const createHttpError = require("http-errors");
router.get("/get_feed", blockFeed);
//for full url view not popup
router.get("/view/full/post/:id", viewFullPost);
router.put("/like/:id", createPostLike);
// router.put("/dislike/:id", handleDislike);
// router.put("/haha/:id", handleHaha);
// *** Create angry emoji
// router.put("/angry/:id", handleAngry);
// router.get("/:id/liked_user", fetchLikeUser);
// fetch group posts
router.get("/:id", fetchPosts);
router.get("/subs-post/:id", fetchSubPosts);
// fetch like user
router.get("/like/users/:id", fetchLikeUser);
// fetch block feed
router.get("/block/feed", fetchBlockFeed);
// Fetch single post
// router.get("/single/:id", fetchSinglePost);
router.put("/spam/:id", spamPost);
router.put("/bookmark/:id", bookmarkPost);
// Create Post Edit route
router.put("/edit/:id", editPost);
// Create Pinned Post route
router.put("/pinned/:id", pinnedPost);
// Create Delete Post route
router.put("/delete/:id", deletePost);
// POST HIDE & UNHIDE ROUTE
router.put("/hide/:id", hideUnhidePost);
// ******* CREATE GROUP POST API REDESIGN ******* //
router.post("/create/post/:id", multer.single("image"), ctrlCreateNewBlockPost);
router.post("/donate/:id", donatePost);
router.get("/fetch/analytics/:id", fetchAnalytics);
//**************** GROUP POST COMMENT **************//
router.post("/comments/:id", multer.single("cmnt_img"), createComment);
router.get("/comments/:id", fetchComments);
router.get("/comment/meta/:id", fetchSingleCommentMeta)
router.get("/my_comments/:id", fetchMyComments);
router.put("/comment/:type/:id/:username/:likeCount/:p_type", likeComment);
//router.put("/comment/like/remove/:id", removeLike);
//router.put("/comment/like/remove/:id", likeComment);
router.put("/comment/spam/:id", handleSpamComment);
// 5. pin a comment
router.put("/comment/pinned/:id/:postId", pinAndUnpinComment);
// 6. Edit comment
router.put("/comment/edit/:id", multer.single("img"), editComment);
// 7. Delete Comment
router.put("/comment/delete/:id/:type", deleteComment);
// 8. Hide comment
router.put("/comment/hide/:id", hideComment);
//9. repost comment
router.put('/comment/repost/:id',handleRepostBlockComment)
//10. users those are did flag on a single comment
router.get("/comment/users/spam/:id", fetchFlaggedUsersList);
//11. comment's most two reactions
router.get("/comment/most/reactions/:id",fetchCommentsMostReactions );
//12. comment's repost with quote
router.post("/comment/repost/quote/:id", BlockCmntRepostWithQuote);
// ******************* Replies ******************* //
// ******* CREATE GROUP COMMENT REPLY
router.post("/comment/reply/:id", createReply);
router.post("/reply/reply/:id", replyReply);
// *** Fetch all replies
router.get("/comment/reply/:id", fetchReplies);
//router.get("/comment/replies/reply/:id", getRepliesReply);
// *** Group comment reply HIDE
router.put("/comment/reply/hide/:id", hideCommentReply);
router.put("/comment/reply/delete/:id", deleteReply);
router.put("/comment/reply/edit/:id", editReply);
// *** Group comment reply LIKE
router.put("/comment/reply/like/:id", likeReply);
router.put("/comment/reply/dislike/:id", dislikeReply);
router.put("/comment/reply/spam/:id", spamReply);
// **** Group Event
router.post("/event/create", multer.single("eventimage"), createEvent);
router.get("/events/:id", fetchEvents);
router.put("/event/join/:id", joinEvent);
router.get("/event/:id", fetchEvent);
router.put("/event/delete/:id", deleteEvent);
router.put("/event/edit/:id", async (req, res) => {
if (!req.params.id) {
throw createHttpError.BadRequest("Invalid ID");
} else {
const client = await getAerospikeClient();
const key = new Aerospike.Key(
process.env.CLUSTER_NAME,
process.env.SET_BLOCK_EVENT,
req.params.id
);
const ops = [
Aerospike.operations.write("tit", req.body.title),
Aerospike.operations.write("des", req.body.description),
Aerospike.operations.write("s_d", req.body.startdate),
Aerospike.operations.write("e_d", req.body.enddate),
Aerospike.operations.write("price", req.body.price),
Aerospike.operations.write("time", req.body.time),
Aerospike.operations.write("timezone", req.body.timezone),
];
await client.operate(key, ops);
try {
return { msg: "Event has been updated" };
} catch (err) {
throw createHttpError.BadRequest("ERROR");
}
}
});
router.put("/event/interest/:id", eventInterest);
router.put("/event/hide/:id", handleHideEvent);
router.put("/event/not_interest/:id", eventNotInterest);
router.get("/block/event/feed", eventFeed);
router.put("/event/report/:id", reportEvent);
router.put("/report/:id", reportPost);
// **** Post NFT donation
router.post("/donate/:id", async (req, res) => {
const client = await getAerospikeClient();
const id = req.params.id;
if (!id) {
return res.status(400).json({ msg: "Invalid request" });
} else {
const post_meta_key = new Aerospike.Key(
process.env.CLUSTER_NAME,
process.env.SET_GROUP_POST_META,
id
);
const post_key = new Aerospike.Key(
process.env.CLUSTER_NAME,
process.env.SET_POSTS,
id
);
const data = await client.get(post_key);
try {
const notificationData = {
id: id,
ty: 7,
vi: false,
wo: req.user.handleUn,
ti: Date.now(),
nm: `${req.user.fn} ${req.user.ln}`,
pi: req.user.p_i,
amount: req.query.amount,
};
// *** Send notification data into kafka broker
await sendNotificationMessage("post_notification", notificationData);
client.exists(post_meta_key, async (err, result) => {
if (err) {
return res.status(400).json({ msg: err.message });
} else {
if (!result) {
return res.status(400).json({ msg: "No post found" });
} else {
// ** Generating time stamp
const time = Date.now().toString();
let record = await client.get(post_meta_key);
const bins = {
id: time,
amount: req.query.amount,
s_name: `${req.user.fn} ${req.user.ln}`,
s_handleUn: req.user.handleUn,
s_pic: req.user.p_i || "",
r_username: req.query.handleUn,
postId: id,
message: req.query.message || "",
};
const earn_key = new Aerospike.Key(
process.env.CLUSTER_NAME,
process.env.SET_EARNING,
time
);
const user_earning_key = new Aerospike.Key(
process.env.CLUSTER_NAME,
process.env.SET_USER_EARNING,
time
);
// *** Earn Bin
const earn_bin = [
Aerospike.operations.write("_id", time),
Aerospike.operations.write("receiver", req.query.handleUn),
Aerospike.operations.write("sender", req.user.handleUn),
Aerospike.operations.write("amount", req.query.amount),
Aerospike.operations.write("type", "post"),
Aerospike.operations.write("id", id || ""),
];
await client.operate(user_earning_key, earn_bin);
client.put(earn_key, bins, async (err, result) => {
if (err) {
return res.status(400).json({ msg: err.message });
} else {
let record = await client.get(post_meta_key);
if (record.bins.earn) {
console.log("Have ", record.bins.earn);
const ops = [
Aerospike.maps
.getByKey("earn", time)
.andReturn(Aerospike.maps.returnType.KEY_VALUE),
];
client.operate(post_meta_key, ops, async (err, result) => {
if (err) {
return res.status(400).json({ msg: err.message });
} else {
if (result.bins.earn[0] === time) {
const value =
Number(result.bins.earn[1]) +
Number(req.query.amount);
const ops = [
Aerospike.maps.put("earn", time, value, {
order: maps.order.KEY_ORDERED,
}),
];
let data = await client.operate(post_meta_key, ops);
try {
const getPost = await client.get(post_key);
const total =
getPost.bins.earn + Number(req.query.amount);
const ops = [
Aerospike.operations.write("earn", total),
];
await client.operate(post_key, ops);
return res.status(200).json({ msg: "Success" });
} catch (error) {
return res.status(400).json({ msg: error.message });
}
} else {
const ops = [
Aerospike.maps.put("earn", time, req.query.amount, {
order: maps.order.KEY_ORDERED,
}),
];
let result = await client.operate(post_meta_key, ops);
try {
// let result = await client.put(user_earning_key, earn_bin);
try {
const getPost = await client.get(post_key);
const total =
Number(getPost.bins.earn) +
Number(req.query.amount);
console.log(">> Total earning: ", total);
const ops = [
Aerospike.operations.write("earn", total),
];
await client.operate(post_key, ops);
return res.status(200).json({ msg: "Success" });
} catch (error) {
return res.status(400).json({ msg: error.message });
}
} catch (error) {
return res.status(400).json({ msg: error.message });
}
}
}
});
} else {
const ops = [
Aerospike.maps.put("earn", time, req.query.amount, {
order: maps.order.KEY_ORDERED,
}),
];
let result = await client.operate(post_meta_key, ops);
try {
// let result = await client.put(user_earning_key, earn_bin);
try {
const ops = [Aerospike.operations.write("earn", total)];
await client.operate(post_key, ops);
return res
.status(200)
.json({ msg: "Successfully donated" });
} catch (error) {
return res.status(400).json({ msg: err.message });
}
} catch (error) {
return res.status(400).json({ msg: error.message });
}
}
}
});
}
}
});
} catch (error) {
return res.status(400).json({ msg: error.message });
}
}
});
// *** GET full group post for analytics
router.get("/analytics/:id", getPostAnalytics);
router.get("/full-post/:id", fetchFullPostInModal);
router.put("/emoji/add/like/:id", addPostLike);
router.put("/emoji/remove/like/:id", removePostLike);
// *** Block post News POST
router.put("/news-post/:id", updateNewsPost);
// *** Block News Post Upvote
router.put("/upvote/:id", upvoteNewsPost);
// *** Block News Post Downvote
router.put("/downvote/:id", downvoteNewsPost);
// *** Block News Post Fake
router.put("/fake/:id", fakeNewsPost);
// *** Block Post FLAG
router.put("/flag/:id", flagPost);
// *** Block Announcement Post Excited
router.put("/exicted/:id", excitedAnnouncementPost);
// *** Block Announcement Post Disapointed
router.put("/disapointed/:id", disapointedAnnouncementPost);
// *** Block Announcement Post Misleading
router.put("/misleading/:id", misleadingAnnouncementPost);
// *** Block fetch upvote users/
router.get("/upvote/:id", fetchUpvoteUsers);
// *** Block fetch Excited users/
router.get("/excited/:id", fetchExcitedUsers);
// *** Block Post share POST
router.put("/share/:id", sharePost);
// *** Fetch block post earning
router.get("/fetch/earnings/:id", fetchPostEarning);
// *** Fetch who is dontaing my block POST
router.get("/fetch/donate/users/:id", fetchDonateUsers);
// *** Create Repost Post route
router.put("/repost/:id", repostPost);
router.post("/boost/:id", createOrUpdateBlockPostBoost);
router.get("/fetch/boost", getBlockPostBoost);
module.exports = router;
Editor is loading...
Leave a Comment