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
					
				
							
								
								
									
										23
									
								
								lib/server/listQuerier.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										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 | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user