From 9f5f23364b67362e7a94810553c4f316e58d3a9e Mon Sep 17 00:00:00 2001 From: Adolfo Reyna Date: Thu, 19 Aug 2021 10:19:10 -0700 Subject: [PATCH] groups working --- dbTools/post.js | 10 +++++- dbTools/profile.js | 29 +++++++++++++++-- def/profile.js | 4 +-- routes/post.js | 78 ++++++++++++++++++++++------------------------ routes/profile.js | 46 ++++++++++++++++++++++++--- 5 files changed, 117 insertions(+), 50 deletions(-) diff --git a/dbTools/post.js b/dbTools/post.js index f734b09..dac82d8 100644 --- a/dbTools/post.js +++ b/dbTools/post.js @@ -67,7 +67,6 @@ postDB = (DB)=>{ lastUpdated: new Date() } } - console.log(JSON.stringify(update)); return DB.postCols.updateOne({ _id: id, "comments.createdAt": commentDate @@ -101,6 +100,15 @@ postDB = (DB)=>{ return false; }); } + + DB.getPost = (postId) => { + let _id = DB.ObjectID(postId); + return DB.postCols.findOne({_id}).catch((err)=>{ + console.log(err); + return false; + }); + } + } module.exports = postDB; \ No newline at end of file diff --git a/dbTools/profile.js b/dbTools/profile.js index 97daadd..42afdd6 100644 --- a/dbTools/profile.js +++ b/dbTools/profile.js @@ -23,9 +23,9 @@ userDB = (DB) => { return r; } - DB.getProfiles = async (profileId) => { - const _id = DB.ObjectID(profileId); - return await DB.profileCols.find({ _id }).toArray().catch((err) => { + DB.getUserProfiles = async (userId) => { + const userid = DB.ObjectID(userId); + return await DB.profileCols.find({ userid }).toArray().catch((err) => { console.log(err); return false; }); @@ -43,6 +43,29 @@ userDB = (DB) => { return r[0]; } + //Groups + DB.getGroups = async () => { + let r = await DB.profileCols.find({isGroup: true}) + .sort({ lastUpdate: -1 }).limit(10) + .toArray().catch((err) => { + console.log(err); + return false; + }); + return r; + } + + DB.getGroup = async (groupid) => { + const _id = DB.ObjectID(groupid); + if(userProfileCache[groupid]) return userProfileCache[groupid]; + let r = await DB.profileCols.findOne({_id, isGroup: true}) + .toArray().catch((err) => { + console.log(err); + return false; + }); + if (r) userProfileCache[r.id] = r; + return r; + } + } diff --git a/def/profile.js b/def/profile.js index 2332e5c..0bc5b13 100644 --- a/def/profile.js +++ b/def/profile.js @@ -6,8 +6,8 @@ class User { firstName: info.profile && info.profile.firstName || '', lastName: info.profile && info.profile.lastName || '', photo: info.profile && info.profile.photo || '', - location: info.profile && info.profile.location || '', - language: info.profile && info.profile.language || '', + location: info.profile && info.profile.location || 'USA', + language: info.profile && info.profile.language || 'en', status: info.profile && info.profile.status || '', description: info.profile && info.profile.description || '', }; diff --git a/routes/post.js b/routes/post.js index 18791d2..0b3133b 100644 --- a/routes/post.js +++ b/routes/post.js @@ -4,11 +4,6 @@ var router = express.Router() const DB = require("./../mongoDB.js"); const Post = require("./../def/post.js"); -const getUserId = function(req){ - const user_sid = req.cookies.user_sid || req.query.user_sid || req.body.user_sid; - return user_sid -} - DB.getDB.then((DB)=>{ const getProfileId = (req)=>{ @@ -26,10 +21,10 @@ DB.getDB.then((DB)=>{ return res.json(posts) }); - router.get("/new", async (req, res) => { + router.post("/", async (req, res) => { let post = { profileid: getProfileId(req), - ...req.query + ...req.body } post.toProfile = post.toProfile ? DB.ObjectID(post.toProfile) : undefined; let postObj = new Post(post); @@ -42,10 +37,33 @@ DB.getDB.then((DB)=>{ }) }); - router.get("/newComment", async (req, res) => { + router.post("/react", async (req, res) => { + let userid = getProfileId(req); + let postid = req.body.postid; + let reaction = { + type: "like", + createdAt: new Date() + }; + r = await DB.newReaction(postid, userid, reaction); + return res.json({ + status: "ok" + }); + }) + + router.post("/unreact", async (req, res) => { + let userid = getProfileId(req); + let postid = req.body.postid; + r = await DB.removeReaction(postid, userid); + console.log(r) + return res.json({ + status: "ok" + }) + }); + + router.post("/comment/", async (req, res) => { let profileid = getProfileId(req); - let postid = req.query.postid; - let content = req.query.content; + let postid = req.body.postid; + let content = req.body.content; let comment = { profileid: profileid, content: content, @@ -55,53 +73,33 @@ DB.getDB.then((DB)=>{ } console.log("comment", postid, comment); r = await DB.newComment(postid, comment); - console.log(r) return res.json({ status: "ok", ...comment }) }); - router.get("/react", async (req, res) => { + router.post("/comment/react", async (req, res) => { let userid = getProfileId(req); - let postid = req.query.postid; + let postid = req.body.postid; + let commentDate = new Date(req.body.commentDate); let reaction = { type: "like", createdAt: new Date() }; - console.log("reaction". postid, reaction); - r = await DB.newReaction(postid, userid, reaction); - console.log(r); - return res.json({ - status: "ok" - }); - }) - - router.get("/unreact", async (req, res) => { - let userid = getProfileId(req); - let postid = req.query.postid; - r = await DB.removeReaction(postid, userid); - console.log(r) + r = await DB.newCommentReaction(postid, commentDate, userid, reaction); return res.json({ status: "ok" }) }); - router.get("/comment/react", async (req, res) => { - let userid = getProfileId(req); - let postid = req.query.postid; - let commentDate = new Date(req.query.commentDate); - let reaction = { - type: "like", - createdAt: new Date() - }; - console.log(req.query) - console.log("comment reaction", postid, commentDate, reaction); - r = await DB.newCommentReaction(postid, commentDate, userid, reaction); - console.log(r) + router.get("/:id", async (req, res) => { + const postId = req.params.id; + const post = await DB.getPost(postId); return res.json({ - status: "ok" - }) + status: "ok", + ... post + }); }); }); diff --git a/routes/profile.js b/routes/profile.js index 2801e62..4e7f08b 100644 --- a/routes/profile.js +++ b/routes/profile.js @@ -6,15 +6,53 @@ const Profile = require("../def/profile.js"); DB.getDB.then((DB)=>{ + const getUserId = function(req){ + const user_sid = req.cookies.user_sid || req.query.user_sid || req.body.user_sid; + return DB.ObjectID(user_sid); + } + router.get("/new", async (req, res) => { - let user = { + let profile = { userid: getUserId(req), ... req.query.content }; - let userObj = new Profile(user); - DB.newProfile(userObj) + let profileObj = new Profile(profile); + let r = await DB.newProfile(profileObj); return res.json({ - status: "ok" + status: "ok", + ... profileObj.toObj() + }); + }); + + router.get("/groups", async (req, res) => { + let groups = await DB.getGroups(); + return res.json({ + status: "ok", + groups + }); + }); + + router.post("/groups", async (req, res) => { + let profile = { + userid: getUserId(req), + isGroup: true, + ... req.body + }; + console.log("newGroup", profile) + let profileObj = new Profile(profile); + DB.newProfile(profileObj) + return res.json({ + status: "ok", + ... profileObj.toObj() + }); + }); + + router.get("/groups/:id", async (req, res) => { + const groupid = req.params.id; + let groups = await DB.getGroup(groupid); + return res.json({ + status: "ok", + groups }); });