VRFS-1952 : Schema changes for proper type and incremental code changes. WIP.
This commit is contained in:
parent
70d58a53ec
commit
f6fef00ea5
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue