vrfs-774: changed search counter names to use search_ prefix; added recording and sessions counters

This commit is contained in:
Jonathan Kolyer 2013-11-05 06:25:36 -06:00
parent 16cddf67d2
commit 0813c6efd0
7 changed files with 63 additions and 9 deletions

View File

@ -51,7 +51,7 @@ module JamRuby
case ordering = self.musician_order_param(params)
when :plays
when :followed
sel_str = "COUNT(follows) AS follow_count, #{sel_str}"
sel_str = "COUNT(follows) AS search_follow_count, #{sel_str}"
rel = rel.joins("LEFT JOIN users_followers AS follows ON follows.user_id = users.id")
rel = rel.group("users.id")
rel = rel.order("COUNT(follows) DESC, users.created_at DESC")
@ -59,7 +59,11 @@ module JamRuby
end
rel = rel.joins("LEFT JOIN friendships AS friends ON friends.user_id = users.id")
sel_str = "#{sel_str}, COUNT(friends) AS friend_count"
sel_str = "#{sel_str}, COUNT(friends) AS search_friend_count"
rel = rel.joins("LEFT JOIN recordings AS records ON records.owner_id = users.id")
sel_str = "#{sel_str}, COUNT(records) AS search_recording_count"
rel = rel.joins("LEFT JOIN music_sessions AS sessions ON sessions.user_id = users.id")
sel_str = "#{sel_str}, COUNT(sessions) AS search_session_count"
rel = rel.select(sel_str)
perpage = params[:per_page] || M_PER_PAGE

View File

@ -55,7 +55,7 @@ describe User do
results = Search.musician_search(params)
results.musicians.count.should == 2
results.musicians[0].follow_count.to_i.should_not == 0
results.musicians[0].search_follow_count.to_i.should_not == 0
end
it "should have friends counter " do
@ -63,7 +63,36 @@ describe User do
results = Search.musician_search
friend = results.musicians.detect { |mm| mm.id == @user1.id }
friend.should_not == nil
friend.friend_count.should == 1
friend.search_friend_count.to_i.should == 1
end
it "should have recording counter " do
connection = FactoryGirl.create(:connection, :user => @user1)
instrument = FactoryGirl.create(:instrument, :description => 'a great instrument')
track = FactoryGirl.create(:track, :connection => connection, :instrument => instrument)
music_session = FactoryGirl.create(:music_session, :creator => @user1, :musician_access => true)
music_session.connections << connection
music_session.save
recording = Recording.start(music_session.id, @user1)
recording.stop
recording.reload
genre = FactoryGirl.create(:genre)
recording.claim(@user1, "name", genre, true, true)
recording.reload
recording.users.length.should == 1
recording.users.first.should == @user1
@user1.reload
@user1.recordings.length.should == 1
@user1.recordings.first.should == recording
recording.claimed_recordings.length.should == 1
@user1.recordings.detect { |rr| rr == recording }.should_not be nil
results = Search.musician_search
uu = results.musicians.detect { |mm| mm.id == @user1.id }
uu.should_not == nil
uu.search_recording_count.to_i.should == 1
uu.search_session_count.to_i.should == 1
end
it "should find all musicians sorted by plays " do

View File

@ -123,8 +123,10 @@
musician_location: mm.city + ', ' + mm.state,
instruments: instr_logos,
biography: mm['biography'],
follow_count: mm['follow_count'],
friend_count: mm['friend_count'],
follow_count: mm['search_follow_count'],
friend_count: mm['search_friend_count'],
recording_count: mm['search_recording_count'],
session_count: mm['search_session_count'],
musician_follow_template: follows
};
renderings += context.JK.fillTemplate(mTemplate, mVals);

View File

@ -24,8 +24,10 @@ unless @search.musicians.nil? || @search.musicians.size == 0
node :name do |uu| uu.following.name end
end
node :follow_count do |musician| musician.follow_count end
node :friend_count do |musician| musician.friend_count end
node :follow_count do |musician| musician.search_follow_count.to_i rescue 0 end
node :friend_count do |musician| musician.search_friend_count.to_i rescue 0 end
node :recording_count do |musician| musician.search_recording_count.to_i rescue 0 end
node :session_count do |musician| musician.search_session_count.to_i rescue 0 end
}
end

View File

@ -42,7 +42,7 @@
{instruments}
</div>
<br clear="all" /><br />
{follow_count} <img src="../assets/content/icon_friend.png" width="14" height="12" align="absmiddle" />&nbsp;&nbsp;&nbsp;4 <img src="../assets/content/icon_followers.png" width="22" height="12" align="absmiddle" />&nbsp;&nbsp;&nbsp;17 <img src="../assets/content/icon_recordings.png" width="12" height="13" align="absmiddle" />&nbsp;&nbsp;&nbsp;64 <img src="../assets/content/icon_session_tiny.png" width="12" height="12" align="absmiddle" /></span><br /><br />
{friend_count} <img src="../assets/content/icon_friend.png" width="14" height="12" align="absmiddle" />&nbsp;&nbsp;&nbsp;{follow_count} <img src="../assets/content/icon_followers.png" width="22" height="12" align="absmiddle" />&nbsp;&nbsp;&nbsp;{recording_count} <img src="../assets/content/icon_recordings.png" width="12" height="13" align="absmiddle" />&nbsp;&nbsp;&nbsp;{session_count} <img src="../assets/content/icon_session_tiny.png" width="12" height="12" align="absmiddle" /></span><br /><br />
</div>
<div class="left ml35 f11 whitespace w40"><br />

View File

@ -10,6 +10,10 @@ namespace :db do
make_followings
end
task populate_friends: :environment do
make_friends
end
desc "Fill database with music session sample data"
task populate_music_sessions: :environment do
make_users(10) if 14 > User.count
@ -118,4 +122,13 @@ def make_followings
uuu.followings << uu
end
end
end
def make_friends
users = User.all
users[6..-1].each do |uu|
users[0..5].shuffle.each do |uuu|
Friendship.save(uu.id, uuu.id)
end
end
end

View File

@ -82,9 +82,13 @@ describe "Musician Search API", :type => :api do
musician["id"].should == @user4.id
followings= musician['followings']
followings.length.should == 3
musician['follow_count'].to_i.should > 0
friend = response['musicians'].detect { |mm| mm['id'] == @user1.id }
friend['friend_count'].should == 1
musician['recording_count'].should == 0
musician['session_count'].should == 0
end
end
end