summaryrefslogtreecommitdiff
path: root/app/models/event.rb
diff options
context:
space:
mode:
authorYorick Peterse <yorickpeterse@gmail.com>2016-01-26 11:54:57 +0100
committerYorick Peterse <yorickpeterse@gmail.com>2016-01-27 10:33:33 +0100
commitde7c9c7ab17a8b36ca0c645ba1a7a6971a077fb1 (patch)
tree96254ba55bfe11bbd5ef8221afb1a37369e9737b /app/models/event.rb
parent128a6411d2a60c855e3c99303d0157f436e32f13 (diff)
downloadgitlab-ce-de7c9c7ab17a8b36ca0c645ba1a7a6971a077fb1.tar.gz
Use Atom update times of the first eventevents-performance
By simply loading the first event from the already sorted set we save ourselves extra (slow) queries just to get the latest update timestamp. This removes the need for Event.latest_update_time and significantly reduces the time needed to build an Atom feed. Fixes gitlab-org/gitlab-ce#12415
Diffstat (limited to 'app/models/event.rb')
-rw-r--r--app/models/event.rb8
1 files changed, 1 insertions, 7 deletions
diff --git a/app/models/event.rb b/app/models/event.rb
index 8dfc1d04709..4be23a1cf72 100644
--- a/app/models/event.rb
+++ b/app/models/event.rb
@@ -49,7 +49,7 @@ class Event < ActiveRecord::Base
scope :code_push, -> { where(action: PUSHED) }
scope :in_projects, ->(projects) do
- where(project_id: projects.reorder(nil).id_only).recent
+ where(project_id: projects.select(:id).reorder(nil)).recent
end
scope :with_associations, -> { includes(project: :namespace) }
@@ -68,12 +68,6 @@ class Event < ActiveRecord::Base
[Event::CREATED, Event::CLOSED, Event::MERGED])
end
- def latest_update_time
- row = select(:updated_at, :project_id).reorder(id: :desc).take
-
- row ? row.updated_at : nil
- end
-
def limit_recent(limit = 20, offset = nil)
recent.limit(limit).offset(offset)
end