DROP VIEW user_syncs;

CREATE VIEW user_syncs AS
    SELECT  DISTINCT 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;
