gitlab-org--gitlab-foss/db/migrate/20151210125927_migrate_ci_hip_chat_service.rb
Jan Provaznik 0fc9f9d3e7 Add version 4.2 to all existing migrations
DB schema generated by a migration may look different in
rails 4 and 5 (because rails 5 may use different default values).
For this reason it's important to explicitly set for which rails
version a migration was written for.

See https://stackoverflow.com/questions/35929869/activerecordmigration-deprecation-warning-asks-for-rails-version-but-im-no/35930912#35930912
2018-11-22 13:18:28 +01:00

34 lines
1.6 KiB
Ruby

class MigrateCiHipChatService < ActiveRecord::Migration[4.2]
include Gitlab::Database::MigrationHelpers
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