VRFS-1952 : Schema changes for proper type and incremental code changes. WIP.

This commit is contained in:
Steven Miers 2014-12-14 18:18:04 -06:00
parent 8634d4f726
commit 5c849f2faa
4 changed files with 31 additions and 3 deletions

View File

@ -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,

View File

@ -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

View File

@ -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