From f80b0e4f6627dc63850e5280c403ebd6b01e7a6b Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Tue, 20 Jan 2015 02:21:25 -0500 Subject: [PATCH] VRFS-2193 show only active musicians in each feed item detail view for in-progress sessions --- ruby/lib/jam_ruby/connection_manager.rb | 2 ++ ruby/lib/jam_ruby/models/music_session.rb | 18 +++++++++++------- .../models/music_session_user_history.rb | 15 ++++++++++++++- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/ruby/lib/jam_ruby/connection_manager.rb b/ruby/lib/jam_ruby/connection_manager.rb index 135238a02..bcf06b4c5 100644 --- a/ruby/lib/jam_ruby/connection_manager.rb +++ b/ruby/lib/jam_ruby/connection_manager.rb @@ -333,6 +333,8 @@ SQL connection = Connection.find_by_client_id_and_user_id!(client_id, user.id) connection.join_the_session(music_session, as_musician, tracks, user, audio_latency, video_sources) + + JamRuby::MusicSessionUserHistory.join_music_session(user.id, music_session.id) # connection.music_session_id = music_session.id # connection.as_musician = as_musician # connection.joining_session = true diff --git a/ruby/lib/jam_ruby/models/music_session.rb b/ruby/lib/jam_ruby/models/music_session.rb index 375e3806c..f59e0ca21 100644 --- a/ruby/lib/jam_ruby/models/music_session.rb +++ b/ruby/lib/jam_ruby/models/music_session.rb @@ -426,14 +426,18 @@ module JamRuby # returns one user history per user, with instruments all crammed together, and with total duration def unique_user_histories + + user_filter = "music_sessions_user_history.session_removed_at is null" if self.session_removed_at.nil? + MusicSessionUserHistory - .joins(:user) - .select("STRING_AGG(instruments, '|') AS total_instruments, - SUM(date_part('epoch', COALESCE(music_sessions_user_history.session_removed_at, music_sessions_user_history.created_at) - music_sessions_user_history.created_at)) AS total_duration, - music_sessions_user_history.user_id, music_sessions_user_history.music_session_id, users.first_name, users.last_name, users.photo_url") - .group("music_sessions_user_history.user_id, music_sessions_user_history.music_session_id, users.first_name, users.last_name, users.photo_url") - .order("music_sessions_user_history.user_id") - .where(%Q{ music_sessions_user_history.music_session_id = '#{id}'}) + .joins(:user) + .select("STRING_AGG(instruments, '|') AS total_instruments, + SUM(date_part('epoch', COALESCE(music_sessions_user_history.session_removed_at, music_sessions_user_history.created_at) - music_sessions_user_history.created_at)) AS total_duration, + music_sessions_user_history.user_id, music_sessions_user_history.music_session_id, users.first_name, users.last_name, users.photo_url") + .group("music_sessions_user_history.user_id, music_sessions_user_history.music_session_id, users.first_name, users.last_name, users.photo_url") + .order("music_sessions_user_history.user_id") + .where(%Q{ music_sessions_user_history.music_session_id = '#{id}'}) + .where(user_filter) end def duration_minutes diff --git a/ruby/lib/jam_ruby/models/music_session_user_history.rb b/ruby/lib/jam_ruby/models/music_session_user_history.rb index f79e2e810..430c897a1 100644 --- a/ruby/lib/jam_ruby/models/music_session_user_history.rb +++ b/ruby/lib/jam_ruby/models/music_session_user_history.rb @@ -56,6 +56,20 @@ module JamRuby (end_time - self.created_at) / 60.0 end + def self.join_music_session(user_id, session_id) + hist = self + .where(:user_id => user_id) + .where(:music_session_id => session_id) + .limit(1) + .first + hist.start_history if hist + end + + def start_history + self.session_removed_at = nil + self.update_attributes(:session_removed_at => self.session_removed_at, :max_concurrent_connections => determine_max_concurrent) + end + def self.removed_music_session(user_id, session_id) hist = self .where(:user_id => user_id) @@ -67,7 +81,6 @@ module JamRuby def end_history self.session_removed_at = Time.now if self.session_removed_at.nil? - self.update_attributes(:session_removed_at => self.session_removed_at, :max_concurrent_connections => determine_max_concurrent) end