Simplify hashtag query service, perf increase for 'any' tags (#9298)
This commit is contained in:
		
							parent
							
								
									1d38c9750a
								
							
						
					
					
						commit
						6a65d87f4d
					
				
					 1 changed files with 5 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -2,15 +2,14 @@
 | 
			
		|||
 | 
			
		||||
class HashtagQueryService < BaseService
 | 
			
		||||
  def call(tag, params, account = nil, local = false)
 | 
			
		||||
    any  = tags_for(params[:any])
 | 
			
		||||
    tags = tags_for(Array(tag.name) | Array(params[:any])).pluck(:id)
 | 
			
		||||
    all  = tags_for(params[:all])
 | 
			
		||||
    none = tags_for(params[:none])
 | 
			
		||||
 | 
			
		||||
    @query = Status.as_tag_timeline(tag, account, local)
 | 
			
		||||
                   .tagged_with_all(all)
 | 
			
		||||
                   .tagged_with_none(none)
 | 
			
		||||
    @query = @query.distinct.or(self.class.new.call(any, params.except(:any), account, local).distinct) if any
 | 
			
		||||
    @query
 | 
			
		||||
    Status.distinct
 | 
			
		||||
          .as_tag_timeline(tags, account, local)
 | 
			
		||||
          .tagged_with_all(all)
 | 
			
		||||
          .tagged_with_none(none)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  private
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue