VRFS-2975 - change jam track Id to varchar(64)

This commit is contained in:
Seth Call 2015-03-25 11:11:10 -05:00
parent 6885424668
commit 53ef0f1b4f
14 changed files with 53 additions and 25 deletions

View File

@ -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)

View File

@ -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
user_reuse_card_and_reedem.sql
jam_track_id_to_varchar.sql

View File

@ -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);

View File

@ -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

View File

@ -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'

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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!

View File

@ -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

View File

@ -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) {

View File

@ -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')

View File

@ -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