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

@@ -536,7 +536,6 @@ class Artist < ApplicationRecord
def search(params)
q = super
params = {} if params.blank?
case params[:name]
when /^http/
@@ -581,18 +580,6 @@ class Artist < ApplicationRecord
q = q.url_matches(params[:url_matches])
end
params[:order] ||= params.delete(:sort)
case params[:order]
when "name"
q = q.order("artists.name")
when "updated_at"
q = q.order("artists.updated_at desc")
when "post_count"
q = q.includes(:tag).order("tags.post_count desc nulls last").references(:tags)
else
q = q.order("artists.id desc")
end
if params[:is_active] == "true"
q = q.active
elsif params[:is_active] == "false"
@@ -624,6 +611,18 @@ class Artist < ApplicationRecord
q = q.includes(:tag).where("tags.name IS NULL OR tags.post_count <= 0").references(:tags)
end
params[:order] ||= params.delete(:sort)
case params[:order]
when "name"
q = q.order("artists.name")
when "updated_at"
q = q.order("artists.updated_at desc")
when "post_count"
q = q.includes(:tag).order("tags.post_count desc nulls last").order("artists.name").references(:tags)
else
q = q.apply_default_order(params)
end
q
end
end