mirror of
https://github.com/discourse/discourse.git
synced 2024-11-26 06:43:44 +08:00
35 lines
1.0 KiB
Ruby
35 lines
1.0 KiB
Ruby
class GivenDailyLike < ActiveRecord::Base
|
|
belongs_to :user
|
|
|
|
def self.find_for(user_id, date)
|
|
where(user_id: user_id, given_date: date)
|
|
end
|
|
|
|
def self.increment_for(user_id)
|
|
return unless user_id
|
|
given_date = Date.today
|
|
|
|
# upsert would be nice here
|
|
rows = find_for(user_id, given_date).update_all('likes_given = likes_given + 1')
|
|
|
|
if rows == 0
|
|
create(user_id: user_id, given_date: given_date, likes_given: 1)
|
|
else
|
|
find_for(user_id, given_date)
|
|
.where('limit_reached = false AND likes_given >= :limit', limit: SiteSetting.max_likes_per_day)
|
|
.update_all(limit_reached: true)
|
|
end
|
|
end
|
|
|
|
def self.decrement_for(user_id)
|
|
return unless user_id
|
|
|
|
given_date = Date.today
|
|
|
|
find_for(user_id, given_date).update_all('likes_given = likes_given - 1')
|
|
find_for(user_id, given_date)
|
|
.where('limit_reached = true AND likes_given < :limit', limit: SiteSetting.max_likes_per_day)
|
|
.update_all(limit_reached: false)
|
|
end
|
|
end
|