2023-10-03 00:30:22 -04:00
|
|
|
import { Band } from "~/models/band";
|
|
|
|
import { Challenge } from "~/models/challenges/gen";
|
|
|
|
import { Story } from "~/models/stories";
|
2023-10-10 22:25:25 -04:00
|
|
|
import { log } from "../logger";
|
2023-10-03 00:30:22 -04:00
|
|
|
|
|
|
|
export default async function (query, context, limit?: number, sort?) {
|
|
|
|
query["chapters.hidden"] = false;
|
|
|
|
if (context.currentUser) {
|
|
|
|
if (!query.author) query.author = {};
|
|
|
|
if (!query["chapters.bands"]) query["chapters.bands"] = {};
|
2023-10-10 22:25:25 -04:00
|
|
|
query["chapters.bands"]["$nin"] = context.currentUser.hiddenBands;
|
|
|
|
query["author"]["$nin"] = context.currentUser.hiddenAuthors;
|
2023-10-03 00:30:22 -04:00
|
|
|
}
|
|
|
|
query["ficmas"] = {
|
|
|
|
$nin: context.ficmasarray_raw.map((a) => a._id),
|
|
|
|
};
|
2023-10-10 22:25:25 -04:00
|
|
|
log.debug(query, { label: "list query" });
|
2023-10-03 00:30:22 -04:00
|
|
|
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" },
|
|
|
|
})
|
2023-10-11 15:31:02 -04:00
|
|
|
.populate("coAuthor", "username _id")
|
2023-10-03 00:30:22 -04:00
|
|
|
.populate("chapters.bands")
|
|
|
|
.populate({ path: "challenge", model: Challenge })
|
|
|
|
.populate("author", "username _id")
|
|
|
|
.limit(limit || Infinity)
|
|
|
|
.exec();
|
|
|
|
return stories.filter((a) => a.author != null);
|
|
|
|
}
|