summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinya Maeda <shinya@gitlab.com>2019-04-18 18:15:40 +0700
committerShinya Maeda <shinya@gitlab.com>2019-05-03 18:41:08 +0700
commitd0c4b8075ada46be149bf4ec148519aaa0e16695 (patch)
treebd5811935e12fd06dfaa306a21a06538500e5f26
parent9f8123d935679582ac4f1487e1dcb559863372cb (diff)
downloadgitlab-ce-create-merge-request-pipeline-on-chained-merge-ref-ce.tar.gz
Create ActiveRecordModel and table for Merge Train featurecreate-merge-request-pipeline-on-chained-merge-ref-ce
This database table and AR model is going to be used for the merge train feature.
-rw-r--r--app/models/internal_id.rb2
-rw-r--r--db/migrate/20190418182545_create_merge_request_trains_table.rb21
-rw-r--r--db/schema.rb18
3 files changed, 40 insertions, 1 deletions
diff --git a/app/models/internal_id.rb b/app/models/internal_id.rb
index 237401899db..825fd1bb260 100644
--- a/app/models/internal_id.rb
+++ b/app/models/internal_id.rb
@@ -19,7 +19,7 @@ class InternalId < ApplicationRecord
belongs_to :project
belongs_to :namespace
- enum usage: { issues: 0, merge_requests: 1, deployments: 2, milestones: 3, epics: 4, ci_pipelines: 5 }
+ enum usage: { issues: 0, merge_requests: 1, deployments: 2, milestones: 3, epics: 4, ci_pipelines: 5, merge_trains: 6 }
validates :usage, presence: true
diff --git a/db/migrate/20190418182545_create_merge_request_trains_table.rb b/db/migrate/20190418182545_create_merge_request_trains_table.rb
new file mode 100644
index 00000000000..6610806453a
--- /dev/null
+++ b/db/migrate/20190418182545_create_merge_request_trains_table.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+class CreateMergeRequestTrainsTable < ActiveRecord::Migration[5.1]
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ def change
+ create_table :merge_trains, id: :bigserial do |t|
+ t.references :project, foreign_key: { on_delete: :cascade }, type: :integer, index: false, null: false
+ t.references :merge_request, foreign_key: { on_delete: :cascade }, type: :integer, null: false
+ t.references :user, foreign_key: { on_delete: :cascade }, type: :integer, null: false
+ t.references :pipeline, foreign_key: { to_table: :ci_pipelines, on_delete: :nullify }, type: :integer
+ t.string :target_branch, null: false
+ t.integer :iid, null: false
+
+ t.index [:project_id, :merge_request_id], unique: true
+ t.index [:project_id, :iid], unique: true
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index de9e6f0b40d..c1fcf803437 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -1361,6 +1361,20 @@ ActiveRecord::Schema.define(version: 20190426180107) do
t.index ["merge_request_id"], name: "index_merge_requests_closing_issues_on_merge_request_id", using: :btree
end
+ create_table "merge_trains", force: :cascade do |t|
+ t.integer "project_id", null: false
+ t.integer "merge_request_id", null: false
+ t.integer "user_id", null: false
+ t.integer "pipeline_id"
+ t.string "target_branch", null: false
+ t.integer "iid", null: false
+ t.index ["merge_request_id"], name: "index_merge_trains_on_merge_request_id", using: :btree
+ t.index ["pipeline_id"], name: "index_merge_trains_on_pipeline_id", using: :btree
+ t.index ["project_id", "iid"], name: "index_merge_trains_on_project_id_and_iid", unique: true, using: :btree
+ t.index ["project_id", "merge_request_id"], name: "index_merge_trains_on_project_id_and_merge_request_id", unique: true, using: :btree
+ t.index ["user_id"], name: "index_merge_trains_on_user_id", using: :btree
+ end
+
create_table "milestones", id: :serial, force: :cascade do |t|
t.string "title", null: false
t.integer "project_id"
@@ -2514,6 +2528,10 @@ ActiveRecord::Schema.define(version: 20190426180107) do
add_foreign_key "merge_requests", "users", column: "updated_by_id", name: "fk_641731faff", on_delete: :nullify
add_foreign_key "merge_requests_closing_issues", "issues", on_delete: :cascade
add_foreign_key "merge_requests_closing_issues", "merge_requests", on_delete: :cascade
+ add_foreign_key "merge_trains", "ci_pipelines", column: "pipeline_id", on_delete: :nullify
+ add_foreign_key "merge_trains", "merge_requests", on_delete: :cascade
+ add_foreign_key "merge_trains", "projects", on_delete: :cascade
+ add_foreign_key "merge_trains", "users", on_delete: :cascade
add_foreign_key "milestones", "namespaces", column: "group_id", name: "fk_95650a40d4", on_delete: :cascade
add_foreign_key "milestones", "projects", name: "fk_9bd0a0c791", on_delete: :cascade
add_foreign_key "note_diff_files", "notes", column: "diff_note_id", on_delete: :cascade