Class: GivenDailyLike

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/given_daily_like.rb

Class Method Summary collapse

Class Method Details

.decrement_for(user_id) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'app/models/given_daily_like.rb', line 27

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

.find_for(user_id, date) ⇒ Object



6
7
8
# File 'app/models/given_daily_like.rb', line 6

def self.find_for(user_id, date)
  where(user_id: user_id, given_date: date)
end

.increment_for(user_id) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/models/given_daily_like.rb', line 10

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