refactor(api): create story query helper

this is for retrieving + populating stories from a database with a specified query
This commit is contained in:
parent cc462bc19a
commit 740d8a9f2c
Signed by: tablet
GPG Key ID: 924A5F6AF051E87C

23
lib/server/listQuerier.ts Normal file

@ -0,0 +1,23 @@
import { Band } from "~/models/band"
import { Challenge } from "~/models/challenges/gen"
import { Story } from "~/models/stories"
export default async function(query, context, limit?, sort?) {
query["chapters.hidden"] = false
if(context.currentUser) {
if(!query.author) query.author = {}
if(!query["chapters.bands"]) query["chapters.bands"] = {}
query["chapters.bands"]["$nin"] = context.currentUser.hidden_bands
query["author"]["$nin"] = context.currentUser.hidden_authors
}
query["ficmas"] = {
"$nin": context.ficmasarray_raw.map(a => a._id)
};
console.log(query)
let stories = await Story.find(query, null).collation({locale: "en"}).sort(sort ? sort : {"chapters.posted": -1})
.populate({path: 'ficmas', populate: {path: 'wisher', model: 'User', select: 'username _id'}}).populate("chapters.bands")
.populate({path: "challenge", model: Challenge}).populate('author', 'username _id')
.limit(limit || Infinity)
.exec();
return stories
}