about summary refs log tree commit diff
path: root/app/models/favourite.rb
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2018-08-14 19:19:32 +0200
committerGitHub <noreply@github.com>2018-08-14 19:19:32 +0200
commit8e111b753a3411b258cdb008c9a53bad696f4df1 (patch)
tree6ae9387736b8abf180c93f7f0d25c6952c04b9b2 /app/models/favourite.rb
parent018a9e4e7fdfac0f2e482f4b5fa66247afbc2ddb (diff)
Move status counters to separate table, count replies (#8104)
* Move status counters to separate table, count replies

* Migration to remove old counter columns from statuses table

* Fix schema file
Diffstat (limited to 'app/models/favourite.rb')
-rw-r--r--app/models/favourite.rb13
1 files changed, 2 insertions, 11 deletions
diff --git a/app/models/favourite.rb b/app/models/favourite.rb
index 0fce82f6f..ce7a6a336 100644
--- a/app/models/favourite.rb
+++ b/app/models/favourite.rb
@@ -32,20 +32,11 @@ class Favourite < ApplicationRecord
   private
 
   def increment_cache_counters
-    if association(:status).loaded?
-      status.update_attribute(:favourites_count, status.favourites_count + 1)
-    else
-      Status.where(id: status_id).update_all('favourites_count = COALESCE(favourites_count, 0) + 1')
-    end
+    status.increment_count!(:favourites_count)
   end
 
   def decrement_cache_counters
     return if association(:status).loaded? && (status.marked_for_destruction? || status.marked_for_mass_destruction?)
-
-    if association(:status).loaded?
-      status.update_attribute(:favourites_count, [status.favourites_count - 1, 0].max)
-    else
-      Status.where(id: status_id).update_all('favourites_count = GREATEST(COALESCE(favourites_count, 0) - 1, 0)')
-    end
+    status.decrement_count!(:favourites_count)
   end
 end