36 lines
1.1 KiB
Ruby
36 lines
1.1 KiB
Ruby
class MigrateLabelsPriority < ActiveRecord::Migration
|
|
include Gitlab::Database::MigrationHelpers
|
|
|
|
DOWNTIME = true
|
|
DOWNTIME_REASON = 'Prioritized labels will not work as expected until this migration is complete.'
|
|
|
|
disable_ddl_transaction!
|
|
|
|
def up
|
|
execute <<-EOF.strip_heredoc
|
|
INSERT INTO label_priorities (project_id, label_id, priority, created_at, updated_at)
|
|
SELECT labels.project_id, labels.id, labels.priority, NOW(), NOW()
|
|
FROM labels
|
|
WHERE labels.project_id IS NOT NULL
|
|
AND labels.priority IS NOT NULL;
|
|
EOF
|
|
end
|
|
|
|
def down
|
|
if Gitlab::Database.mysql?
|
|
execute <<-EOF.strip_heredoc
|
|
UPDATE labels
|
|
INNER JOIN label_priorities ON labels.id = label_priorities.label_id AND labels.project_id = label_priorities.project_id
|
|
SET labels.priority = label_priorities.priority;
|
|
EOF
|
|
else
|
|
execute <<-EOF.strip_heredoc
|
|
UPDATE labels
|
|
SET priority = label_priorities.priority
|
|
FROM label_priorities
|
|
WHERE labels.id = label_priorities.label_id
|
|
AND labels.project_id = label_priorities.project_id;
|
|
EOF
|
|
end
|
|
end
|
|
end
|