From 47fd0cb68dacd841cdcffc88e113557760ae8ead Mon Sep 17 00:00:00 2001 From: Seth Call Date: Thu, 7 Nov 2024 07:35:51 -0600 Subject: [PATCH] Clean up load_history in terms of list all unique participants for a session --- ruby/lib/jam_ruby/models/music_session.rb | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/ruby/lib/jam_ruby/models/music_session.rb b/ruby/lib/jam_ruby/models/music_session.rb index 763b336ac..ebf25772c 100644 --- a/ruby/lib/jam_ruby/models/music_session.rb +++ b/ruby/lib/jam_ruby/models/music_session.rb @@ -568,10 +568,22 @@ module JamRuby return query end + # list all unique participants in a session, for any session that the current_user was once a part of def self.history(current_user, options) offset = options[:offset] || 0 limit = options[:limit] || 10 + #This results in + # SELECT DISTINCT ON(music_sessions.created_at, music_sessions.id, users.id ) music_sessions.id AS session_id, music_sessions_user_history.id AS session_history_id, music_sessions.created_at, music_sessions.name, music_sessions.description, music_sessions.musician_access, music_sessions.approval_required, music_sessions_user_history.instruments, users.first_name, users.last_name, users.photo_url, users.id AS user_id FROM "music_sessions" INNER JOIN + # music_sessions_user_history + # ON + # music_sessions.id = music_sessions_user_history.music_session_id + # INNER JOIN + # users + # ON + # music_sessions_user_history.user_id = users.id + # WHERE music_sessions.id IN ( SELECT DISTINCT music_sessions_user_history.music_session_id FROM music_sessions_user_history where user_id = '1886af5c-b76e-466b-b8d1-30d98e549521) ORDER BY music_sessions.created_at DESC LIMIT 100 OFFSET 1 + # MusicSession.joins( %Q{ INNER JOIN @@ -582,9 +594,10 @@ module JamRuby users ON music_sessions_user_history.user_id = users.id - WHERE users.id = '#{current_user.id}' + WHERE music_sessions.id IN ( SELECT DISTINCT music_sessions_user_history.music_session_id FROM music_sessions_user_history where user_id = '#{current_user.id}') + } - ).order('music_sessions.created_at DESC').select("music_sessions.id AS session_id, music_sessions_user_history.id AS session_history_id, music_sessions.created_at, music_sessions.name, music_sessions.description, music_sessions.musician_access, music_sessions.approval_required, music_sessions_user_history.instruments, users.first_name, users.last_name, users.photo_url, users.id AS user_id").offset(offset).limit(limit) + ).order('music_sessions.created_at DESC').select("DISTINCT ON(music_sessions.created_at, music_sessions.id, users.id ) music_sessions.id AS session_id, music_sessions_user_history.id AS session_history_id, music_sessions.created_at, music_sessions.name, music_sessions.description, music_sessions.musician_access, music_sessions.approval_required, music_sessions_user_history.instruments, users.first_name, users.last_name, users.photo_url, users.id AS user_id").offset(offset).limit(limit) end def self.scheduled user, only_public = false