Clean up load_history in terms of list all unique participants for a session

This commit is contained in:
Seth Call 2024-11-07 07:35:51 -06:00
parent 78ae753d87
commit 47fd0cb68d
1 changed files with 15 additions and 2 deletions

View File

@ -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