gitlab-org--gitlab-foss/db/migrate/20151210125927_migrate_ci_hip_chat_service.rb
Sean McGivern 98bb435f42 Enable RuboCop for migrations
Migrations shouldn't fail RuboCop checks - especially lint checks, such
as the nested method check. To avoid changing code in existing
migrations, add the magic comment to the top of each of them to skip
that file.
2016-06-09 16:05:25 +01:00

35 lines
1.6 KiB
Ruby

# rubocop:disable all
class MigrateCiHipChatService < ActiveRecord::Migration
include Gitlab::Database
def up
# From properties strip `hipchat_` key
properties_query = "SELECT REPLACE(properties, '\"hipchat_', '\"') FROM ci_services " \
'JOIN ci_projects ON ci_services.project_id=ci_projects.id ' \
"WHERE ci_projects.gitlab_id=services.project_id AND ci_services.type='Ci::HipChatService' AND ci_services.active " \
'LIMIT 1'
active_query = 'SELECT 1 FROM ci_services ' \
'JOIN ci_projects ON ci_services.project_id=ci_projects.id ' \
"WHERE ci_projects.gitlab_id=services.project_id AND ci_services.type='Ci::HipChatService' AND ci_services.active " \
'LIMIT 1'
# We update the service since services are always generated for project, even if they are inactive
# Activate service and migrate properties if currently the service is not active
execute(
"UPDATE services SET properties=(#{properties_query}), active=#{true_value}, " \
"push_events=#{false_value}, issues_events=#{false_value}, merge_requests_events=#{false_value}, " \
"tag_push_events=#{false_value}, note_events=#{false_value}, build_events=#{true_value} " \
"WHERE NOT services.active AND services.type='HipchatService' AND (#{active_query}) IS NOT NULL"
)
# Tick only build_events if the service is already active
execute(
"UPDATE services SET build_events=#{true_value} " \
"WHERE services.active AND services.type='HipchatService' AND (#{active_query}) IS NOT NULL"
)
end
def down
end
end