aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/favorite.rb
diff options
context:
space:
mode:
authorrhenium <rhenium@rhe.jp>2014-05-18 07:24:20 +0900
committerrhenium <rhenium@rhe.jp>2014-05-18 07:24:20 +0900
commitcf2cfc8ec1425bc65851507628934e6f231b19b9 (patch)
tree7b36b911902c4b5daadc1c1612409476fe548539 /app/models/favorite.rb
parent68fcf579ec1e6d8403f6c2f22889299325097f4d (diff)
downloadaclog-cf2cfc8ec1425bc65851507628934e6f231b19b9.tar.gz
collector: bulk insert received events every seconds
Diffstat (limited to 'app/models/favorite.rb')
-rw-r--r--app/models/favorite.rb29
1 files changed, 11 insertions, 18 deletions
diff --git a/app/models/favorite.rb b/app/models/favorite.rb
index 4447ccf..8c4202c 100644
--- a/app/models/favorite.rb
+++ b/app/models/favorite.rb
@@ -2,27 +2,20 @@ class Favorite < ActiveRecord::Base
belongs_to :tweet
belongs_to :user
- def self.create_from_json(json)
- tweet = Tweet.create_from_json(json[:target_object])
- user = User.create_from_json(json[:source])
-
- transaction do
- favorite = Favorite.create!(tweet: tweet, user: user)
- tweet.update_reactions_count(favorites_count: 1, json: json[:target_object])
-
- favorite
+ # This doesn't update Tweet#reactions_count.
+ def self.create_bulk_from_json(array)
+ objects = array.map do |json|
+ self.new(user_id: json[:source][:id],
+ tweet_id: json[:target_object][:id])
end
- rescue ActiveRecord::RecordNotUnique => e
- logger.debug("Duplicate favorite: #{user.id} => #{tweet.id}")
- self.where(tweet: tweet, user: user).first
+
+ self.import objects
end
- def self.destroy_from_json(json)
- transaction do
- deleted_count = self.where(user_id: json[:source][:id], tweet_id: json[:target_object][:id]).delete_all
- if deleted_count > 0
- Tweet.find(json[:target_object][:id]).update_reactions_count(favorites_count: -1, json: json[:target_object])
- end
+ # This doesn't update Tweet#reactions_count.
+ def self.delete_bulk_from_json(array)
+ array.each do |json|
+ self.delete_all(user_id: json[:source][:id], tweet_id: json[:target_object][:id])
end
end
end