| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -9,6 +9,8 @@ import ( | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"github.com/mainnika/mongox-go-driver/v2/mongox/base/protection" | 
					 | 
					 | 
					 | 
						"github.com/mainnika/mongox-go-driver/v2/mongox/base/protection" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					) | 
					 | 
					 | 
					 | 
					) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					type applyFilterFunc = func(query *Query, filter interface{}) (ok bool) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// Compose is a function to compose filters into a single query
 | 
					 | 
					 | 
					 | 
					// Compose is a function to compose filters into a single query
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					func Compose(filters ...interface{}) (query *Query) { | 
					 | 
					 | 
					 | 
					func Compose(filters ...interface{}) (query *Query) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -30,17 +32,20 @@ func Push(q *Query, f interface{}) (ok bool) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							return true | 
					 | 
					 | 
					 | 
							return true | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} | 
					 | 
					 | 
					 | 
						} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ok = false | 
					 | 
					 | 
					 | 
						for _, applier := range []applyFilterFunc{ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ok = ok || applyBson(q, f) | 
					 | 
					 | 
					 | 
							applyBson, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ok = ok || applyLimit(q, f) | 
					 | 
					 | 
					 | 
							applyLimit, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ok = ok || applySort(q, f) | 
					 | 
					 | 
					 | 
							applySort, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ok = ok || applySkip(q, f) | 
					 | 
					 | 
					 | 
							applySkip, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ok = ok || applyProtection(q, f) | 
					 | 
					 | 
					 | 
							applyProtection, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ok = ok || applyPreloader(q, f) | 
					 | 
					 | 
					 | 
							applyPreloader, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ok = ok || applyUpdater(q, f) | 
					 | 
					 | 
					 | 
							applyUpdater, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ok = ok || applyCallbacks(q, f) | 
					 | 
					 | 
					 | 
							applyCallbacks, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
						} { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						return ok | 
					 | 
					 | 
					 | 
							ok = applier(q, f) || ok | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						return | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// applyBson is a fallback for a custom primitive.M
 | 
					 | 
					 | 
					 | 
					// applyBson is a fallback for a custom primitive.M
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |