Move all order logic to models

- Have a default order for each model
-- The overall default is ID DESC
- Allow for custom orderings
-- When comma-separated IDs are used
This commit is contained in:
BrokenEagle
2018-01-28 20:46:18 -08:00
parent f83480cc8a
commit d829ab3a00
49 changed files with 134 additions and 116 deletions

View File

@@ -49,9 +49,12 @@ class Pool < ApplicationRecord
where("lower(pools.name) like ? escape E'\\\\'", name.to_escaped_for_sql_like)
end
def default_order
order(updated_at: :desc)
end
def search(params)
q = super
params = {} if params.blank?
if params[:name_matches].present?
q = q.name_matches(params[:name_matches])
@@ -75,18 +78,6 @@ class Pool < ApplicationRecord
q = q.where("pools.is_active = false")
end
params[:order] ||= params.delete(:sort)
case params[:order]
when "name"
q = q.order("pools.name")
when "created_at"
q = q.order("pools.created_at desc")
when "post_count"
q = q.order("pools.post_count desc")
else
q = q.order("pools.updated_at desc")
end
if params[:category] == "series"
q = q.series
elsif params[:category] == "collection"
@@ -99,6 +90,18 @@ class Pool < ApplicationRecord
q = q.undeleted
end
params[:order] ||= params.delete(:sort)
case params[:order]
when "name"
q = q.order("pools.name")
when "created_at"
q = q.order("pools.created_at desc")
when "post_count"
q = q.order("pools.post_count desc").default_order
else
q = q.apply_default_order(params)
end
q
end
end