Track listed boards and use to now show unlisted baords on overboard, could also use for optimisations in future such as queries for board list references #166

merge-requests/208/head
Thomas Lynch 4 years ago
parent bd9498145c
commit f92b9f9ec9
  1. 30
      db/boards.js
  2. 9
      db/posts.js
  3. 7
      models/pages/overboard.js

@ -51,17 +51,30 @@ module.exports = {
insertOne: (data) => {
cache.del(`board:${data._id}`); //removing cached no_exist
if (!data.settings.unlistedLocal) {
cache.sadd('boards:listed', data._id);
}
return db.insertOne(data);
},
deleteOne: (board) => {
cache.del(`board:${board}`);
cache.del(`banners:${board}`);
cache.srem('boards:listed', board);
cache.srem('triggered', board);
return db.deleteOne({ '_id': board });
},
updateOne: (board, update) => {
if (update['$set']
&& update['$set'].settings
&& update['$set'].settings.unlistedLocal !== null) {
if (update['$set'].settings.unlistedLocal) {
cache.sadd('boards:listed', board);
} else {
cache.srem('boards:listed', board);
}
}
cache.del(`board:${board}`);
return db.updateOne({
'_id': board
@ -102,6 +115,23 @@ module.exports = {
);
},
getLocalListed: async () => {
let cachedListed = await cache.sgetall('boards:listed');
if (cachedListed) {
return cachedListed;
}
let listedBoards = await db.find({
'settings.unlistedLocal': false
}, {
'projection': {
'_id': 1,
}
});
listedBoards = listedBoards.map(b => b._id);
await cache.sadd('boards:listed', listedBoards);
return listedBoards;
},
boardSort: (skip=0, limit=50, sort={ ips:-1, pph:-1, sequence_value:-1 }, filter={}, showUnlisted=false) => {
const addedFilter = {};
if (!showUnlisted) {

@ -65,7 +65,14 @@ module.exports = {
'thread': null,
}
if (board) {
threadsQuery[board] = board;
if (Array.isArray(board)) {
//array for overboard
threadsQuery['board'] = {
'$in': board
}
} else {
threadsQuery['board'] = board;
}
}
const threads = await db.find(threadsQuery, {
projection

@ -1,6 +1,6 @@
'use strict';
const Posts = require(__dirname+'/../../db/posts.js')
const { Posts, Boards } = require(__dirname+'/../../db/')
, cache = require(__dirname+'/../../redis.js')
, { overboardLimit } = require(__dirname+'/../../configs/main.js');
@ -8,7 +8,9 @@ module.exports = async (req, res, next) => {
let threads = [];
try {
threads = await Posts.getRecent(null, 1, overboardLimit, false);
const listedBoards = await Boards.getLocalListed();
console.log(listedBoards);
threads = await Posts.getRecent(listedBoards, 1, overboardLimit, false);
} catch (err) {
return next(err);
}
@ -16,7 +18,6 @@ module.exports = async (req, res, next) => {
res
.set('Cache-Control', 'public, max-age=60')
.render('overboard', {
modview: true,
threads,
});

Loading…
Cancel
Save