VRFS-1333 refactoring {recording,music_sessions_history}_plays into playable_plays
This commit is contained in:
parent
6d277f6597
commit
1eb4b80482
|
|
@ -127,4 +127,4 @@ scores_mod_users2.sql
|
|||
user_bio.sql
|
||||
track_changes_counter.sql
|
||||
scores_better_test_data.sql
|
||||
|
||||
plays_refactor.sql
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
DROP table music_sessions_plays;
|
||||
DROP table recordings_plays;
|
||||
|
||||
CREATE TABLE playable_plays(
|
||||
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
playable_id VARCHAR(64) NOT NULL,
|
||||
playable_type VARCHAR(128) NOT NULL,
|
||||
player_id VARCHAR(64) REFERENCES users(id) ON DELETE CASCADE,
|
||||
claimed_recording_id VARCHAR(64) REFERENCES claimed_recordings(id),
|
||||
ip_address inet,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
|
@ -76,7 +76,6 @@ require "jam_ruby/models/music_session"
|
|||
require "jam_ruby/models/music_session_comment"
|
||||
require "jam_ruby/models/music_session_history"
|
||||
require "jam_ruby/models/music_session_liker"
|
||||
require "jam_ruby/models/music_session_play"
|
||||
require "jam_ruby/models/music_session_user_history"
|
||||
require "jam_ruby/models/music_session_perf_data"
|
||||
require "jam_ruby/models/invitation"
|
||||
|
|
@ -92,7 +91,6 @@ require "jam_ruby/models/search"
|
|||
require "jam_ruby/models/recording"
|
||||
require "jam_ruby/models/recording_comment"
|
||||
require "jam_ruby/models/recording_liker"
|
||||
require "jam_ruby/models/recording_play"
|
||||
require "jam_ruby/models/recorded_track"
|
||||
require "jam_ruby/models/recorded_track_observer"
|
||||
require "jam_ruby/models/share_token"
|
||||
|
|
@ -121,13 +119,13 @@ require "jam_ruby/models/icecast_template_socket"
|
|||
require "jam_ruby/models/icecast_server_group"
|
||||
require "jam_ruby/models/icecast_mount_template"
|
||||
require "jam_ruby/models/facebook_signup"
|
||||
require "jam_ruby/models/recording_play"
|
||||
require "jam_ruby/models/feed"
|
||||
require "jam_ruby/models/jam_isp"
|
||||
require "jam_ruby/models/geo_ip_blocks"
|
||||
require "jam_ruby/models/geo_ip_locations"
|
||||
require "jam_ruby/models/score"
|
||||
require "jam_ruby/models/get_work"
|
||||
require "jam_ruby/models/playable_play"
|
||||
|
||||
include Jampb
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ module JamRuby
|
|||
has_many :recorded_tracks, :through => :recording, :class_name => "JamRuby::RecordedTrack"
|
||||
has_many :playing_sessions, :class_name => "JamRuby::MusicSession"
|
||||
has_many :likes, :class_name => "JamRuby::RecordingLiker", :foreign_key => "claimed_recording_id"
|
||||
has_many :plays, :class_name => "JamRuby::RecordingPlay", :foreign_key => "claimed_recording_id"
|
||||
has_many :plays, :class_name => "JamRuby::PlayablePlay", :foreign_key => "claimed_recording_id", :dependent => :destroy
|
||||
has_one :share_token, :class_name => "JamRuby::ShareToken", :inverse_of => :shareable, :foreign_key => 'shareable_id'
|
||||
|
||||
validates :name, no_profanity: true, length: {minimum: 3, maximum: 64}, presence: true
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ module JamRuby
|
|||
has_many :music_session_user_histories, :class_name => "JamRuby::MusicSessionUserHistory", :foreign_key => "music_session_id", :dependent => :delete_all
|
||||
has_many :comments, :class_name => "JamRuby::MusicSessionComment", :foreign_key => "music_session_id"
|
||||
has_many :likes, :class_name => "JamRuby::MusicSessionLiker", :foreign_key => "session_id"
|
||||
has_many :plays, :class_name => "JamRuby::MusicSessionPlay", :foreign_key => "music_session_id"
|
||||
has_many :plays, :class_name => "JamRuby::PlayablePlay", :as => :playable, :dependent => :destroy
|
||||
has_one :share_token, :class_name => "JamRuby::ShareToken", :inverse_of => :shareable, :foreign_key => 'shareable_id'
|
||||
has_one :feed, :class_name => "JamRuby::Feed", :inverse_of => :music_session_history, :foreign_key => 'music_session_id', :dependent => :destroy
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
module JamRuby
|
||||
class MusicSessionPlay < ActiveRecord::Base
|
||||
|
||||
self.table_name = "music_sessions_plays"
|
||||
|
||||
self.primary_key = 'id'
|
||||
|
||||
belongs_to :music_session, :class_name => "JamRuby::MusicSessionHistory", :foreign_key => "music_session_id", :counter_cache => :play_count
|
||||
belongs_to :user, :class_name => "JamRuby::User", :foreign_key => "player_id"
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
module JamRuby
|
||||
class PlayablePlay < ActiveRecord::Base
|
||||
self.table_name = "playable_plays"
|
||||
|
||||
belongs_to :playable, :polymorphic => :true, :counter_cache => :play_count
|
||||
belongs_to :user, :class_name => "JamRuby::User", :foreign_key => "player_id"
|
||||
belongs_to :claimed_recording, :class_name => "JamRuby::ClaimedRecording", :foreign_key => "claimed_recording_id"
|
||||
|
||||
end
|
||||
end
|
||||
|
|
@ -11,7 +11,7 @@ module JamRuby
|
|||
has_many :recorded_tracks, :class_name => "JamRuby::RecordedTrack", :foreign_key => :recording_id, :dependent => :destroy
|
||||
has_many :comments, :class_name => "JamRuby::RecordingComment", :foreign_key => "recording_id"
|
||||
has_many :likes, :class_name => "JamRuby::RecordingLiker", :foreign_key => "recording_id"
|
||||
has_many :plays, :class_name => "JamRuby::RecordingPlay", :foreign_key => "recording_id"
|
||||
has_many :plays, :class_name => "JamRuby::PlayablePlay", :as => :playable, :dependent => :destroy
|
||||
has_one :feed, :class_name => "JamRuby::Feed", :inverse_of => :recording, :foreign_key => 'recording_id', :dependent => :destroy
|
||||
|
||||
belongs_to :owner, :class_name => "JamRuby::User", :inverse_of => :owned_recordings, :foreign_key => 'owner_id'
|
||||
|
|
|
|||
|
|
@ -1,13 +0,0 @@
|
|||
module JamRuby
|
||||
class RecordingPlay < ActiveRecord::Base
|
||||
|
||||
self.table_name = "recordings_plays"
|
||||
|
||||
self.primary_key = 'id'
|
||||
|
||||
belongs_to :recording, :class_name => "JamRuby::Recording", :foreign_key => "recording_id", :counter_cache => :play_count
|
||||
belongs_to :claimed_recording, :class_name => "JamRuby::ClaimedRecording", :foreign_key => "claimed_recording_id"
|
||||
belongs_to :user, :class_name => "JamRuby::User", :foreign_key => "player_id"
|
||||
|
||||
end
|
||||
end
|
||||
|
|
@ -357,24 +357,6 @@ FactoryGirl.define do
|
|||
end
|
||||
end
|
||||
|
||||
factory :icecast_template, :class => JamRuby::IcecastTemplate do
|
||||
|
||||
sequence(:name) { |n| "name-#{n}"}
|
||||
sequence(:location) { |n| "location-#{n}"}
|
||||
|
||||
factory :icecast_template_minimal do
|
||||
association :limit, :factory => :icecast_limit
|
||||
association :admin_auth, :factory => :icecast_admin_authentication
|
||||
association :path, :factory => :icecast_path
|
||||
association :logging, :factory => :icecast_logging
|
||||
association :security, :factory => :icecast_security
|
||||
|
||||
before(:create) do |template|
|
||||
template.listen_sockets << FactoryGirl.build(:icecast_listen_socket)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
factory :icecast_mount_template, :class => JamRuby::IcecastMountTemplate do
|
||||
sequence(:name) { |n| "name-#{n}"}
|
||||
source_username Faker::Lorem.characters(10)
|
||||
|
|
@ -393,6 +375,24 @@ FactoryGirl.define do
|
|||
association :authentication, :factory => :icecast_user_authentication
|
||||
end
|
||||
|
||||
factory :icecast_template, :class => JamRuby::IcecastTemplate do
|
||||
|
||||
sequence(:name) { |n| "name-#{n}"}
|
||||
sequence(:location) { |n| "location-#{n}"}
|
||||
|
||||
factory :icecast_template_minimal do
|
||||
association :limit, :factory => :icecast_limit
|
||||
association :admin_auth, :factory => :icecast_admin_authentication
|
||||
association :path, :factory => :icecast_path
|
||||
association :logging, :factory => :icecast_logging
|
||||
association :security, :factory => :icecast_security
|
||||
|
||||
before(:create) do |template|
|
||||
template.listen_sockets << FactoryGirl.build(:icecast_listen_socket)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
factory :facebook_signup, :class => JamRuby::FacebookSignup do
|
||||
sequence(:lookup_id) { |n| "lookup-#{n}"}
|
||||
sequence(:first_name) { |n| "first-#{n}"}
|
||||
|
|
@ -404,12 +404,7 @@ FactoryGirl.define do
|
|||
token_expires_at Time.now
|
||||
end
|
||||
|
||||
factory :recording_play, :class => JamRuby::RecordingPlay do
|
||||
|
||||
end
|
||||
|
||||
factory :music_session_play, :class => JamRuby::MusicSessionPlay do
|
||||
|
||||
factory :playable_play, :class => JamRuby::PlayablePlay do
|
||||
end
|
||||
|
||||
factory :recording_like, :class => JamRuby::RecordingLiker do
|
||||
|
|
|
|||
|
|
@ -67,22 +67,22 @@ describe Feed do
|
|||
claimed_recording1 = FactoryGirl.create(:claimed_recording)
|
||||
claimed_recording2 = FactoryGirl.create(:claimed_recording)
|
||||
|
||||
FactoryGirl.create(:recording_play, recording: claimed_recording1.recording, claimed_recording: claimed_recording1, user:claimed_recording1.user)
|
||||
FactoryGirl.create(:playable_play, playable: claimed_recording1.recording, claimed_recording: claimed_recording1, user:claimed_recording1.user)
|
||||
|
||||
feeds, start = Feed.index(user1, :sort => 'plays')
|
||||
feeds.length.should == 4
|
||||
|
||||
FactoryGirl.create(:recording_play, recording: claimed_recording2.recording, claimed_recording: claimed_recording2, user:claimed_recording1.user)
|
||||
FactoryGirl.create(:recording_play, recording: claimed_recording2.recording, claimed_recording: claimed_recording2, user:claimed_recording2.user)
|
||||
FactoryGirl.create(:playable_play, playable: claimed_recording2.recording, claimed_recording: claimed_recording2, user:claimed_recording1.user)
|
||||
FactoryGirl.create(:playable_play, playable: claimed_recording2.recording, claimed_recording: claimed_recording2, user:claimed_recording2.user)
|
||||
|
||||
feeds, start = Feed.index(user1, :sort => 'plays')
|
||||
feeds.length.should == 4
|
||||
feeds[0].recording.should == claimed_recording2.recording
|
||||
feeds[1].recording.should == claimed_recording1.recording
|
||||
|
||||
FactoryGirl.create(:music_session_play, music_session: claimed_recording1.recording.music_session.music_session_history, user: user1)
|
||||
FactoryGirl.create(:music_session_play, music_session: claimed_recording1.recording.music_session.music_session_history, user: user2)
|
||||
FactoryGirl.create(:music_session_play, music_session: claimed_recording1.recording.music_session.music_session_history, user: user3)
|
||||
FactoryGirl.create(:playable_play, playable: claimed_recording1.recording.music_session.music_session_history, user: user1)
|
||||
FactoryGirl.create(:playable_play, playable: claimed_recording1.recording.music_session.music_session_history, user: user2)
|
||||
FactoryGirl.create(:playable_play, playable: claimed_recording1.recording.music_session.music_session_history, user: user3)
|
||||
|
||||
|
||||
feeds, start = Feed.index(user1, :sort => 'plays')
|
||||
|
|
@ -235,7 +235,7 @@ describe Feed do
|
|||
it "supports plays pagination" do
|
||||
claimed_recording1 = FactoryGirl.create(:claimed_recording)
|
||||
|
||||
FactoryGirl.create(:music_session_play, music_session: claimed_recording1.recording.music_session.music_session_history, user: user1)
|
||||
FactoryGirl.create(:playable_play, playable: claimed_recording1.recording.music_session.music_session_history, user: user1)
|
||||
|
||||
options = {limit: 1, sort: 'plays'}
|
||||
feeds, start = Feed.index(user1, options)
|
||||
|
|
|
|||
Loading…
Reference in New Issue