diff --git a/db/manifest b/db/manifest index b2ba28c7c..8adfb91e3 100755 --- a/db/manifest +++ b/db/manifest @@ -316,4 +316,5 @@ acappella.sql purchasable_gift_cards.sql versionable_jamtracks.sql session_controller.sql -jam_tracks_bpm.sql \ No newline at end of file +jam_tracks_bpm.sql +jam_track_sessions.sql \ No newline at end of file diff --git a/db/up/jam_track_sessions.sql b/db/up/jam_track_sessions.sql new file mode 100644 index 000000000..7936b5031 --- /dev/null +++ b/db/up/jam_track_sessions.sql @@ -0,0 +1,9 @@ +CREATE TABLE jam_track_sessions ( + id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(), + jam_track_id VARCHAR(64) NOT NULL REFERENCES jam_tracks(id) ON DELETE CASCADE, + session_type VARCHAR(10) NOT NULL, + music_session_id VARCHAR(64) REFERENCES music_sessions(id) ON DELETE SET NULL, + user_id VARCHAR(64) NOT NULL REFERENCES users(id), + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); \ No newline at end of file diff --git a/ruby/lib/jam_ruby.rb b/ruby/lib/jam_ruby.rb index b3772ec14..fd91562ab 100755 --- a/ruby/lib/jam_ruby.rb +++ b/ruby/lib/jam_ruby.rb @@ -256,6 +256,7 @@ require "jam_ruby/models/jam_track_search" require "jam_ruby/models/gift_card" require "jam_ruby/models/gift_card_purchase" require "jam_ruby/models/gift_card_type" +require "jam_ruby/models/jam_track_session" include Jampb diff --git a/ruby/lib/jam_ruby/models/active_music_session.rb b/ruby/lib/jam_ruby/models/active_music_session.rb index 182157e23..d8a4552f6 100644 --- a/ruby/lib/jam_ruby/models/active_music_session.rb +++ b/ruby/lib/jam_ruby/models/active_music_session.rb @@ -774,6 +774,8 @@ module JamRuby self.opening_jam_track = true self.save self.opening_jam_track = false + + JamTrackSession.create_session(jam_track, user, self.music_session) if jam_track && user #self.tick_track_changes end diff --git a/ruby/lib/jam_ruby/models/jam_track.rb b/ruby/lib/jam_ruby/models/jam_track.rb index eca9cd7ea..2fea1d443 100644 --- a/ruby/lib/jam_ruby/models/jam_track.rb +++ b/ruby/lib/jam_ruby/models/jam_track.rb @@ -73,6 +73,8 @@ module JamRuby # VRFS-2916 jam_tracks.id is varchar: ADD has_many :plays, :class_name => "JamRuby::PlayablePlay", :as => :playable, :dependent => :destroy + has_many :jam_track_session, :class_name => "JamRuby::JamTrackSession" + # when we know what JamTrack this refund is related to, these are associated belongs_to :recurly_transactions, class_name: 'JamRuby::RecurlyTransactionWebHook' diff --git a/ruby/lib/jam_ruby/models/jam_track_session.rb b/ruby/lib/jam_ruby/models/jam_track_session.rb new file mode 100644 index 000000000..6e244e83b --- /dev/null +++ b/ruby/lib/jam_ruby/models/jam_track_session.rb @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +module JamRuby + class JamTrackSession < ActiveRecord::Base + + BROWSER = 'browser' + SESSION = 'session' + TYPES = [BROWSER, SESSION] + + @@log = Logging.logger[JamTrackSession] + + belongs_to :music_session, class_name: 'JamRuby::MusicSession' + belongs_to :user, class_name: 'JamRuby::User' + belongs_to :jam_track, class_name: 'JamRuby::JamTrack' + + def self.create_session(jam_track, user, music_session) + create(jam_track, user, SESSION, music_session) + end + + def self.create_browser(jam_track, user) + create(jam_track, user, BROWSER, nil) + end + + private + def self.create(jam_track, user, type, music_session) + jam_track_session = JamTrackSession.new + jam_track_session.jam_track = jam_track + jam_track_session.user = user + jam_track_session.session_type = type + jam_track_session.music_session = music_session + jam_track_session.save + jam_track_session + end + end +end \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/music_session.rb b/ruby/lib/jam_ruby/models/music_session.rb index d2998a72b..68c387d47 100644 --- a/ruby/lib/jam_ruby/models/music_session.rb +++ b/ruby/lib/jam_ruby/models/music_session.rb @@ -53,6 +53,7 @@ module JamRuby has_many :invited_fans, :through => :fan_invitations, :class_name => "JamRuby::User", :foreign_key => "receiver_id", :source => :receiver has_many :rsvp_slots, :class_name => "JamRuby::RsvpSlot", :foreign_key => "music_session_id", :dependent => :destroy has_many :music_notations, :class_name => "JamRuby::MusicNotation", :foreign_key => "music_session_id" + has_many :jam_track_session, :class_name => "JamRuby::JamTrackSession" validates :genre, :presence => true validates :description, :presence => true, :no_profanity => true diff --git a/ruby/lib/jam_ruby/models/user.rb b/ruby/lib/jam_ruby/models/user.rb index 842d4beef..9027519eb 100644 --- a/ruby/lib/jam_ruby/models/user.rb +++ b/ruby/lib/jam_ruby/models/user.rb @@ -183,6 +183,8 @@ module JamRuby has_one :musician_search, :class_name => 'JamRuby::MusicianSearch' has_one :band_search, :class_name => 'JamRuby::BandSearch' + has_many :jam_track_session, :class_name => "JamRuby::JamTrackSession" + before_save :default_anonymous_names before_save :create_remember_token, :if => :should_validate_password? before_save :stringify_avatar_info , :if => :updating_avatar diff --git a/web/app/controllers/popups_controller.rb b/web/app/controllers/popups_controller.rb index 6f0903151..b445e567e 100644 --- a/web/app/controllers/popups_controller.rb +++ b/web/app/controllers/popups_controller.rb @@ -33,6 +33,11 @@ class PopupsController < ApplicationController @jamtrack_id = params[:jam_track_id] @websocket = true gon.jamtrack_id = @jamtrack_id + + jam_track = JamTrack.find_by_id(@jamtrack_id) + + JamTrackSession.create_browser(jam_track, current_user) if jam_track && current_user + render :layout => "minimal" end