diff --git a/app/controllers/modqueue_controller.rb b/app/controllers/modqueue_controller.rb index 44b63fb73..781894915 100644 --- a/app/controllers/modqueue_controller.rb +++ b/app/controllers/modqueue_controller.rb @@ -5,12 +5,12 @@ class ModqueueController < ApplicationController def index authorize :modqueue @posts = Post.includes(:appeals, :disapprovals, :uploader, flags: [:creator]).in_modqueue.available_for_moderation(CurrentUser.user, hidden: search_params[:hidden]) - @posts = @posts.paginated_search(params, order: "modqueue", count_pages: true) - @modqueue_posts = @posts.reselect(nil).reorder(nil).offset(nil).limit(nil) + @posts = @posts.paginated_search(params, order: "modqueue", count_pages: true, count: @modqueue_posts.to_a.size) + @pending_post_count = @modqueue_posts.select(&:is_pending?).count @flagged_post_count = @modqueue_posts.select(&:is_flagged?).count - @disapproval_reasons = PostDisapproval.where(post: @modqueue_posts.reselect(:id)).where.not(reason: "disinterest").group(:reason).order(count: :desc).distinct.count(:post_id) + @disapproval_reasons = PostDisapproval.where(post_id: @modqueue_posts.map(&:id)).where.not(reason: "disinterest").group(:reason).order(count: :desc).distinct.count(:post_id) @uploaders = @modqueue_posts.map(&:uploader).tally.sort_by(&:last).reverse.take(20).to_h @tags = RelatedTagCalculator.frequent_tags_for_post_relation(@modqueue_posts) diff --git a/app/models/post.rb b/app/models/post.rb index c76d9857d..93cbfa75c 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -63,7 +63,7 @@ class Post < ApplicationRecord scope :flagged, -> { where(is_flagged: true) } scope :banned, -> { where(is_banned: true) } scope :active, -> { where(is_pending: false, is_deleted: false, is_flagged: false).where.not(id: PostAppeal.pending) } - scope :appealed, -> { where(id: PostAppeal.pending.select(:post_id)) } + scope :appealed, -> { deleted.where(id: PostAppeal.pending.select(:post_id)) } scope :in_modqueue, -> { pending.or(flagged).or(appealed) } scope :expired, -> { pending.where("posts.created_at < ?", Danbooru.config.moderation_period.ago) } diff --git a/db/migrate/20200816175151_add_deleted_index_on_posts.rb b/db/migrate/20200816175151_add_deleted_index_on_posts.rb new file mode 100644 index 000000000..fc12af615 --- /dev/null +++ b/db/migrate/20200816175151_add_deleted_index_on_posts.rb @@ -0,0 +1,5 @@ +class AddDeletedIndexOnPosts < ActiveRecord::Migration[6.0] + def change + add_index :posts, :is_deleted, where: "is_deleted = true" + end +end diff --git a/db/structure.sql b/db/structure.sql index e600fba4c..c5813449e 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -6757,6 +6757,13 @@ CREATE INDEX index_posts_on_image_height ON public.posts USING btree (image_heig CREATE INDEX index_posts_on_image_width ON public.posts USING btree (image_width); +-- +-- Name: index_posts_on_is_deleted; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_posts_on_is_deleted ON public.posts USING btree (is_deleted) WHERE (is_deleted = true); + + -- -- Name: index_posts_on_is_flagged; Type: INDEX; Schema: public; Owner: - -- @@ -7410,6 +7417,8 @@ INSERT INTO "schema_migrations" (version) VALUES ('20200403210353'), ('20200406054838'), ('20200427190519'), -('20200803022359'); +('20200520060951'), +('20200803022359'), +('20200816175151');