Add before: and after: filters
This commit is contained in:
		
							parent
							
								
									a6ee508eb7
								
							
						
					
					
						commit
						30faf1f6da
					
				
					 1 changed files with 15 additions and 2 deletions
				
			
		|  | @ -45,7 +45,7 @@ class SearchQueryTransformer < Parslet::Transform | |||
|     def clause_to_filter(clause) | ||||
|       case clause | ||||
|       when PrefixClause | ||||
|         { term: { clause.filter => clause.term } } | ||||
|         { clause.query => { clause.filter => clause.term } } | ||||
|       else | ||||
|         raise "Unexpected clause type: #{clause}" | ||||
|       end | ||||
|  | @ -99,9 +99,11 @@ class SearchQueryTransformer < Parslet::Transform | |||
|   end | ||||
| 
 | ||||
|   class PrefixClause | ||||
|     attr_reader :filter, :operator, :term, :order | ||||
|     attr_reader :filter, :operator, :term, :order, :query | ||||
| 
 | ||||
|     def initialize(prefix, operator, term) | ||||
|       @query = :term | ||||
| 
 | ||||
|       case operator | ||||
|       when '+', nil | ||||
|         @operator = :filter | ||||
|  | @ -115,6 +117,17 @@ class SearchQueryTransformer < Parslet::Transform | |||
|       when 'domain', 'is', 'has', 'lang', 'visibility' | ||||
|         @filter = prefix.to_s | ||||
|         @term = term | ||||
|       when 'before', 'after' | ||||
|         @query = :range | ||||
|         @filter = 'created_at' | ||||
|         case prefix | ||||
|         when 'before' | ||||
|           @term = { lt: term } | ||||
|         when 'after' | ||||
|           @term = { gt: term } | ||||
|         else | ||||
|           raise Mastodon::SyntaxError | ||||
|         end | ||||
|       when 'from' | ||||
|         @filter = :account_id | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue