'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 }; };