vrfs-268: tweaking music_session_*history associations; added life cycle end for music_session_user_history

This commit is contained in:
Jonathan Kolyer 2013-07-30 12:26:26 -05:00
parent 9d2b51c66e
commit 4cc679becd
6 changed files with 86 additions and 10 deletions

View File

@ -329,9 +329,10 @@ SQL
if result.cmd_tuples == 1
@log.debug("disassociated music_session with connection for client_id=#{client_id}, user_id=#{user_id}")
JamRuby::MusicSessionUserHistory.removed_music_session(user_id, music_session_id)
session_checks(conn, previous_music_session_id, user_id)
Notification.send_musician_session_depart(music_session, connection, user)
elsif result.cmd_tuples == 0
@log.debug "leave_music_session no connection found with client_id=#{client_id}"
raise ActiveRecord::RecordNotFound

View File

@ -32,6 +32,7 @@ module JamRuby
# music_sessions
has_many :music_sessions, :class_name => "JamRuby::MusicSession", :foreign_key => "band_id"
has_many :music_session_history, :class_name => "JamRuby::MusicSessionHistory", :foreign_key => "band_id", :inverse_of => :band
def liker_count
return self.likers.size

View File

@ -5,7 +5,34 @@ module JamRuby
self.primary_key = 'id'
has_many :music_session_user_histories, :class_name => "JamRuby::MusicSessionUserHistory", :foreign_key => "music_session_id"
# for some reason the association is not working, i suspect has to do with the foreign key
def music_session_user_histories
@msuh ||= JamRuby::MusicSessionUserHistory
.where(:music_session_id => self.music_session_id)
.order('created_at DESC')
end
# has_many(:music_session_user_histories,
# :class_name => "JamRuby::MusicSessionUserHistory",
# :foreign_key => :music_session_id,
# :order => 'created_at DESC',
# :inverse_of => :music_session_history)
has_one(:perf_data,
:class_name => "JamRuby::MusicSessionPerfData",
:foreign_key => "music_session_id",
:inverse_of => :music_session)
belongs_to(:user,
:class_name => 'JamRuby::User',
:foreign_key => :user_id,
:inverse_of => :music_session_histories)
belongs_to(:band,
:class_name => 'JamRuby::Band',
:foreign_key => :band_id,
:inverse_of => :music_session_history)
GENRE_SEPARATOR = '|'
def self.index(current_user, user_id, band_id = nil, genre = nil)
hide_private = false
@ -53,7 +80,7 @@ module JamRuby
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.genres = music_session.genres.map { |g| g.id }.join GENRE_SEPARATOR
session_history.save!
end
@ -64,6 +91,16 @@ module JamRuby
.limit(1)
.first
hist.update_attribute(:session_removed_at, Time.now) if hist
JamRuby::MusicSessionUserHistory.removed_music_session(user_id, session_id)
end
def duration_minutes
end_time = self.session_removed_at || Time.now
(end_time - self.created_at) / 60.0
end
def perf_uri
self.perf_data.try(:uri)
end
end

View File

@ -7,9 +7,12 @@ module JamRuby
attr_accessible :uri
belongs_to :music_session, :class_name => "JamRuby::MusicSessionHistory"
belongs_to(:music_session,
:class_name => "JamRuby::MusicSessionHistory",
:foreign_key => :music_session_id,
:inverse_of => :perf_data)
#mount_uploader :uri, PerfDataUploader
# mount_uploader :uri, PerfDataUploader
validates :music_session, :presence => true
validates :client_id, :presence => true
@ -21,4 +24,5 @@ module JamRuby
self.uri = "perf_data/#{self.music_session_id}/#{self.client_id}-#{self.created_at.to_i}"
end
end
end

View File

@ -5,8 +5,22 @@ module JamRuby
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"
belongs_to(:user,
:class_name => "JamRuby::User",
:foreign_key => "user_id",
:inverse_of => :music_session_user_histories)
# for some reason the association is not working, i suspect has to do with the foreign key
def music_session_history
@msh ||= JamRuby::MusicSessionHistory
.where(:music_session_id => self.music_session_id)
.limit(1)
.first
end
# belongs_to(:music_session_history,
# :class_name => "JamRuby::MusicSessionHistory",
# :foreign_key => :music_session_id,
# :inverse_of => :music_session_user_histories)
def self.save(music_session_id, user_id, client_id)
session_user_history = MusicSessionUserHistory.new()
@ -15,5 +29,24 @@ module JamRuby
session_user_history.client_id = client_id
session_user_history.save
end
def user_email
self.user ? self.user.email : '<user deleted>'
end
def duration_minutes
end_time = self.session_removed_at || Time.now
(end_time - self.created_at) / 60.0
end
def self.removed_music_session(user_id, session_id)
hist = self
.where(:user_id => user_id)
.where(:music_session_id => session_id)
.limit(1)
.first
hist.update_attribute(:session_removed_at, Time.now) if hist
end
end
end
end

View File

@ -93,8 +93,8 @@ module JamRuby
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"
has_many :music_session_user_histories, :foreign_key => "user_id", :class_name => "JamRuby::MusicSessionUserHistory"
has_many :music_session_histories, :foreign_key => "user_id", :class_name => "JamRuby::MusicSessionHistory", :inverse_of => :user
has_many :music_session_user_histories, :foreign_key => "user_id", :class_name => "JamRuby::MusicSessionUserHistory", :inverse_of => :user
# saved tracks
has_many :recorded_tracks, :foreign_key => "user_id", :class_name => "JamRuby::RecordedTrack", :inverse_of => :user