mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-17 00:26:07 +10:00
Improve performance of user profiles, finding groups, and finding projects This MR improves the following: * Rendering of profile pages and Atom feeds * Finding groups (using GroupsFinder & friends) * Finding projects (using ProjectsFinder & friends) Initially this MR was intended to only improve rendering of Atom feeds, but over time other fixes were introduced as well as the same code was the cause of all these problems. See merge request !1790
37 lines
1.1 KiB
Ruby
37 lines
1.1 KiB
Ruby
# == Sortable concern
|
|
#
|
|
# Set default scope for ordering objects
|
|
#
|
|
module Sortable
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
# By default all models should be ordered
|
|
# by created_at field starting from newest
|
|
default_scope { order_id_desc }
|
|
|
|
scope :order_id_desc, -> { reorder(id: :desc) }
|
|
scope :order_created_desc, -> { reorder(created_at: :desc) }
|
|
scope :order_created_asc, -> { reorder(created_at: :asc) }
|
|
scope :order_updated_desc, -> { reorder(updated_at: :desc) }
|
|
scope :order_updated_asc, -> { reorder(updated_at: :asc) }
|
|
scope :order_name_asc, -> { reorder(name: :asc) }
|
|
scope :order_name_desc, -> { reorder(name: :desc) }
|
|
end
|
|
|
|
module ClassMethods
|
|
def order_by(method)
|
|
case method.to_s
|
|
when 'name_asc' then order_name_asc
|
|
when 'name_desc' then order_name_desc
|
|
when 'updated_asc' then order_updated_asc
|
|
when 'updated_desc' then order_updated_desc
|
|
when 'created_asc' then order_created_asc
|
|
when 'created_desc' then order_created_desc
|
|
else
|
|
all
|
|
end
|
|
end
|
|
end
|
|
end
|