VRFS-80 session history

This commit is contained in:
Brian Smith 2013-01-06 15:46:48 -05:00
parent 2c4e550910
commit 225a81adb9
5 changed files with 86 additions and 2 deletions

View File

@ -35,6 +35,8 @@ require "jam_ruby/models/band_musician"
require "jam_ruby/models/connection" require "jam_ruby/models/connection"
require "jam_ruby/models/friendship" require "jam_ruby/models/friendship"
require "jam_ruby/models/music_session" 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/invitation"
require "jam_ruby/models/fan_invitation" require "jam_ruby/models/fan_invitation"
require "jam_ruby/models/friend_request" require "jam_ruby/models/friend_request"

View File

@ -182,7 +182,7 @@ module JamRuby
if connection.errors.any? if connection.errors.any?
raise ActiveRecord::Rollback raise ActiveRecord::Rollback
else else
MusicSessionUserHistory.save(music_session_id, user_id, client_id)
end end
end end
@ -212,7 +212,7 @@ module JamRuby
end end
begin 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| 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 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}" @log.debug "associated music_session with connection for client=#{client_id}, music_session=#{music_session_id}, and user=#{user_id}"

View File

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

View File

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

View File

@ -78,6 +78,9 @@ module JamRuby
has_many :received_band_invitations, :inverse_of => :receiver, :foreign_key => "user_id", :class_name => "JamRuby::BandInvitation" 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" 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) # This causes the authenticate method to be generated (among other stuff)
has_secure_password has_secure_password
@ -166,6 +169,14 @@ module JamRuby
end end
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 def to_s
return email unless email.nil? return email unless email.nil?