vrfs-268: tweaking music_session_*history associations; added life cycle end for music_session_user_history
This commit is contained in:
parent
9d2b51c66e
commit
4cc679becd
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue