diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2016-01-26 11:54:57 +0100 |
---|---|---|
committer | Yorick Peterse <yorickpeterse@gmail.com> | 2016-01-27 10:33:33 +0100 |
commit | de7c9c7ab17a8b36ca0c645ba1a7a6971a077fb1 (patch) | |
tree | 96254ba55bfe11bbd5ef8221afb1a37369e9737b /app/models/event.rb | |
parent | 128a6411d2a60c855e3c99303d0157f436e32f13 (diff) | |
download | gitlab-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.rb | 8 |
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 |