2013-02-05 14:16:51 -05:00
class UserVisit < ActiveRecord :: Base
2013-02-27 22:39:42 -05:00
2016-02-03 07:59:51 +05:30
def self . counts_by_day_query ( start_date , end_date , group_id = nil )
result = where ( 'visited_at >= ? and visited_at <= ?' , start_date . to_date , end_date . to_date )
if group_id
result = result . joins ( " INNER JOIN users ON users.id = user_visits.user_id " )
result = result . joins ( " INNER JOIN group_users ON group_users.user_id = users.id " )
result = result . where ( " group_users.group_id = ? " , group_id )
end
result . group ( :visited_at ) . order ( :visited_at )
2015-07-07 12:31:07 -04:00
end
# A count of visits in a date range by day
2016-02-03 07:59:51 +05:30
def self . by_day ( start_date , end_date , group_id = nil )
counts_by_day_query ( start_date , end_date , group_id ) . count
2015-07-07 12:31:07 -04:00
end
2016-02-03 07:59:51 +05:30
def self . mobile_by_day ( start_date , end_date , group_id = nil )
counts_by_day_query ( start_date , end_date , group_id ) . where ( mobile : true ) . count
2013-02-27 22:39:42 -05:00
end
2013-04-05 17:43:48 +11:00
def self . ensure_consistency!
exec_sql <<SQL
2013-10-04 13:28:49 +10:00
UPDATE user_stats u set days_visited =
2013-04-05 17:43:48 +11:00
(
2013-10-04 13:28:49 +10:00
SELECT COUNT ( * ) FROM user_visits v WHERE v . user_id = u . user_id
2013-04-05 17:43:48 +11:00
)
WHERE days_visited < >
(
2013-10-04 13:28:49 +10:00
SELECT COUNT ( * ) FROM user_visits v WHERE v . user_id = u . user_id
2013-04-05 17:43:48 +11:00
)
SQL
end
2013-02-05 14:16:51 -05:00
end
2013-05-24 12:48:32 +10:00
# == Schema Information
#
# Table name: user_visits
#
# id :integer not null, primary key
# user_id :integer not null
# visited_at :date not null
2014-02-07 11:07:36 +11:00
# posts_read :integer default(0)
2015-07-07 12:31:07 -04:00
# mobile :boolean default(FALSE)
2013-05-24 12:48:32 +10:00
#
# Indexes
#
# index_user_visits_on_user_id_and_visited_at (user_id,visited_at) UNIQUE
2015-09-18 10:41:10 +10:00
# index_user_visits_on_visited_at_and_mobile (visited_at,mobile)
2013-05-24 12:48:32 +10:00
#