VRFS-80 session history
This commit is contained in:
parent
2c4e550910
commit
225a81adb9
|
|
@ -35,6 +35,8 @@ require "jam_ruby/models/band_musician"
|
|||
require "jam_ruby/models/connection"
|
||||
require "jam_ruby/models/friendship"
|
||||
require "jam_ruby/models/music_session"
|
||||
require "jam_ruby/models/music_session_history"
|
||||
require "jam_ruby/models/music_session_user_history"
|
||||
require "jam_ruby/models/invitation"
|
||||
require "jam_ruby/models/fan_invitation"
|
||||
require "jam_ruby/models/friend_request"
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ module JamRuby
|
|||
if connection.errors.any?
|
||||
raise ActiveRecord::Rollback
|
||||
else
|
||||
|
||||
MusicSessionUserHistory.save(music_session_id, user_id, client_id)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -212,7 +212,7 @@ module JamRuby
|
|||
end
|
||||
|
||||
begin
|
||||
# we include user_id in the query as an act o security, so that a user can't access someone else' client connection
|
||||
# we include user_id in the query as an act of security, so that a user can't access someone else's client connection
|
||||
conn.exec("UPDATE connections SET music_session_id = $1, as_musician = $2 WHERE client_id = $3 and user_id = $4", [music_session_id, as_musician, client_id, user_id]) do |result|
|
||||
if result.cmd_tuples == 1
|
||||
@log.debug "associated music_session with connection for client=#{client_id}, music_session=#{music_session_id}, and user=#{user_id}"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,52 @@
|
|||
module JamRuby
|
||||
class MusicSessionHistory < ActiveRecord::Base
|
||||
|
||||
self.table_name = "music_sessions_history"
|
||||
|
||||
self.primary_key = 'id'
|
||||
|
||||
has_many :music_session_user_histories, :class_name => "JamRuby::MusicSessionUserHistory", :foreign_key => "music_session_id"
|
||||
|
||||
def self.index(current_user, user_id, band_id = nil, genre = nil)
|
||||
hide_private = false
|
||||
if current_user.id != user_id
|
||||
hide_private = false # TODO: change to true once public flag exists
|
||||
end
|
||||
|
||||
query = MusicSessionHistory
|
||||
.joins(
|
||||
%Q{
|
||||
LEFT OUTER JOIN
|
||||
music_sessions_user_history
|
||||
ON
|
||||
music_sessions_history.music_session_id = music_sessions_user_history.music_session_id
|
||||
}
|
||||
)
|
||||
.where(
|
||||
%Q{
|
||||
music_sessions_history.user_id = '#{user_id}'
|
||||
}
|
||||
)
|
||||
|
||||
#query = query.where("public = false") unless !hide_private
|
||||
query = query.where("music_sessions_history.band_id = '#{band_id}") unless band_id.nil?
|
||||
query = query.where("music_sessions_history.genres like '%#{genre}%'") unless genre.nil?
|
||||
return query
|
||||
end
|
||||
|
||||
def self.save(music_session)
|
||||
session_history = MusicSessionHistory.find_by_music_session_id(music_session.id)
|
||||
|
||||
if session_history.nil?
|
||||
session_history = MusicSessionHistory.new()
|
||||
end
|
||||
|
||||
session_history.music_session_id = music_session.id
|
||||
session_history.description = music_session.description unless music_session.description.nil?
|
||||
session_history.user_id = music_session.creator.id
|
||||
session_history.band_id = music_session.band.id unless music_session.band.nil?
|
||||
session_history.genres = music_session.genres.map { |g| g.id }.join '|'
|
||||
session_history.save
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
module JamRuby
|
||||
class MusicSessionUserHistory < ActiveRecord::Base
|
||||
|
||||
self.table_name = "music_sessions_user_history"
|
||||
|
||||
self.primary_key = 'id'
|
||||
|
||||
has_many :users, :foreign_key => "user_id", :class_name => "JamRuby::User"
|
||||
belongs_to :musician_session_history, :class_name => "JamRuby::MusicSessionHistory", :foreign_key => "music_session_id"
|
||||
|
||||
def self.save(music_session_id, user_id, client_id)
|
||||
session_user_history = MusicSessionUserHistory.new()
|
||||
session_user_history.music_session_id = music_session_id
|
||||
session_user_history.user_id = user_id
|
||||
session_user_history.client_id = client_id
|
||||
session_user_history.save
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -78,6 +78,9 @@ module JamRuby
|
|||
has_many :received_band_invitations, :inverse_of => :receiver, :foreign_key => "user_id", :class_name => "JamRuby::BandInvitation"
|
||||
has_many :sent_band_invitations, :inverse_of => :sender, :foreign_key => "creator_id", :class_name => "JamRuby::BandInvitation"
|
||||
|
||||
# session history
|
||||
has_many :music_session_histories, :foreign_key => "user_id", :class_name => "JamRuby::MusicSessionHistory"
|
||||
|
||||
# This causes the authenticate method to be generated (among other stuff)
|
||||
has_secure_password
|
||||
|
||||
|
|
@ -166,6 +169,14 @@ module JamRuby
|
|||
end
|
||||
end
|
||||
|
||||
def session_history(user_id, band_id = nil, genre = nil)
|
||||
return MusicSessionHistory.index(self, user_id, band_id, genre)
|
||||
end
|
||||
|
||||
def session_user_history(user_id, session_id)
|
||||
return MusicSessionUserHistory.where("music_session_id='#{session_id}'")
|
||||
end
|
||||
|
||||
def to_s
|
||||
return email unless email.nil?
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue