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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user