diff --git a/db/up/mixdown.sql b/db/up/mixdown.sql index 6ccefb113..ecc27a2d9 100644 --- a/db/up/mixdown.sql +++ b/db/up/mixdown.sql @@ -41,4 +41,6 @@ CREATE TABLE jam_track_mixdown_packages ( version VARCHAR NOT NULL DEFAULT '1', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP -); \ No newline at end of file +); + +ALTER TABLE jam_track_rights ADD COLUMN last_mixdown_id REFERENCES jam_track_mixdowns(id) ON DELETE SET NULL; \ No newline at end of file diff --git a/ruby/lib/jam_ruby/models/jam_track_mixdown.rb b/ruby/lib/jam_ruby/models/jam_track_mixdown.rb index c314c133f..62947f0db 100644 --- a/ruby/lib/jam_ruby/models/jam_track_mixdown.rb +++ b/ruby/lib/jam_ruby/models/jam_track_mixdown.rb @@ -7,8 +7,8 @@ module JamRuby belongs_to :user, class_name: "JamRuby::User" # the owner, or purchaser of the jam_track belongs_to :jam_track, class_name: "JamRuby::JamTrack" - has_many :jam_track_mixdown_packages, class_name: "JamRuby::JamTrackMixdownPackage" + has_one :jam_track_right, class_name: 'JamRuby::JamTrackRight', foreign_key: 'last_mixdown_id', inverse_of: :last_mixdown validates :name, presence: true, length: {maximum: 100} validates :description, length: {maximum: 1000} diff --git a/ruby/lib/jam_ruby/models/jam_track_right.rb b/ruby/lib/jam_ruby/models/jam_track_right.rb index f0749dc94..f9b1e2cd7 100644 --- a/ruby/lib/jam_ruby/models/jam_track_right.rb +++ b/ruby/lib/jam_ruby/models/jam_track_right.rb @@ -11,6 +11,7 @@ module JamRuby attr_accessible :url_48, :md5_48, :length_48, :url_44, :md5_44, :length_44 belongs_to :user, class_name: "JamRuby::User" # the owner, or purchaser of the jam_track belongs_to :jam_track, class_name: "JamRuby::JamTrack" + belongs_to :last_mixdown, class_name: 'JamRuby::JamTrackMixdown', foreign_key: 'last_mixdown_id', inverse_of: :jam_track_right validates :user, presence: true validates :jam_track, presence: true diff --git a/web/app/controllers/api_jam_track_mixdowns_controller.rb b/web/app/controllers/api_jam_track_mixdowns_controller.rb index 264fc8627..623e2b4ef 100644 --- a/web/app/controllers/api_jam_track_mixdowns_controller.rb +++ b/web/app/controllers/api_jam_track_mixdowns_controller.rb @@ -17,6 +17,10 @@ class ApiJamTrackMixdownsController < ApiController render "api_jam_track_mixdowns/index", :layout => nil end + def show_package + @package = JamTrackMixdownPackage.find(params[:id]) + end + def create @mixdown = JamTrackMixdown.create(params[:name], params[:description], current_user, JamTrack.find(params[:jamTrackID]), params[:settings]) respond_with_model(@mixdown) diff --git a/web/config/routes.rb b/web/config/routes.rb index 8c994ed6f..b63ab69d1 100644 --- a/web/config/routes.rb +++ b/web/config/routes.rb @@ -247,7 +247,13 @@ SampleApp::Application.routes.draw do match '/jamtracks/enqueue/:id' => 'api_jam_tracks#enqueue', :via => :post, :as => 'api_jam_tracks_enqueue' match '/jamtracks/rights/:id' => 'api_jam_tracks#show_jam_track_right', :via => :get, :as => 'api_jam_tracks_show_right' match '/jamtracks/keys' => 'api_jam_tracks#keys', :via => :post, :as => 'api_jam_tracks_keys' + + # mixdowns match '/jamtracks/:id/mixdowns' => 'api_jam_track_mixdowns#index', :via => :get + match '/mixdowns' => 'api_jam_track_mixdowns#create', :via => :post + match '/mixdowns/:id/download' => 'api_jam_track_mixdowns#download', :via => :get + match '/mixdowns/:id/enqueue' => 'api_jam_track_mixdowns#enqueue', :via => :get + match '/mixdown_packages/:id' => 'api_jam_track_mixdowns#show_package', :via => :get # Shopping carts match '/shopping_carts/add_jamtrack' => 'api_shopping_carts#add_jamtrack', :via => :post