forked from cybrespace/mastodon
		
	Remove some n+1 queries from notifications API
This commit is contained in:
		
							parent
							
								
									e8c27767aa
								
							
						
					
					
						commit
						52119104b9
					
				
					 2 changed files with 7 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -9,6 +9,8 @@ class Api::V1::NotificationsController < ApiController
 | 
			
		|||
  def index
 | 
			
		||||
    @notifications = Notification.where(account: current_account).with_includes.paginate_by_max_id(20, params[:max_id], params[:since_id])
 | 
			
		||||
 | 
			
		||||
    set_maps(@notifications.select { |n| !n.target_status.nil? }.map(&:target_status))
 | 
			
		||||
 | 
			
		||||
    next_path = api_v1_notifications_url(max_id: @notifications.last.id)    if @notifications.size == 20
 | 
			
		||||
    prev_path = api_v1_notifications_url(since_id: @notifications.first.id) unless @notifications.empty?
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,10 +11,14 @@ class Notification < ApplicationRecord
 | 
			
		|||
  belongs_to :follow,    foreign_type: 'Follow',    foreign_key: 'activity_id'
 | 
			
		||||
  belongs_to :favourite, foreign_type: 'Favourite', foreign_key: 'activity_id'
 | 
			
		||||
 | 
			
		||||
  STATUS_INCLUDES = [:account, :media_attachments, mentions: :account, reblog: [:account, mentions: :account]].freeze
 | 
			
		||||
  STATUS_INCLUDES = [:account, :stream_entry, :media_attachments, :tags, mentions: :account, reblog: [:stream_entry, :account, :media_attachments, :tags, mentions: :account]].freeze
 | 
			
		||||
 | 
			
		||||
  scope :with_includes, -> { includes(status: STATUS_INCLUDES, mention: [status: STATUS_INCLUDES], favourite: [:account, status: STATUS_INCLUDES], follow: :account) }
 | 
			
		||||
 | 
			
		||||
  def activity
 | 
			
		||||
    send(activity_type.downcase)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def type
 | 
			
		||||
    case activity_type
 | 
			
		||||
    when 'Status'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue