diff options
| author | Paco Guzman <pacoguzmanp@gmail.com> | 2016-06-02 15:46:58 +0200 |
|---|---|---|
| committer | Paco Guzman <pacoguzmanp@gmail.com> | 2016-06-17 19:04:36 +0200 |
| commit | f6bfa46daae3a00ca6f74abb6e6eddc9eac96197 (patch) | |
| tree | e80a1c3cde48387c034dbec51636b8d2c5277873 /app/models | |
| parent | fcd9f90641d5ee59cc84d8388b7cc372370ac25a (diff) | |
| download | gitlab-ce-f6bfa46daae3a00ca6f74abb6e6eddc9eac96197.tar.gz | |
Cache todo counters (pending/done)18034-cache-todo-counter
- As todos are created/updated inside the TodoService
we repopulate the cache just there for both pending/done todos
- Todos as mark as done from the TodosController we update cache
there too
- All the added methods are kept in the User class for cohesion
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/user.rb | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/app/models/user.rb b/app/models/user.rb index 051745fe252..2e458329cb9 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -827,6 +827,23 @@ class User < ActiveRecord::Base assigned_open_issues_count(force: true) end + def todos_done_count(force: false) + Rails.cache.fetch(['users', id, 'todos_done_count'], force: force) do + todos.done.count + end + end + + def todos_pending_count(force: false) + Rails.cache.fetch(['users', id, 'todos_pending_count'], force: force) do + todos.pending.count + end + end + + def update_todos_count_cache + todos_done_count(force: true) + todos_pending_count(force: true) + end + private def projects_union(min_access_level = nil) |
