From 6424a4de74768b11b13337561fec71540e939450 Mon Sep 17 00:00:00 2001 From: evazion Date: Mon, 28 Oct 2019 15:06:02 -0500 Subject: [PATCH] Do full page counts on small index pages. Normally we skip doing page counts on index pages when there aren't any search filters. This is on the assumption that most index pages have more than 1000 pages (20,000 results), so it's not worth counting them exactly. This isn't always true, so here we turn on full counts on certain index pages known to be small. --- app/controllers/bans_controller.rb | 2 +- app/controllers/bulk_update_requests_controller.rb | 2 +- app/controllers/comment_votes_controller.rb | 2 +- app/controllers/dmails_controller.rb | 2 +- app/controllers/forum_post_votes_controller.rb | 2 +- app/controllers/ip_bans_controller.rb | 2 +- app/controllers/pools_controller.rb | 2 +- app/controllers/post_votes_controller.rb | 2 +- app/controllers/saved_searches_controller.rb | 4 ++-- app/controllers/tag_aliases_controller.rb | 2 +- app/controllers/tag_implications_controller.rb | 2 +- app/controllers/uploads_controller.rb | 2 +- app/controllers/user_feedbacks_controller.rb | 2 +- app/models/application_record.rb | 4 ++-- 14 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/controllers/bans_controller.rb b/app/controllers/bans_controller.rb index c82eff967..3a8b1645e 100644 --- a/app/controllers/bans_controller.rb +++ b/app/controllers/bans_controller.rb @@ -12,7 +12,7 @@ class BansController < ApplicationController end def index - @bans = Ban.paginated_search(params) + @bans = Ban.paginated_search(params, count_pages: true) respond_with(@bans) do |fmt| fmt.html { @bans = @bans.includes(:user, :banner) } end diff --git a/app/controllers/bulk_update_requests_controller.rb b/app/controllers/bulk_update_requests_controller.rb index aa4bd3ca2..0fcb3ff8d 100644 --- a/app/controllers/bulk_update_requests_controller.rb +++ b/app/controllers/bulk_update_requests_controller.rb @@ -42,7 +42,7 @@ class BulkUpdateRequestsController < ApplicationController end def index - @bulk_update_requests = BulkUpdateRequest.includes(:user, :approver, :forum_topic, forum_post: [:votes]).paginated_search(params) + @bulk_update_requests = BulkUpdateRequest.includes(:user, :approver, :forum_topic, forum_post: [:votes]).paginated_search(params, count_pages: true) respond_with(@bulk_update_requests) end diff --git a/app/controllers/comment_votes_controller.rb b/app/controllers/comment_votes_controller.rb index 7539dc2a9..fc84f3000 100644 --- a/app/controllers/comment_votes_controller.rb +++ b/app/controllers/comment_votes_controller.rb @@ -5,7 +5,7 @@ class CommentVotesController < ApplicationController rescue_with CommentVote::Error, ActiveRecord::RecordInvalid, status: 422 def index - @comment_votes = CommentVote.includes(:user, comment: [:creator, :post]).paginated_search(params) + @comment_votes = CommentVote.includes(:user, comment: [:creator, :post]).paginated_search(params, count_pages: true) respond_with(@comment_votes) end diff --git a/app/controllers/dmails_controller.rb b/app/controllers/dmails_controller.rb index b02b103ea..427f82449 100644 --- a/app/controllers/dmails_controller.rb +++ b/app/controllers/dmails_controller.rb @@ -19,7 +19,7 @@ class DmailsController < ApplicationController if params[:folder] && params[:set_default_folder] cookies.permanent[:dmail_folder] = params[:folder] end - @dmails = Dmail.active.visible.paginated_search(params) + @dmails = Dmail.active.visible.paginated_search(params, count_pages: true) respond_with(@dmails) end diff --git a/app/controllers/forum_post_votes_controller.rb b/app/controllers/forum_post_votes_controller.rb index b0829f37f..555b691e8 100644 --- a/app/controllers/forum_post_votes_controller.rb +++ b/app/controllers/forum_post_votes_controller.rb @@ -3,7 +3,7 @@ class ForumPostVotesController < ApplicationController before_action :member_only, only: [:create, :destroy] def index - @forum_post_votes = ForumPostVote.includes(creator: [], forum_post: [:topic]).paginated_search(params) + @forum_post_votes = ForumPostVote.includes(creator: [], forum_post: [:topic]).paginated_search(params, count_pages: true) respond_with(@forum_post_votes) end diff --git a/app/controllers/ip_bans_controller.rb b/app/controllers/ip_bans_controller.rb index 006a8aeec..57f3d774f 100644 --- a/app/controllers/ip_bans_controller.rb +++ b/app/controllers/ip_bans_controller.rb @@ -12,7 +12,7 @@ class IpBansController < ApplicationController end def index - @ip_bans = IpBan.includes(:creator).paginated_search(params) + @ip_bans = IpBan.includes(:creator).paginated_search(params, count_pages: true) respond_with(@ip_bans) end diff --git a/app/controllers/pools_controller.rb b/app/controllers/pools_controller.rb index d5c6a2d71..3d35d2636 100644 --- a/app/controllers/pools_controller.rb +++ b/app/controllers/pools_controller.rb @@ -17,7 +17,7 @@ class PoolsController < ApplicationController end def index - @pools = Pool.includes(:creator).paginated_search(params) + @pools = Pool.includes(:creator).paginated_search(params, count_pages: true) respond_with(@pools) end diff --git a/app/controllers/post_votes_controller.rb b/app/controllers/post_votes_controller.rb index 87009f197..816973002 100644 --- a/app/controllers/post_votes_controller.rb +++ b/app/controllers/post_votes_controller.rb @@ -5,7 +5,7 @@ class PostVotesController < ApplicationController rescue_with PostVote::Error, status: 422 def index - @post_votes = PostVote.includes(:user, post: [:uploader]).paginated_search(params) + @post_votes = PostVote.includes(:user, post: [:uploader]).paginated_search(params, count_pages: true) respond_with(@post_votes) end diff --git a/app/controllers/saved_searches_controller.rb b/app/controllers/saved_searches_controller.rb index c2eefb3fa..de0733e90 100644 --- a/app/controllers/saved_searches_controller.rb +++ b/app/controllers/saved_searches_controller.rb @@ -1,8 +1,8 @@ class SavedSearchesController < ApplicationController respond_to :html, :xml, :json, :js - + def index - @saved_searches = saved_searches.paginated_search(params) + @saved_searches = saved_searches.paginated_search(params, count_pages: true) respond_with(@saved_searches) end diff --git a/app/controllers/tag_aliases_controller.rb b/app/controllers/tag_aliases_controller.rb index 6f6520cd2..0b0f45ebe 100644 --- a/app/controllers/tag_aliases_controller.rb +++ b/app/controllers/tag_aliases_controller.rb @@ -22,7 +22,7 @@ class TagAliasesController < ApplicationController end def index - @tag_aliases = TagAlias.includes(:antecedent_tag, :consequent_tag, :approver).paginated_search(params) + @tag_aliases = TagAlias.includes(:antecedent_tag, :consequent_tag, :approver).paginated_search(params, count_pages: true) respond_with(@tag_aliases) end diff --git a/app/controllers/tag_implications_controller.rb b/app/controllers/tag_implications_controller.rb index fdd419de3..1c5951764 100644 --- a/app/controllers/tag_implications_controller.rb +++ b/app/controllers/tag_implications_controller.rb @@ -22,7 +22,7 @@ class TagImplicationsController < ApplicationController end def index - @tag_implications = TagImplication.includes(:antecedent_tag, :consequent_tag, :approver).paginated_search(params) + @tag_implications = TagImplication.includes(:antecedent_tag, :consequent_tag, :approver).paginated_search(params, count_pages: true) respond_with(@tag_implications) end diff --git a/app/controllers/uploads_controller.rb b/app/controllers/uploads_controller.rb index c62bf5842..072e7341c 100644 --- a/app/controllers/uploads_controller.rb +++ b/app/controllers/uploads_controller.rb @@ -24,7 +24,7 @@ class UploadsController < ApplicationController end def index - @uploads = Upload.paginated_search(params).includes(:post, :uploader) + @uploads = Upload.paginated_search(params, count_pages: true).includes(:post, :uploader) respond_with(@uploads) end diff --git a/app/controllers/user_feedbacks_controller.rb b/app/controllers/user_feedbacks_controller.rb index 7ce175c18..a9154d41f 100644 --- a/app/controllers/user_feedbacks_controller.rb +++ b/app/controllers/user_feedbacks_controller.rb @@ -20,7 +20,7 @@ class UserFeedbacksController < ApplicationController end def index - @user_feedbacks = UserFeedback.visible.paginated_search(params) + @user_feedbacks = UserFeedback.visible.paginated_search(params, count_pages: true) respond_with(@user_feedbacks) end diff --git a/app/models/application_record.rb b/app/models/application_record.rb index 69354061b..8a8df0e24 100644 --- a/app/models/application_record.rb +++ b/app/models/application_record.rb @@ -7,9 +7,9 @@ class ApplicationRecord < ActiveRecord::Base extending(PaginationExtension).paginate(*options) end - def paginated_search(params) + def paginated_search(params, count_pages: params[:search].present?) search_params = params.fetch(:search, {}).permit! - search(search_params).paginate(params[:page], limit: params[:limit], search_count: params[:search]) + search(search_params).paginate(params[:page], limit: params[:limit], search_count: count_pages) end end end