From e51c82ce5abcff7eb65ab162956cc2853848f09e Mon Sep 17 00:00:00 2001 From: CaramelKat <32065563+caramelkat@users.noreply.github.com> Date: Fri, 2 Apr 2021 20:58:15 -0500 Subject: [PATCH] Added database support for sub-communities and post replies --- src/database.js | 35 +++++++++++++++++++++++++++++------ src/models/communities.js | 4 ++++ src/models/post.js | 4 ++++ src/server.js | 2 +- 4 files changed, 38 insertions(+), 7 deletions(-) diff --git a/src/database.js b/src/database.js index b6723b7..34bc496 100644 --- a/src/database.js +++ b/src/database.js @@ -49,19 +49,26 @@ async function getTopicByCommunityID(communityID) { async function getCommunities(numberOfCommunities) { verifyConnected(); if(numberOfCommunities === -1) - return COMMUNITY.find({}); + return COMMUNITY.find({ parent: null }); else - return COMMUNITY.find({}).limit(numberOfCommunities); + return COMMUNITY.find({ parent: null }).limit(numberOfCommunities); } async function getMostPopularCommunities(numberOfCommunities) { verifyConnected(); - return COMMUNITY.find({}).sort({followers: -1}).limit(numberOfCommunities); + return COMMUNITY.find({ parent: null }).sort({followers: -1}).limit(numberOfCommunities); } async function getNewCommunities(numberOfCommunities) { verifyConnected(); - return COMMUNITY.find({}).sort([['created_at', -1]]).limit(numberOfCommunities); + return COMMUNITY.find({ parent: null }).sort([['created_at', -1]]).limit(numberOfCommunities); +} + +async function getSubCommunities(communityID) { + verifyConnected(); + return COMMUNITY.find({ + parent: communityID + }); } async function getCommunityByTitleID(title_id) { @@ -100,6 +107,21 @@ async function getPostsByUserID(userID) { }); } +async function getPostReplies(postID, number) { + verifyConnected(); + return POST.find({ + parent: postID + }).limit(number); +} + +async function getUserPostRepliesAfterTimestamp(post, numberOfPosts) { + verifyConnected(); + return POST.find({ + parent: post.pid, + created_at: { $lt: post.created_at } + }).limit(numberOfPosts); +} + async function getNumberUserPostsByID(userID, number) { verifyConnected(); return POST.find({ @@ -165,8 +187,6 @@ async function getNewPostsByCommunity(community, numberOfPosts) { }).sort({ created_at: -1 }).limit(numberOfPosts); } - - async function getUserPostsAfterTimestamp(post, numberOfPosts) { verifyConnected(); return POST.find({ @@ -224,6 +244,7 @@ module.exports = { getCommunities, getMostPopularCommunities, getNewCommunities, + getSubCommunities, getCommunityByTitleID, getCommunityByID, getTotalPostsByCommunity, @@ -236,6 +257,8 @@ module.exports = { getNewPostsByCommunity, getPostsByCommunityKey, getPostsByUserID, + getPostReplies, + getUserPostRepliesAfterTimestamp, getNumberUserPostsByID, getTotalPostsByUserID, getPostByID, diff --git a/src/models/communities.js b/src/models/communities.js index f503b11..e648f19 100644 --- a/src/models/communities.js +++ b/src/models/communities.js @@ -41,6 +41,10 @@ const CommunitySchema = new Schema({ CTR_browser_header: String, WiiU_browser_header: String, description: String, + parent: { + type: Number, + default: null + } }); CommunitySchema.methods.upEmpathy = async function() { diff --git a/src/models/post.js b/src/models/post.js index 743faea..7d5fbf4 100644 --- a/src/models/post.js +++ b/src/models/post.js @@ -63,6 +63,10 @@ const PostSchema = new Schema({ verified: { type: Boolean, default: false + }, + parent: { + type: Number, + default: null } }); diff --git a/src/server.js b/src/server.js index 40d4072..fc4caa6 100644 --- a/src/server.js +++ b/src/server.js @@ -15,7 +15,7 @@ const juxt_web = require('./services/juxt-web'); app.set('etag', false); app.disable('x-powered-by'); app.set('view engine', 'ejs'); -app.set('views', __dirname + '\\webfiles'); +app.set('views', __dirname + '/webfiles'); // Create router logger.info('Setting up Middleware');