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) => { insertOne: (data) => {
cache.del(`board:${data._id}`); //removing cached no_exist cache.del(`board:${data._id}`); //removing cached no_exist
if (!data.settings.unlistedLocal) {
cache.sadd('boards:listed', data._id);
}
return db.insertOne(data); return db.insertOne(data);
}, },
deleteOne: (board) => { deleteOne: (board) => {
cache.del(`board:${board}`); cache.del(`board:${board}`);
cache.del(`banners:${board}`); cache.del(`banners:${board}`);
cache.srem('boards:listed', board);
cache.srem('triggered', board); cache.srem('triggered', board);
return db.deleteOne({ '_id': board }); return db.deleteOne({ '_id': board });
}, },
updateOne: (board, update) => { 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}`); cache.del(`board:${board}`);
return db.updateOne({ return db.updateOne({
'_id': board '_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) => { boardSort: (skip=0, limit=50, sort={ ips:-1, pph:-1, sequence_value:-1 }, filter={}, showUnlisted=false) => {
const addedFilter = {}; const addedFilter = {};
if (!showUnlisted) { if (!showUnlisted) {

@ -65,7 +65,14 @@ module.exports = {
'thread': null, 'thread': null,
} }
if (board) { 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, { const threads = await db.find(threadsQuery, {
projection projection

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

Loading…
Cancel
Save