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/lib/jam_ruby/models/jam_track.rb b/ruby/lib/jam_ruby/models/jam_track.rb index 1301c03bf..382ad9473 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/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 fc725c59b..6b0861d03 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..8840412ec 100644 --- a/ruby/spec/factories.rb +++ b/ruby/spec/factories.rb @@ -584,6 +584,8 @@ 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/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 278700e17..c93345b02 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 child(:jam_track_tracks => :tracks) { 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 76b9ae5a9..d387c44a6 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