summaryrefslogtreecommitdiff
path: root/db/post_migrate/20170425121605_migrate_trigger_schedules_to_pipeline_schedules.rb
blob: 99ded277277a27ef051f46a3a1f267e71282d0ec (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
36
37
38
39
40
41
42
43
44
45
46
47
48
class MigrateTriggerSchedulesToPipelineSchedules < ActiveRecord::Migration[4.2]
  include Gitlab::Database::MigrationHelpers

  DOWNTIME = false

  def up
    connection.execute <<~SQL
      DELETE FROM ci_trigger_schedules WHERE NOT EXISTS
        (SELECT true FROM projects
        WHERE ci_trigger_schedules.project_id = projects.id
        )
    SQL

    connection.execute <<-SQL
      INSERT INTO ci_pipeline_schedules (
        project_id,
        created_at,
        updated_at,
        deleted_at,
        cron,
        cron_timezone,
        next_run_at,
        ref,
        active,
        owner_id,
        description
      )
      SELECT
        ci_trigger_schedules.project_id,
        ci_trigger_schedules.created_at,
        ci_trigger_schedules.updated_at,
        ci_trigger_schedules.deleted_at,
        ci_trigger_schedules.cron,
        ci_trigger_schedules.cron_timezone,
        ci_trigger_schedules.next_run_at,
        ci_trigger_schedules.ref,
        ci_trigger_schedules.active,
        ci_triggers.owner_id,
        ci_triggers.description
      FROM ci_trigger_schedules
      INNER JOIN ci_triggers ON ci_trigger_schedules.trigger_id=ci_triggers.id;
    SQL
  end

  def down
    # no op as the data has been removed
  end
end