From 5c849f2faae63fa72753dff5773ee12cfa6ec9f0 Mon Sep 17 00:00:00 2001 From: Steven Miers Date: Sun, 14 Dec 2014 18:18:04 -0600 Subject: [PATCH] VRFS-1952 : Schema changes for proper type and incremental code changes. WIP. --- db/up/jam_track_updates.sql | 13 ++++++++++--- ruby/lib/jam_ruby/models/jam_track.rb | 13 +++++++++++++ ruby/lib/jam_ruby/models/jam_track_right.rb | 8 ++++++++ ...s_controller.rb => api_jam_tracks_controller.rb} | 0 4 files changed, 31 insertions(+), 3 deletions(-) rename web/app/controllers/{api_jamtracks_controller.rb => api_jam_tracks_controller.rb} (100%) diff --git a/db/up/jam_track_updates.sql b/db/up/jam_track_updates.sql index 1c42254ed..8eaaf1bd6 100644 --- a/db/up/jam_track_updates.sql +++ b/db/up/jam_track_updates.sql @@ -8,10 +8,11 @@ ALTER TABLE jam_track_rights DROP CONSTRAINT jam_track_rights_jam_track_id_fkey; -- Change Jam Tracks ID type to BIGINT so it can work like the other downloadable items: +CREATE SEQUENCE jam_tracks_next_seq; ALTER TABLE jam_tracks ALTER COLUMN id DROP DEFAULT, - ALTER COLUMN id TYPE BIGINT USING nextval('tracks_next_tracker_seq'), - ALTER COLUMN id SET DEFAULT nextval('tracks_next_tracker_seq'); + ALTER COLUMN id TYPE BIGINT USING nextval('jam_tracks_next_seq'), + ALTER COLUMN id SET DEFAULT nextval('jam_tracks_next_seq'); -- Change referencing ID type and re-add constraints: ALTER TABLE jam_track_tracks @@ -22,7 +23,13 @@ ALTER TABLE jam_track_tracks -- Change referencing ID type and re-add constraints. Also -- add S3 URL for user-specific downloads: ALTER TABLE jam_track_rights - ADD COLUMN s3_url VARCHAR(2048), + ALTER COLUMN id DROP DEFAULT, + ALTER COLUMN id TYPE BIGINT USING nextval('tracks_next_tracker_seq'), + ALTER COLUMN id SET DEFAULT nextval('tracks_next_tracker_seq'), + ADD COLUMN url VARCHAR(2048), + ADD COLUMN md5 VARCHAR, + ADD COLUMN length INTEGER NOT NULL DEFAULT 0, + ADD COLUMN download_count INTEGER NOT NULL DEFAULT 0, ALTER COLUMN jam_track_id TYPE BIGINT USING 0, ALTER COLUMN jam_track_id SET NOT NULL, ADD CONSTRAINT jam_track_rights_user_id_fkey FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE, diff --git a/ruby/lib/jam_ruby/models/jam_track.rb b/ruby/lib/jam_ruby/models/jam_track.rb index 38b1a9e5d..f93087046 100644 --- a/ruby/lib/jam_ruby/models/jam_track.rb +++ b/ruby/lib/jam_ruby/models/jam_track.rb @@ -96,6 +96,19 @@ module JamRuby end end + def self.list_downloads(user, limit = 100, since = 0) + since = 0 unless since || since == '' # guard against nil + downloads = [] + + user.jam_track_rights.limit(limit).collect do |jt_right| + downloads << jt_right + end + + #JamTrack.joins(:recording).joins(:recording => :claimed_recordings) + end + + + private def sanitize_active_admin diff --git a/ruby/lib/jam_ruby/models/jam_track_right.rb b/ruby/lib/jam_ruby/models/jam_track_right.rb index f06c823e6..57c0a444f 100644 --- a/ruby/lib/jam_ruby/models/jam_track_right.rb +++ b/ruby/lib/jam_ruby/models/jam_track_right.rb @@ -8,7 +8,15 @@ module JamRuby validates :user, presence:true validates :jam_track, presence:true + validate :verify_download_count validates_uniqueness_of :user_id, scope: :jam_track_id + MAX_JAM_TRACK_DOWNLOADS = 1000 + + def verify_download_count + if (self.download_count < 0 || self.download_count > MAX_JAM_TRACK_DOWNLOADS) && !@current_user.admin + errors.add(:download_count, "must be less than or equal to #{MAX_JAM_TRACK_DOWNLOADS}") + end + end end end diff --git a/web/app/controllers/api_jamtracks_controller.rb b/web/app/controllers/api_jam_tracks_controller.rb similarity index 100% rename from web/app/controllers/api_jamtracks_controller.rb rename to web/app/controllers/api_jam_tracks_controller.rb