{result:lengthBody(req.body.ban_reason,0,globalLimits.fieldLength.ban_reason),expected:false,error:`Ban reason must be ${globalLimits.fieldLength.ban_reason} characters or less`},
{result:lengthBody(req.body.log_message,0,globalLimits.fieldLength.log_message),expected:false,error:`Modlog message must be ${globalLimits.fieldLength.log_message} characters or less`},
{result:(existsBody(req.body.report||req.body.global_report)&&lengthBody(req.body.report_reason,1)),expected:false,blocking:true,error:'Reports must have a reason'},
{result:(existsBody(req.body.move)&&!req.body.move_to_thread),expected:false,error:'Must input destinaton thread number to move posts'},
{result:(existsBody(req.body.move)&&(!req.body.move_to_thread&&!req.body.move_to_board)),expected:false,error:'Must input destinaton thread number or board to move posts'},
returnb.date-a.date;//could do postId, doesn't really matter.
}).reduce((acc,p)=>{
acc.postIds.push(p.postId);
acc.postMongoIds.push(p._id);
if(p.thread===null){
acc.threads.push(p);
}
returnacc;
},{threads:[],postIds:[],postMongoIds:[]});
//maybe should filter these? because it will include threads from which child posts are already fetched in the action handler, unlike the deleteposts model