Files
pics/lib/misc/affectedboards.js

37 lines
1.1 KiB
JavaScript

'use strict';
const { Posts } = require(__dirname+'/../../db/');
module.exports = async (posts, deleting) => {
//get a map of boards to threads affected
const boardThreadMap = {};
for (let i = 0; i < posts.length; i++) {
const post = posts[i];
if (!boardThreadMap[post.board]) {
boardThreadMap[post.board] = {
'directThreads': new Set(),
'threads': new Set()
};
}
if (!post.thread) {
//a thread was directly selected on this board, not just posts. so we handle deletes differently
boardThreadMap[post.board].directThreads.add(post.postId);
}
const threadId = post.thread || post.postId;
boardThreadMap[post.board].threads.add(threadId);
}
const numPagesBeforeActions = {};
const affectedBoardNames = Object.keys(boardThreadMap);
//get number of pages for each before actions for deleting old pages and changing page nav numbers incase number of pages changes
if (deleting) {
await Promise.all(affectedBoardNames.map(async board => {
numPagesBeforeActions[board] = Math.ceil((await Posts.getPages(board)) / 10);
}));
}
return { boardThreadMap, numPagesBeforeActions, affectedBoardNames };
};