diff --git a/admin/app/models/cohort.rb b/admin/app/models/cohort.rb index 78751305d..2b72a3936 100644 --- a/admin/app/models/cohort.rb +++ b/admin/app/models/cohort.rb @@ -149,9 +149,8 @@ SELECT played.player_id FROM (SELECT player_id, COUNT(*) cnt FROM playable_plays pp WHERE pp.created_at >= '#{start_date}' AND - pp.created_at <= '#{end_date}' AND - pp.jam_track_id IS NOT NULL /* VRFS-2916 jam_tracks.id is varchar: REMOVE */ - /* pp.playable_type = 'JamRuby::JamTrack' */ /* VRFS-2916 jam_tracks.id is varchar: ADD */ + pp.created_at <= '#{end_date}' AND + pp.playable_type = 'JamRuby::JamTrack' /* VRFS-2916 jam_tracks.id is varchar: ADD */ GROUP BY player_id ) played WHERE #{where} @@ -274,9 +273,9 @@ SQL count = _subquery(assoc_key = :jam_tracks_played, num_user) do |subsql| # VRFS-2916 jam_tracks.id is varchar: REMOVE - subsql += " AND tt.jam_track_id IS NOT NULL " + # subsql += " AND tt.jam_track_id IS NOT NULL " # VRFS-2916 jam_tracks.id is varchar: ADD - # subsql += " AND tt.playable_type = 'JamRuby::JamTrack' " + subsql += " AND tt.playable_type = 'JamRuby::JamTrack' " end _put_data_set(assoc_key, count, num_user) diff --git a/db/manifest b/db/manifest index dbc9dc3a0..4fda5d21b 100755 --- a/db/manifest +++ b/db/manifest @@ -267,4 +267,5 @@ cohorts.sql jam_track_right_admin_purchase.sql jam_track_playable_plays.sql shopping_cart_anonymous.sql -user_reuse_card_and_reedem.sql \ No newline at end of file +user_reuse_card_and_reedem.sql +jam_track_id_to_varchar.sql \ No newline at end of file diff --git a/db/up/jam_track_id_to_varchar.sql b/db/up/jam_track_id_to_varchar.sql new file mode 100644 index 000000000..9a2c0cdfd --- /dev/null +++ b/db/up/jam_track_id_to_varchar.sql @@ -0,0 +1,25 @@ +-- change jam_tracks PRIMARY KEY to VARCHAR(64) + +-- first, drop all constraints and change the types +ALTER TABLE jam_track_tracks DROP CONSTRAINT jam_track_tracks_jam_track_id_fkey; +ALTER TABLE jam_track_tracks ALTER COLUMN jam_track_id TYPE VARCHAR(64); +ALTER TABLE jam_track_tap_ins DROP CONSTRAINT jam_track_tap_ins_jam_track_id_fkey; +ALTER TABLE jam_track_tap_ins ALTER COLUMN jam_track_id TYPE VARCHAR(64); +ALTER TABLE jam_track_rights DROP CONSTRAINT jam_track_rights_jam_track_id_fkey; +ALTER TABLE jam_track_rights ALTER COLUMN jam_track_id TYPE VARCHAR(64); +ALTER TABLE active_music_sessions ALTER COLUMN jam_track_id TYPE VARCHAR(64); +ALTER TABLE recordings DROP CONSTRAINT recordings_jam_track_id_fkey; +ALTER TABLE recordings ALTER COLUMN jam_track_id TYPE VARCHAR(64); +ALTER TABLE playable_plays DROP COLUMN jam_track_id; + + +-- then drop the jamtrack sequence, change it's type, and then set default to UUID +-- DROP SEQUENCE jam_tracks_next_seq; +ALTER TABLE jam_tracks ALTER COLUMN id TYPE VARCHAR(64); +ALTER TABLE jam_tracks ALTER COLUMN id SET DEFAULT uuid_generate_v4(); + +-- add back in all the constraints on the fk tables +ALTER TABLE jam_track_tracks ADD CONSTRAINT jam_track_tracks_jam_track_id_fkey FOREIGN KEY (jam_track_id) REFERENCES jam_tracks(id) ON DELETE CASCADE; +ALTER TABLE jam_track_tap_ins ADD CONSTRAINT jam_track_tap_ins_jam_track_id_fkey FOREIGN KEY (jam_track_id) REFERENCES jam_tracks(id) ON DELETE CASCADE; +ALTER TABLE jam_track_rights ADD CONSTRAINT jam_track_rights_jam_track_id_fkey FOREIGN KEY (jam_track_id) REFERENCES jam_tracks(id); +ALTER TABLE recordings ADD CONSTRAINT recordings_jam_track_id_fkey FOREIGN KEY (jam_track_id) REFERENCES jam_tracks(id); diff --git a/ruby/README.md b/ruby/README.md index 302798539..4f85c80a6 100644 --- a/ruby/README.md +++ b/ruby/README.md @@ -7,5 +7,3 @@ Create development database 'jam_ruby' Once you've created your database, migrate it: `bundle exec jam_ruby up` - - diff --git a/ruby/lib/jam_ruby/models/jam_track.rb b/ruby/lib/jam_ruby/models/jam_track.rb index da38c2fe3..754453b00 100644 --- a/ruby/lib/jam_ruby/models/jam_track.rb +++ b/ruby/lib/jam_ruby/models/jam_track.rb @@ -56,9 +56,9 @@ module JamRuby has_many :recordings, :class_name => "JamRuby::Recording" # VRFS-2916 jam_tracks.id is varchar: REMOVE - has_many :plays, :class_name => "JamRuby::PlayablePlay", :foreign_key => :jam_track_id, :dependent => :destroy + # has_many :plays, :class_name => "JamRuby::PlayablePlay", :foreign_key => :jam_track_id, :dependent => :destroy # VRFS-2916 jam_tracks.id is varchar: ADD - # has_many :plays, :class_name => "JamRuby::PlayablePlay", :as => :playable, :dependent => :destroy + has_many :plays, :class_name => "JamRuby::PlayablePlay", :as => :playable, :dependent => :destroy accepts_nested_attributes_for :jam_track_tracks, allow_destroy: true accepts_nested_attributes_for :jam_track_tap_ins, allow_destroy: true diff --git a/ruby/lib/jam_ruby/models/music_session.rb b/ruby/lib/jam_ruby/models/music_session.rb index a29d0b2f9..e2954d9f3 100644 --- a/ruby/lib/jam_ruby/models/music_session.rb +++ b/ruby/lib/jam_ruby/models/music_session.rb @@ -307,7 +307,7 @@ module JamRuby filter_approved = only_approved ? 'AND rrrs.chosen = true' : '' MusicSession.where(%Q{music_sessions.canceled = FALSE AND - music_sessions.create_type != '#{CREATE_TYPE_QUICK_START}' AND + (music_sessions.create_type is NULL OR music_sessions.create_type != '#{CREATE_TYPE_QUICK_START}') AND (music_sessions.scheduled_start is NULL OR music_sessions.scheduled_start > NOW() - '4 hour'::INTERVAL) AND music_sessions.id in ( select distinct(rs.music_session_id) diff --git a/ruby/lib/jam_ruby/models/playable_play.rb b/ruby/lib/jam_ruby/models/playable_play.rb index 148e672ea..a04018689 100644 --- a/ruby/lib/jam_ruby/models/playable_play.rb +++ b/ruby/lib/jam_ruby/models/playable_play.rb @@ -4,20 +4,20 @@ module JamRuby belongs_to :playable, :polymorphic => :true # VRFS-2916 jam_tracks.id is varchar: REMOVE - belongs_to :jam_track, :foreign_key => :jam_track_id + #belongs_to :jam_track, :foreign_key => :jam_track_id belongs_to :user, :class_name => "JamRuby::User", :foreign_key => "player_id" belongs_to :claimed_recording, :class_name => "JamRuby::ClaimedRecording", :foreign_key => "claimed_recording_id" validate do # VRFS-2916 jam_tracks.id is varchar: REMOVE - if !playable_id && !jam_track_id - self.errors[:base] << 'No playable instance detected' - end + #if !playable_id && !jam_track_id + # self.errors[:base] << 'No playable instance detected' + #end # VRFS-2916 jam_tracks.id is varchar: ADD - # if !playable_id - # self.errors[:base] << 'No playable instance detected' - # end + if !playable_id + self.errors[:base] << 'No playable instance detected' + end if !user self.errors[:base] << 'No user detected' diff --git a/ruby/lib/jam_ruby/models/shopping_cart.rb b/ruby/lib/jam_ruby/models/shopping_cart.rb index adcff537a..b2bbc13ce 100644 --- a/ruby/lib/jam_ruby/models/shopping_cart.rb +++ b/ruby/lib/jam_ruby/models/shopping_cart.rb @@ -77,7 +77,7 @@ module JamRuby duplicate_found = false any_user.shopping_carts.each do |shopping_cart| - if shopping_cart.cart_type == JamTrack::PRODUCT_TYPE && shopping_cart.cart_id.to_i == jam_track.id + if shopping_cart.cart_type == JamTrack::PRODUCT_TYPE && shopping_cart.cart_id == jam_track.id duplicate_found = true return end diff --git a/ruby/lib/jam_ruby/models/user.rb b/ruby/lib/jam_ruby/models/user.rb index 2c6a627f8..d41a68884 100644 --- a/ruby/lib/jam_ruby/models/user.rb +++ b/ruby/lib/jam_ruby/models/user.rb @@ -72,9 +72,9 @@ module JamRuby has_many :playing_jam_tracks, :class_name => "JamRuby::ActiveMusicSession", :inverse_of => :jam_track_initiator # VRFS-2916 jam_tracks.id is varchar: REMOVE - has_many :jam_tracks_played, :class_name => "JamRuby::PlayablePlay", :foreign_key => 'player_id', :conditions => "jam_track_id IS NOT NULL" + # has_many :jam_tracks_played, :class_name => "JamRuby::PlayablePlay", :foreign_key => 'player_id', :conditions => "jam_track_id IS NOT NULL" # VRFS-2916 jam_tracks.id is varchar: ADD - # has_many :jam_tracks_played, :class_name => "JamRuby::PlayablePlay", :foreign_key => 'player_id', :conditions => ["playable_type = 'JamRuby::JamTrack'"] + has_many :jam_tracks_played, :class_name => "JamRuby::PlayablePlay", :foreign_key => 'player_id', :conditions => ["playable_type = 'JamRuby::JamTrack'"] # self.id = user_id in likes table has_many :likings, :class_name => "JamRuby::Like", :inverse_of => :user, :dependent => :destroy diff --git a/ruby/spec/factories.rb b/ruby/spec/factories.rb index 418399a8f..74f0fb924 100644 --- a/ruby/spec/factories.rb +++ b/ruby/spec/factories.rb @@ -584,6 +584,7 @@ FactoryGirl.define do end factory :playable_play, :class => JamRuby::PlayablePlay do + association :user, factory: :user end factory :recording_like, :class => JamRuby::RecordingLiker do diff --git a/ruby/spec/jam_ruby/models/jam_track_right_spec.rb b/ruby/spec/jam_ruby/models/jam_track_right_spec.rb index 9a99b731f..530535f8c 100644 --- a/ruby/spec/jam_ruby/models/jam_track_right_spec.rb +++ b/ruby/spec/jam_ruby/models/jam_track_right_spec.rb @@ -98,7 +98,7 @@ describe JamTrackRight do end it "bogus key" do - JamTrackRight.list_keys(user, [2112]).should eq([]) + JamTrackRight.list_keys(user, ['2112']).should eq([]) end it "valid track with no rights to it by querying user" do diff --git a/ruby/spec/jam_ruby/models/jam_track_spec.rb b/ruby/spec/jam_ruby/models/jam_track_spec.rb index d03cf13fe..10cec40cd 100644 --- a/ruby/spec/jam_ruby/models/jam_track_spec.rb +++ b/ruby/spec/jam_ruby/models/jam_track_spec.rb @@ -20,9 +20,9 @@ describe JamTrack do play = PlayablePlay.new # VRFS-2916 jam_tracks.id is varchar: REMOVE - play.jam_track = @jam_track + # play.jam_track = @jam_track # VRFS-2916 jam_tracks.id is varchar: ADD - # play.playable = @jam_track + play.playable = @jam_track play.user = user play.save! diff --git a/ruby/spec/jam_ruby/models/music_session_spec.rb b/ruby/spec/jam_ruby/models/music_session_spec.rb index 6273855d9..e152fed55 100644 --- a/ruby/spec/jam_ruby/models/music_session_spec.rb +++ b/ruby/spec/jam_ruby/models/music_session_spec.rb @@ -854,6 +854,13 @@ describe MusicSession do music_session_1.rsvp_slots[0].rsvp_requests_rsvp_slots[0].save! MusicSession.scheduled_rsvp(creator_1, true).should == [] end + + it "create_type = nil will still return RSVPs" do + music_session_1.create_type = nil + music_session_1.save! + + MusicSession.scheduled_rsvp(creator_1, true).should == [music_session_1] + end end end diff --git a/web/README.md b/web/README.md index 4548ce76b..975118c93 100644 --- a/web/README.md +++ b/web/README.md @@ -1,5 +1,5 @@ - Jasmine Javascript Unit Tests ============================= Open browser to localhost:3000/teaspoon + diff --git a/web/app/controllers/api_jam_tracks_controller.rb b/web/app/controllers/api_jam_tracks_controller.rb index 5be70e52f..f1b4264fa 100644 --- a/web/app/controllers/api_jam_tracks_controller.rb +++ b/web/app/controllers/api_jam_tracks_controller.rb @@ -23,9 +23,9 @@ class ApiJamTracksController < ApiController play.ip_address = request.remote_ip # VRFS-2916 jam_tracks.id is varchar: REMOVE - play.jam_track = JamTrack.where(id: params[:id].to_i).first + # play.jam_track = JamTrack.where(id: params[:id].to_i).first # VRFS-2916 jam_tracks.id is varchar: ADD - # play.playable = JamTrack.where(id: params[:id]).first + play.playable = JamTrack.where(id: params[:id]).first play.save diff --git a/web/app/views/api_jam_tracks/show.rabl b/web/app/views/api_jam_tracks/show.rabl index e78ad3330..e4226b553 100644 --- a/web/app/views/api_jam_tracks/show.rabl +++ b/web/app/views/api_jam_tracks/show.rabl @@ -7,7 +7,7 @@ node :genres do |item| end node :added_cart do |item| - any_user.shopping_carts.where("cart_id='?'",item.id).count != 0 + any_user.shopping_carts.where(cart_id: item.id).count != 0 end node :purchased do |item| diff --git a/web/app/views/clients/_session.html.slim b/web/app/views/clients/_session.html.slim index eb7541100..78b301c80 100644 --- a/web/app/views/clients/_session.html.slim +++ b/web/app/views/clients/_session.html.slim @@ -86,7 +86,7 @@ li a#open-a-recording[href="#"] | Recording - - if Rails.application.config.jam_tracks_available + - if Rails.application.config.jam_tracks_available || (current_user && current_user.admin) li a#open-a-jamtrack[href="#"] | JamTrack diff --git a/web/spec/controllers/api_jam_tracks_controller_spec.rb b/web/spec/controllers/api_jam_tracks_controller_spec.rb index 82208c887..e70578564 100644 --- a/web/spec/controllers/api_jam_tracks_controller_spec.rb +++ b/web/spec/controllers/api_jam_tracks_controller_spec.rb @@ -15,6 +15,7 @@ describe ApiJamTracksController do end before(:each) do + JamTrackRight.destroy_all JamTrack.destroy_all @user = FactoryGirl.create(:user) @jam_track = FactoryGirl.create(:jam_track) @@ -120,7 +121,6 @@ describe ApiJamTracksController do describe "with a JamTrack" do before(:each) do - JamTrackRight.destroy_all # Create a working JamTrack for these tests. The integrity # of this process is checked in other tests: @ogg_path = File.join('spec', 'files', 'on.ogg') diff --git a/web/spec/features/jamtrack_shopping_spec.rb b/web/spec/features/jamtrack_shopping_spec.rb index 908cddd71..daeb34152 100644 --- a/web/spec/features/jamtrack_shopping_spec.rb +++ b/web/spec/features/jamtrack_shopping_spec.rb @@ -17,6 +17,7 @@ describe "JamTrack Shopping", :js => true, :type => :feature, :capybara_feature before(:each) do ShoppingCart.delete_all + JamTrackRight.delete_all JamTrack.delete_all JamTrackTrack.delete_all JamTrackLicensor.delete_all