From a59edc7136607832a89e338da46df18c8292c334 Mon Sep 17 00:00:00 2001 From: David Huang Date: Sat, 24 Sep 2022 21:17:51 -0400 Subject: [PATCH 1/3] Working on forum --- forum/index.js | 146 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 141 insertions(+), 5 deletions(-) diff --git a/forum/index.js b/forum/index.js index 3c872af..6d055a6 100644 --- a/forum/index.js +++ b/forum/index.js @@ -12,7 +12,7 @@ db.on('error', console.error.bind(console, "MongoDB Atlas connection error")) post_thread = async(req) => { try { console.log(req); - const { title, author, category, tags, images, content, comments, favorited_by } = req.body; + const { title, author, category, tags, images, content, comments, favorited_by } = req; if (!title || !author || !category || !tags || !images || !content || !comments || !favorited_by ) { let res = { @@ -43,8 +43,8 @@ post_thread = async(req) => { catch (err) { console.error(err); let res = { - status: 500, - body: "server error" + status: 500, + body: "server error" } return JSON.stringify(res) } @@ -52,7 +52,7 @@ post_thread = async(req) => { update_thread = async(req) => { console.log(req); - const { id, title, author, category, tags, images, content, comments, favorited_by } = req.body; + const { id, title, author, category, tags, images, content, comments, favorited_by } = req; if ( !id || !title || !author || !category || !tags || !images || !content || !comments || !favorited_by ) { let res = { @@ -62,9 +62,145 @@ update_thread = async(req) => { return JSON.stringify(res); } - + const forum = Forum.findById(id); + if (!forum) { + let res = { + status: 400, + body: "Thread does not exist", + } + return JSON.stringify(res); + } + + let res = { + status: 200, + body: forum + } + return JSON.stringify(res); + } + +delete_thread = async(req) => { + console.log(req); + const { id } = req; + if (!id) { + let res = { + status: 400, + body: "Missing parameters", + } + return JSON.stringify(res); + } + + await Forum.findByIdAndDelete(id); + let res = { + status: 200, + body: "Ok" + } + return JSON.stringify(res); +} + + +favorite = async(req) => { + const { id, forum_id } = req; + if ( !id || !forum_id ) { + let res = { + status: 400, + body: "Missing parameters", + } + return JSON.stringify(res); + } + + let user = User.findById(id); + if (!user) { + let res = { + status: 400, + body: "User does not exist", + } + return JSON.stringify(res); + } + + let forum = Forum.findById(forum_id); + if (!forum) { + let res = { + status: 400, + body: "Thread does not exist", + } + return JSON.stringify(res); + } + + let found = user.favorites.indexOf(forum_id) + if (found >= 0) { + let res = { + status: 400, + body: "Thread already favorited", + } + return JSON.stringify(res); + } + user.favorites.push(forum_id); + forum.favorited_by++; + + await user.save(); + await forum.save(); + + let res = { + status: 200, + body: "Ok" + } + return JSON.stringify(res); +} + + +unfavorite = async(req) => { + const { id, forum_id } = req; + if ( !id || !forum_id ) { + let res = { + status: 400, + body: "Missing parameters", + } + return JSON.stringify(res); + } + + let user = User.findById(id); + if (!user) { + let res = { + status: 400, + body: "User does not exist", + } + return JSON.stringify(res); + } + + let forum = Forum.findById(forum_id); + if (!forum) { + let res = { + status: 400, + body: "Thread does not exist", + } + return JSON.stringify(res); + } + + let found = user.favorites.indexOf(forum_id); + if (found < 0) { + let res = { + status: 400, + body: "Thread not favorited", + } + return JSON.stringify(res); + } + user.favorites.splice(found, 1) + forum.favorited_by--; + + await user.save(); + await forum.save(); + + let res = { + status: 200, + body: "Ok" + } + return JSON.stringify(res); +} + + + const amqp = require('amqplib/callback_api'); amqp.connect(rabbitMQ, function (error0, connection) { if (error0) { From 13f2f4b986796bcbc0c028d4f5a2dadd35137b7b Mon Sep 17 00:00:00 2001 From: David Huang Date: Sat, 24 Sep 2022 21:24:12 -0400 Subject: [PATCH 2/3] Added more function stubs --- forum/index.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/forum/index.js b/forum/index.js index 6d055a6..e3d7e1e 100644 --- a/forum/index.js +++ b/forum/index.js @@ -200,6 +200,34 @@ unfavorite = async(req) => { } +get_random_thread_list = async(req) => { + +} + +get_cook_thread_list = async(req) => { + +} + +get_eat_thread_list = async(req) => { + +} + +get_cook_thread = async(req) => { + +} + +get_eat_thread = async(req) => { + +} + +search_cook_thread = async(req) => { + +} + +search_eat_thread = async(req) => { + +} + const amqp = require('amqplib/callback_api'); amqp.connect(rabbitMQ, function (error0, connection) { From d195660092725cee22b1837cf705c8fec8a725a7 Mon Sep 17 00:00:00 2001 From: David Huang Date: Sat, 24 Sep 2022 21:50:49 -0400 Subject: [PATCH 3/3] Fixed some promise resolves --- forum/index.js | 133 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 97 insertions(+), 36 deletions(-) diff --git a/forum/index.js b/forum/index.js index e3d7e1e..8a70d55 100644 --- a/forum/index.js +++ b/forum/index.js @@ -22,6 +22,11 @@ post_thread = async(req) => { return JSON.stringify(res); } + for (let i = 0; i < images.length; i++) { + const image = new Image({ data: images[i] }); + + } + const newForum = new Forum({ title: title, author: author, @@ -33,12 +38,22 @@ post_thread = async(req) => { favorited_by: favorited_by, }) - await newForum.save(); - let res = { - status: 200, - body: "Missing parameters", - } - return JSON.stringify(res); + newForum.save().then(() => { + console.log("New forum created"); + let res = { + status: 200, + body: "Missing parameters", + } + return JSON.stringify(res); + }).catch(err => { + console.log("New forum error -- not created"); + console.error(err); + let res = { + status: 500, + body: "server error" + } + return JSON.stringify(res) + }); } catch (err) { console.error(err); @@ -62,7 +77,7 @@ update_thread = async(req) => { return JSON.stringify(res); } - const forum = Forum.findById(id); + const forum = await Forum.findById(id); if (!forum) { let res = { status: 400, @@ -79,7 +94,6 @@ update_thread = async(req) => { } - delete_thread = async(req) => { console.log(req); const { id } = req; @@ -91,12 +105,23 @@ delete_thread = async(req) => { return JSON.stringify(res); } - await Forum.findByIdAndDelete(id); - let res = { - status: 200, - body: "Ok" - } - return JSON.stringify(res); + Forum.findByIdAndDelete(id).then(() => { + console.log("Thread deleted"); + let res = { + status: 200, + body: "Ok" + } + return JSON.stringify(res); + }).catch(err => { + console.log("Forum deletion error"); + console.log(err); + let res = { + status: 500, + body: "Server error", + } + return JSON.stringify(res); + }); + } @@ -139,17 +164,35 @@ favorite = async(req) => { user.favorites.push(forum_id); forum.favorited_by++; - await user.save(); - await forum.save(); - - let res = { - status: 200, - body: "Ok" - } - return JSON.stringify(res); + user.save().then(() => { + console.log("User favorites updated"); + forum.save().then(() => { + console.log("Thread favorite updated") + let res = { + status: 200, + body: "Ok" + } + return JSON.stringify(res); + }).catch(err => { + console.log("Thread favorite error"); + console.log(err); + let res = { + status: 500, + body: "Server error", + } + return JSON.stringify(res); + }) + }).catch(err => { + console.log("User favorite error"); + console.log(err); + let res = { + status: 500, + body: "Server error", + } + return JSON.stringify(res); + }); } - unfavorite = async(req) => { const { id, forum_id } = req; if ( !id || !forum_id ) { @@ -178,28 +221,46 @@ unfavorite = async(req) => { return JSON.stringify(res); } - let found = user.favorites.indexOf(forum_id); - if (found < 0) { + let found = user.favorites.indexOf(forum_id) + if (found >= 0) { let res = { status: 400, - body: "Thread not favorited", + body: "Thread already favorited", } return JSON.stringify(res); } - user.favorites.splice(found, 1) + user.favorites.splice(found, 1); forum.favorited_by--; - await user.save(); - await forum.save(); - - let res = { - status: 200, - body: "Ok" - } - return JSON.stringify(res); + user.save().then(() => { + console.log("User unfavorites updated"); + forum.save().then(() => { + console.log("Thread unfavorite updated"); + let res = { + status: 200, + body: "Ok" + } + return JSON.stringify(res); + }).catch(err => { + console.log("Thread unfavorite error"); + console.log(err); + let res = { + status: 500, + body: "Server error", + } + return JSON.stringify(res); + }) + }).catch(err => { + console.log("User unfavorite error"); + console.log(err); + let res = { + status: 500, + body: "Server error", + } + return JSON.stringify(res); + }); } - get_random_thread_list = async(req) => { }