VRFS-2665, VRFS-2666 : Create models and relationships for two new tables: backing_tracks and recorded_backing_tracks
This commit is contained in:
parent
aa20f77eaf
commit
d7fc313d5f
|
|
@ -244,4 +244,5 @@ jamtracks_job.sql
|
|||
text_messages.sql
|
||||
text_message_migration.sql
|
||||
backing_tracks.sql
|
||||
metronome.sql
|
||||
metronome.sql
|
||||
recorded_backing_tracks.sql
|
||||
|
|
|
|||
|
|
@ -0,0 +1,38 @@
|
|||
CREATE TABLE backing_tracks (
|
||||
id VARCHAR(64) NOT NULL PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
filename VARCHAR(1024) NOT NULL,
|
||||
|
||||
connection_id VARCHAR(64) NOT NULL,
|
||||
client_track_id VARCHAR(64) NOT NULL,
|
||||
client_resource_id VARCHAR(100),
|
||||
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE recorded_backing_tracks (
|
||||
id BIGINT PRIMARY KEY,
|
||||
user_id VARCHAR(64) REFERENCES users(id) ON DELETE CASCADE,
|
||||
backing_track_id VARCHAR(64) REFERENCES backing_tracks(id) ON DELETE CASCADE,
|
||||
recording_id VARCHAR(64) NOT NULL,
|
||||
|
||||
client_track_id VARCHAR(64) NOT NULL,
|
||||
is_part_uploading BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
next_part_to_upload INTEGER NOT NULL DEFAULT 0,
|
||||
upload_id CHARACTER VARYING(1024),
|
||||
part_failures INTEGER NOT NULL DEFAULT 0,
|
||||
discard BOOLEAN,
|
||||
download_count INTEGER NOT NULL DEFAULT 0,
|
||||
md5 CHARACTER VARYING(100),
|
||||
length BIGINT,
|
||||
client_id VARCHAR(64) NOT NULL,
|
||||
file_offset BIGINT,
|
||||
|
||||
url VARCHAR(1024) NOT NULL,
|
||||
fully_uploaded BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
upload_failures INTEGER NOT NULL DEFAULT 0,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
ALTER TABLE recorded_backing_tracks ALTER COLUMN id SET DEFAULT nextval('tracks_next_tracker_seq');
|
||||
|
|
@ -86,6 +86,7 @@ require "jam_ruby/lib/stats.rb"
|
|||
require "jam_ruby/amqp/amqp_connection_manager"
|
||||
require "jam_ruby/database"
|
||||
require "jam_ruby/message_factory"
|
||||
require "jam_ruby/models/backing_track"
|
||||
require "jam_ruby/models/feedback"
|
||||
require "jam_ruby/models/feedback_observer"
|
||||
#require "jam_ruby/models/max_mind_geo"
|
||||
|
|
@ -131,8 +132,10 @@ 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/recorded_backing_track"
|
||||
require "jam_ruby/models/recorded_track"
|
||||
require "jam_ruby/models/recorded_track_observer"
|
||||
require "jam_ruby/models/recorded_video"
|
||||
require "jam_ruby/models/quick_mix"
|
||||
require "jam_ruby/models/quick_mix_observer"
|
||||
require "jam_ruby/models/share_token"
|
||||
|
|
@ -196,7 +199,6 @@ require "jam_ruby/models/score_history"
|
|||
require "jam_ruby/models/jam_company"
|
||||
require "jam_ruby/models/user_sync"
|
||||
require "jam_ruby/models/video_source"
|
||||
require "jam_ruby/models/recorded_video"
|
||||
require "jam_ruby/models/text_message"
|
||||
require "jam_ruby/jam_tracks_manager"
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
module JamRuby
|
||||
class BackingTrack < ActiveRecord::Base
|
||||
|
||||
self.table_name = "backing_tracks"
|
||||
self.primary_key = 'id'
|
||||
|
||||
default_scope order('created_at ASC')
|
||||
|
||||
belongs_to :connection, :class_name => "JamRuby::Connection", :inverse_of => :tracks, :foreign_key => 'connection_id'
|
||||
validates :connection, presence: true
|
||||
validates :client_track_id, presence: true
|
||||
|
||||
def user
|
||||
self.connection.user
|
||||
end
|
||||
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
|
|
@ -18,6 +18,7 @@ module JamRuby
|
|||
belongs_to :music_session, :class_name => "JamRuby::ActiveMusicSession", foreign_key: :music_session_id
|
||||
has_one :latency_tester, class_name: 'JamRuby::LatencyTester', foreign_key: :client_id, primary_key: :client_id
|
||||
has_many :tracks, :class_name => "JamRuby::Track", :inverse_of => :connection, :foreign_key => 'connection_id', :dependent => :delete_all
|
||||
has_many :backing_tracks, :class_name => "JamRuby::BackingTrack", :inverse_of => :connection, :foreign_key => 'connection_id', :dependent => :delete_all
|
||||
has_many :video_sources, :class_name => "JamRuby::VideoSource", :inverse_of => :connection, :foreign_key => 'connection_id', :dependent => :delete_all
|
||||
|
||||
validates :as_musician, :inclusion => {:in => [true, false, nil]}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
module JamRuby
|
||||
# BackingTrack analog to JamRuby::RecordedTrack
|
||||
class RecordedBackingTrack < ActiveRecord::Base
|
||||
belongs_to :user, :class_name => "JamRuby::User", :inverse_of => :recorded_backing_tracks
|
||||
belongs_to :recording, :class_name => "JamRuby::Recording", :inverse_of => :recorded_backing_tracks
|
||||
validates :filename, :presence => true
|
||||
|
||||
def self.create_from_backing_track(backing_track, recording)
|
||||
recorded_backing_track = self.new
|
||||
recorded_backing_track.recording = recording
|
||||
recorded_backing_track.client_backing_track_id = backing_track.client_backing_track_id
|
||||
recorded_backing_track.user = backing_track.connection.user
|
||||
recorded_backing_track.save
|
||||
recorded_backing_track
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
@ -237,6 +237,11 @@ FactoryGirl.define do
|
|||
sequence(:client_video_source_id) { |n| "client_video_source_id#{n}"}
|
||||
end
|
||||
|
||||
factory :backing_track, :class => JamRuby::BackingTrack do
|
||||
sequence(:client_track_id) { |n| "client_track_id#{n}"}
|
||||
filename 'foo.mp3'
|
||||
end
|
||||
|
||||
factory :recorded_track, :class => JamRuby::RecordedTrack do
|
||||
instrument JamRuby::Instrument.first
|
||||
sound 'stereo'
|
||||
|
|
|
|||
Loading…
Reference in New Issue