69 lines
3.0 KiB
SQL
69 lines
3.0 KiB
SQL
ALTER TABLE recordings ADD COLUMN has_stream_mix BOOLEAN DEFAULT FALSE NOT NULL;
|
|
ALTER TABLE recordings ADD COLUMN has_final_mix BOOLEAN DEFAULT FALSE NOT NULL;
|
|
UPDATE recordings SET has_final_mix = TRUE WHERE (SELECT count(mixes.id) FROM mixes WHERE recording_id = recordings.id) > 0;
|
|
|
|
CREATE TABLE quick_mixes (
|
|
id BIGINT PRIMARY KEY,
|
|
next_part_to_upload INTEGER NOT NULL DEFAULT 0,
|
|
fully_uploaded BOOLEAN NOT NULL DEFAULT FALSE,
|
|
upload_id VARCHAR(1024),
|
|
file_offset BIGINT DEFAULT 0,
|
|
is_part_uploading BOOLEAN NOT NULL DEFAULT FALSE,
|
|
upload_failures INTEGER DEFAULT 0,
|
|
part_failures INTEGER DEFAULT 0,
|
|
ogg_md5 VARCHAR(100),
|
|
ogg_length INTEGER,
|
|
ogg_url VARCHAR(1000),
|
|
mp3_md5 VARCHAR(100),
|
|
mp3_length INTEGER,
|
|
mp3_url VARCHAR(1000),
|
|
error_count INTEGER NOT NULL DEFAULT 0,
|
|
error_reason TEXT,
|
|
error_detail TEXT,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
started_at TIMESTAMP,
|
|
completed_at TIMESTAMP,
|
|
completed BOOLEAN NOT NULL DEFAULT FALSE,
|
|
should_retry BOOLEAN NOT NULL DEFAULT FALSE,
|
|
cleaned BOOLEAN NOT NULL DEFAULT FALSE,
|
|
user_id VARCHAR(64) REFERENCES users(id) ON DELETE SET NULL,
|
|
recording_id VARCHAR(64) REFERENCES recordings(id) ON DELETE CASCADE
|
|
);
|
|
|
|
ALTER TABLE quick_mixes ALTER COLUMN id SET DEFAULT nextval('tracks_next_tracker_seq');
|
|
|
|
CREATE VIEW user_syncs AS
|
|
SELECT b.id AS recorded_track_id,
|
|
CAST(NULL as BIGINT) AS mix_id,
|
|
CAST(NULL as BIGINT) as quick_mix_id,
|
|
b.id AS unified_id,
|
|
a.user_id AS user_id,
|
|
b.fully_uploaded,
|
|
recordings.created_at AS created_at,
|
|
recordings.id AS recording_id
|
|
FROM recorded_tracks a INNER JOIN recordings ON a.recording_id = recordings.id AND duration IS NOT NULL AND all_discarded = FALSE INNER JOIN recorded_tracks b ON a.recording_id = b.recording_id
|
|
UNION ALL
|
|
SELECT CAST(NULL as BIGINT) AS recorded_track_id,
|
|
mixes.id AS mix_id,
|
|
CAST(NULL as BIGINT) AS quick_mix_id,
|
|
mixes.id AS unified_id,
|
|
claimed_recordings.user_id AS user_id,
|
|
NULL as fully_uploaded,
|
|
recordings.created_at AS created_at,
|
|
recordings.id AS recording_id
|
|
FROM mixes INNER JOIN recordings ON mixes.recording_id = recordings.id INNER JOIN claimed_recordings ON recordings.id = claimed_recordings.recording_id WHERE claimed_recordings.discarded = FALSE
|
|
UNION ALL
|
|
SELECT CAST(NULL as BIGINT) AS recorded_track_id,
|
|
CAST(NULL as BIGINT) AS mix_id,
|
|
quick_mixes.id AS quick_mix_id,
|
|
quick_mixes.id AS unified_id,
|
|
quick_mixes.user_id,
|
|
quick_mixes.fully_uploaded,
|
|
recordings.created_at AS created_at,
|
|
recordings.id AS recording_id
|
|
FROM quick_mixes INNER JOIN recordings ON quick_mixes.recording_id = recordings.id AND duration IS NOT NULL AND all_discarded = FALSE;
|
|
|
|
ALTER TABLE recordings ADD COLUMN first_quick_mix_id BIGINT REFERENCES quick_mixes(id) ON DELETE SET NULL;
|
|
|