From 05c6716defd8b6f123088f92db30e8cddb55417f Mon Sep 17 00:00:00 2001 From: evazion Date: Fri, 28 Apr 2017 22:48:05 -0500 Subject: [PATCH] Fix date:, age: metatags to use the index. (fix #672). --- app/logical/post_query_builder.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/logical/post_query_builder.rb b/app/logical/post_query_builder.rb index 6c5400321..22353c57a 100644 --- a/app/logical/post_query_builder.rb +++ b/app/logical/post_query_builder.rb @@ -378,6 +378,17 @@ class PostQueryBuilder relation = relation.where("favorites.user_id % 100 = ? and favorites.user_id = ?", user_id % 100, user_id).order("favorites.id DESC") end + # HACK: if we're using a date: or age: metatag, default to ordering by + # created_at instead of id so that the query will use the created_at index. + if q[:date].present? || q[:age].present? + case q[:order] + when "id", "id_asc" + q[:order] = "created_at_asc" + when "id_desc", nil + q[:order] = "created_at_desc" + end + end + if q[:order] == "rank" relation = relation.where("posts.score > 0 and posts.created_at >= ?", 2.days.ago) elsif q[:order] == "landscape" || q[:order] == "portrait" @@ -403,6 +414,12 @@ class PostQueryBuilder when "favcount_asc" relation = relation.order("posts.fav_count ASC, posts.id ASC") + when "created_at", "created_at_desc" + relation = relation.order("posts.created_at DESC") + + when "created_at_asc" + relation = relation.order("posts.created_at ASC") + when "change", "change_desc" relation = relation.order("posts.updated_at DESC, posts.id DESC")