diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2016-11-22 23:18:54 +0100 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2016-11-22 23:18:54 +0100 |
commit | 5c78547198de20e7f367adb142acc82cd80b4899 (patch) | |
tree | 18df6af1dc5042e44c67156586822bd8798f6c84 /app/controllers | |
parent | fc90d38893ae81b83884c3f5c85d05d564f1de33 (diff) |
More query optimizations
Diffstat (limited to 'app/controllers')
-rw-r--r-- | app/controllers/api/v1/timelines_controller.rb | 8 | ||||
-rw-r--r-- | app/controllers/api_controller.rb | 4 | ||||
-rw-r--r-- | app/controllers/application_controller.rb | 2 |
3 files changed, 11 insertions, 3 deletions
diff --git a/app/controllers/api/v1/timelines_controller.rb b/app/controllers/api/v1/timelines_controller.rb index 19b76f11d..c5ed315d9 100644 --- a/app/controllers/api/v1/timelines_controller.rb +++ b/app/controllers/api/v1/timelines_controller.rb @@ -10,6 +10,8 @@ class Api::V1::TimelinesController < ApiController @statuses = Feed.new(:home, current_account).get(DEFAULT_STATUSES_LIMIT, params[:max_id], params[:since_id]).to_a set_maps(@statuses) + set_counters_maps(@statuses) + set_account_counters_maps(@statuses.flat_map { |s| [s.account, s.reblog? ? s.reblog.account : nil] }.compact.uniq) next_path = api_v1_home_timeline_url(max_id: @statuses.last.id) if @statuses.size == DEFAULT_STATUSES_LIMIT prev_path = api_v1_home_timeline_url(since_id: @statuses.first.id) unless @statuses.empty? @@ -23,6 +25,8 @@ class Api::V1::TimelinesController < ApiController @statuses = Feed.new(:mentions, current_account).get(DEFAULT_STATUSES_LIMIT, params[:max_id], params[:since_id]).to_a set_maps(@statuses) + set_counters_maps(@statuses) + set_account_counters_maps(@statuses.flat_map { |s| [s.account, s.reblog? ? s.reblog.account : nil] }.compact.uniq) next_path = api_v1_mentions_timeline_url(max_id: @statuses.last.id) if @statuses.size == DEFAULT_STATUSES_LIMIT prev_path = api_v1_mentions_timeline_url(since_id: @statuses.first.id) unless @statuses.empty? @@ -36,6 +40,8 @@ class Api::V1::TimelinesController < ApiController @statuses = Status.as_public_timeline(current_account).paginate_by_max_id(DEFAULT_STATUSES_LIMIT, params[:max_id], params[:since_id]).to_a set_maps(@statuses) + set_counters_maps(@statuses) + set_account_counters_maps(@statuses.flat_map { |s| [s.account, s.reblog? ? s.reblog.account : nil] }.compact.uniq) next_path = api_v1_public_timeline_url(max_id: @statuses.last.id) if @statuses.size == DEFAULT_STATUSES_LIMIT prev_path = api_v1_public_timeline_url(since_id: @statuses.first.id) unless @statuses.empty? @@ -50,6 +56,8 @@ class Api::V1::TimelinesController < ApiController @statuses = @tag.nil? ? [] : Status.as_tag_timeline(@tag, current_account).paginate_by_max_id(DEFAULT_STATUSES_LIMIT, params[:max_id], params[:since_id]).to_a set_maps(@statuses) + set_counters_maps(@statuses) + set_account_counters_maps(@statuses.flat_map { |s| [s.account, s.reblog? ? s.reblog.account : nil] }.compact.uniq) next_path = api_v1_hashtag_timeline_url(params[:id], max_id: @statuses.last.id) if @statuses.size == DEFAULT_STATUSES_LIMIT prev_path = api_v1_hashtag_timeline_url(params[:id], since_id: @statuses.first.id) unless @statuses.empty? diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb index 862358d6e..a008f4c1b 100644 --- a/app/controllers/api_controller.rb +++ b/app/controllers/api_controller.rb @@ -59,11 +59,11 @@ class ApiController < ApplicationController end def current_resource_owner - User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token + @user ||= User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token end def current_user - super || current_resource_owner + @user ||= super || current_resource_owner rescue ActiveRecord::RecordNotFound nil end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 283f950cc..07526d46e 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -51,6 +51,6 @@ class ApplicationController < ActionController::Base end def current_account - current_user.try(:account) + @account ||= current_user.try(:account) end end |