Class: TopicViewStat

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

Class Method Summary collapse

Class Method Details

.add(topic_id:, date:, anonymous_views:, logged_in_views:) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/topic_view_stat.rb', line 6

def self.add(topic_id:, date:, anonymous_views:, logged_in_views:)
  sql = <<~SQL
        INSERT INTO topic_view_stats (topic_id, viewed_at, anonymous_views, logged_in_views)
        VALUES (:topic_id, :viewed_at, :anon_views, :logged_in_views)
        ON CONFLICT (topic_id, viewed_at)
        DO UPDATE SET
          anonymous_views = topic_view_stats.anonymous_views + :anon_views,
          logged_in_views = topic_view_stats.logged_in_views + :logged_in_views
      SQL

  DB.exec(
    sql,
    topic_id: topic_id,
    viewed_at: date,
    anon_views: anonymous_views,
    logged_in_views: logged_in_views,
  )
end