Use cache for todos counter calling TodoService
This commit is contained in:
parent
ec73abcd78
commit
1f2253545b
4 changed files with 16 additions and 3 deletions
|
@ -270,6 +270,7 @@ v 8.10.0
|
|||
- Fix new snippet style bug (elliotec)
|
||||
- Instrument Rinku usage
|
||||
- Be explicit to define merge request discussion variables
|
||||
- Use cache for todos counter calling TodoService
|
||||
- Metrics for Rouge::Plugins::Redcarpet and Rouge::Formatters::HTMLGitlab
|
||||
- RailsCache metris now includes fetch_hit/fetch_miss and read_hit/read_miss info.
|
||||
- Allow [ci skip] to be in any case and allow [skip ci]. !4785 (simon_w)
|
||||
|
|
|
@ -809,13 +809,13 @@ class User < ActiveRecord::Base
|
|||
|
||||
def todos_done_count(force: false)
|
||||
Rails.cache.fetch(['users', id, 'todos_done_count'], force: force) do
|
||||
todos.done.count
|
||||
TodosFinder.new(self, state: :done).execute.count
|
||||
end
|
||||
end
|
||||
|
||||
def todos_pending_count(force: false)
|
||||
Rails.cache.fetch(['users', id, 'todos_pending_count'], force: force) do
|
||||
todos.pending.count
|
||||
TodosFinder.new(self, state: :pending).execute.count
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -73,7 +73,7 @@ module API
|
|||
#
|
||||
delete do
|
||||
todos = find_todos
|
||||
todos.each(&:done)
|
||||
TodoService.new.mark_todos_as_done(todos, current_user)
|
||||
|
||||
todos.length
|
||||
end
|
||||
|
|
|
@ -117,6 +117,12 @@ describe API::Todos, api: true do
|
|||
expect(response.status).to eq(200)
|
||||
expect(pending_1.reload).to be_done
|
||||
end
|
||||
|
||||
it 'updates todos cache' do
|
||||
expect_any_instance_of(User).to receive(:update_todos_count_cache).and_call_original
|
||||
|
||||
delete api("/todos/#{pending_1.id}", john_doe)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -139,6 +145,12 @@ describe API::Todos, api: true do
|
|||
expect(pending_2.reload).to be_done
|
||||
expect(pending_3.reload).to be_done
|
||||
end
|
||||
|
||||
it 'updates todos cache' do
|
||||
expect_any_instance_of(User).to receive(:update_todos_count_cache).and_call_original
|
||||
|
||||
delete api("/todos", john_doe)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue