* VRFS-2408 - remove dup tracks from interfrace
This commit is contained in:
parent
5f87fdab00
commit
fb36b8e380
|
|
@ -224,3 +224,4 @@ emails_from_update2.sql
|
|||
add_youtube_flag_to_claimed_recordings.sql
|
||||
add_session_create_type.sql
|
||||
user_syncs_and_quick_mix.sql
|
||||
user_syncs_fix_dup_tracks_2408.sql
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
DROP VIEW user_syncs;
|
||||
|
||||
CREATE VIEW user_syncs AS
|
||||
SELECT DISTINCT b.id AS recorded_track_id,
|
||||
CAST(NULL as BIGINT) AS mix_id,
|
||||
CAST(NULL as BIGINT) as quick_mix_id,
|
||||
b.id AS unified_id,
|
||||
a.user_id AS user_id,
|
||||
b.fully_uploaded,
|
||||
recordings.created_at AS created_at,
|
||||
recordings.id AS recording_id
|
||||
FROM recorded_tracks a INNER JOIN recordings ON a.recording_id = recordings.id AND duration IS NOT NULL AND all_discarded = FALSE INNER JOIN recorded_tracks b ON a.recording_id = b.recording_id
|
||||
UNION ALL
|
||||
SELECT CAST(NULL as BIGINT) AS recorded_track_id,
|
||||
mixes.id AS mix_id,
|
||||
CAST(NULL as BIGINT) AS quick_mix_id,
|
||||
mixes.id AS unified_id,
|
||||
claimed_recordings.user_id AS user_id,
|
||||
NULL as fully_uploaded,
|
||||
recordings.created_at AS created_at,
|
||||
recordings.id AS recording_id
|
||||
FROM mixes INNER JOIN recordings ON mixes.recording_id = recordings.id INNER JOIN claimed_recordings ON recordings.id = claimed_recordings.recording_id WHERE claimed_recordings.discarded = FALSE
|
||||
UNION ALL
|
||||
SELECT CAST(NULL as BIGINT) AS recorded_track_id,
|
||||
CAST(NULL as BIGINT) AS mix_id,
|
||||
quick_mixes.id AS quick_mix_id,
|
||||
quick_mixes.id AS unified_id,
|
||||
quick_mixes.user_id,
|
||||
quick_mixes.fully_uploaded,
|
||||
recordings.created_at AS created_at,
|
||||
recordings.id AS recording_id
|
||||
FROM quick_mixes INNER JOIN recordings ON quick_mixes.recording_id = recordings.id AND duration IS NOT NULL AND all_discarded = FALSE;
|
||||
|
|
@ -167,6 +167,54 @@ describe UserSync do
|
|||
user_syncs.length.should == 0
|
||||
end
|
||||
end
|
||||
|
||||
describe "one recording with multi-track users" do
|
||||
let!(:recording1) {
|
||||
recording = FactoryGirl.create(:recording, owner: user1, band: nil, duration:1)
|
||||
recording.recorded_tracks << FactoryGirl.create(:recorded_track, recording: recording, user: recording.owner)
|
||||
recording.recorded_tracks << FactoryGirl.create(:recorded_track, recording: recording, user: recording.owner)
|
||||
recording.recorded_tracks << FactoryGirl.create(:recorded_track, recording: recording, user: user2)
|
||||
recording.recorded_tracks << FactoryGirl.create(:recorded_track, recording: recording, user: user2)
|
||||
recording.save!
|
||||
recording.reload
|
||||
recording
|
||||
}
|
||||
|
||||
let(:sorted_tracks) {
|
||||
Array.new(recording1.recorded_tracks).sort! {|a, b|
|
||||
if a.created_at == b.created_at
|
||||
a.id <=> b.id
|
||||
else
|
||||
a.created_at <=> b.created_at
|
||||
end
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
it "one user decides to keep the recording" do
|
||||
claimed_recording = FactoryGirl.create(:claimed_recording, user: user1, recording: recording1, discarded:false)
|
||||
claimed_recording.recording.should == recording1
|
||||
|
||||
data = UserSync.index({user_id: user1.id})
|
||||
data[:next].should be_nil
|
||||
user_syncs = data[:query]
|
||||
user_syncs.length.should == 4
|
||||
user_syncs[0].recorded_track.should == sorted_tracks[0]
|
||||
user_syncs[1].recorded_track.should == sorted_tracks[1]
|
||||
user_syncs[2].recorded_track.should == sorted_tracks[2]
|
||||
user_syncs[3].recorded_track.should == sorted_tracks[3]
|
||||
|
||||
data = UserSync.index({user_id: user2.id})
|
||||
data[:next].should be_nil
|
||||
user_syncs = data[:query]
|
||||
user_syncs.length.should == 4
|
||||
user_syncs[0].recorded_track.should == sorted_tracks[0]
|
||||
user_syncs[1].recorded_track.should == sorted_tracks[1]
|
||||
user_syncs[2].recorded_track.should == sorted_tracks[2]
|
||||
user_syncs[3].recorded_track.should == sorted_tracks[3]
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe "pagination" do
|
||||
|
|
|
|||
Loading…
Reference in New Issue