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