summaryrefslogtreecommitdiff
path: root/db/migrate/20151210125927_migrate_ci_hip_chat_service.rb
blob: 824f6f841951c3829f3f1ec9fc6186d353914ece (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# rubocop:disable all
class MigrateCiHipChatService < ActiveRecord::Migration
  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