From 6a5f448853e75bd9bcd04ebf56f5c4fa66d83efa Mon Sep 17 00:00:00 2001 From: Ilya Zhitomirskiy <iz268@nyu.edu> Date: Tue, 11 Oct 2011 11:31:46 -0700 Subject: [PATCH] added comment count correlation --- lib/statistics.rb | 14 ++++++++++++-- spec/lib/statistics_spec.rb | 11 ++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/lib/statistics.rb b/lib/statistics.rb index a627099606..2cef34652d 100644 --- a/lib/statistics.rb +++ b/lib/statistics.rb @@ -21,6 +21,17 @@ class Statistics SQL end + def comments_count_sql + <<SQL + SELECT users.id AS id, count(comments.id) AS count + FROM users + JOIN people ON people.owner_id = users.id + LEFT OUTER JOIN comments ON people.id = comments.author_id + #{self.where_clause_sql} + GROUP BY users.id +SQL + end + def invites_sent_count_sql <<SQL SELECT users.id AS id, count(invitations.id) AS count @@ -90,13 +101,12 @@ SQL def generate_correlations result = {} - [:posts_count, :invites_sent_count, #:tags_followed_count, + [:posts_count, :comments_count, :invites_sent_count, #:tags_followed_count, :mentions_count, :contacts_sharing_with_count].each do |metric| result[metric] = self.correlate(metric,:sign_in_count) end result end - def correlation(x_array, y_array) x = x_array.to_scale diff --git a/spec/lib/statistics_spec.rb b/spec/lib/statistics_spec.rb index 1d14f06b22..9b8b0180d2 100644 --- a/spec/lib/statistics_spec.rb +++ b/spec/lib/statistics_spec.rb @@ -20,6 +20,15 @@ describe Statistics do end end + describe '#comments_count_sql' do + it "pulls back an array of post counts and ids" do + sm = Factory.create(:status_message, :author => alice.person) + bob.comment("sup", :post => sm) + User.connection.select_all(@stats.comments_count_sql).should =~ @result + end + end + + describe '#invites_sent_count_sql' do it "pulls back an array of invite counts and ids" do Invitation.batch_invite(["a@a.com"], :sender => bob, :aspect => bob.aspects.first, :service => 'email') @@ -64,7 +73,7 @@ describe Statistics do end end - ["posts_count", "invites_sent_count", "tags_followed_count", + ["posts_count", "comments_count", "invites_sent_count", "tags_followed_count", "mentions_count", "sign_in_count", "contacts_sharing_with_count" ].each do |method| it "#{method}_sql calls where_sql" do -- GitLab