schema.rb 162 KB
Newer Older
Andrew8xx8's avatar
Andrew8xx8 committed
1 2 3 4 5 6 7 8 9 10 11
# encoding: UTF-8
# This file is auto-generated from the current state of the database. Instead
# of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition.
#
# Note that this schema.rb definition is the authoritative source for your
# database schema. If you need to create the application database on another
# system, you should be using db:schema:load, not running all the migrations
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
# you'll amass, the slower it'll run and the greater likelihood for issues).
#
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
12
# It's strongly recommended that you check this file into your version control system.
Andrew8xx8's avatar
Andrew8xx8 committed
13

14
ActiveRecord::Schema.define(version: 20180929102611) do
Valery Sizov's avatar
Valery Sizov committed
15

16 17
  # These are extensions that must be enabled in order to support this database
  enable_extension "plpgsql"
18
  enable_extension "pg_trgm"
19

Valery Sizov's avatar
Valery Sizov committed
20
  create_table "abuse_reports", force: :cascade do |t|
21 22 23
    t.integer "reporter_id"
    t.integer "user_id"
    t.text "message"
24 25
    t.datetime "created_at"
    t.datetime "updated_at"
26
    t.text "message_html"
27
    t.integer "cached_markdown_version"
28 29
  end

Valery Sizov's avatar
Valery Sizov committed
30
  create_table "appearances", force: :cascade do |t|
31 32
    t.string "title", null: false
    t.text "description", null: false
33 34
    t.string "logo"
    t.integer "updated_by"
35
    t.string "header_logo"
36 37
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
38
    t.text "description_html"
39
    t.integer "cached_markdown_version"
40 41
    t.text "new_project_guidelines"
    t.text "new_project_guidelines_html"
42 43 44 45
    t.text "header_message"
    t.text "header_message_html"
    t.text "footer_message"
    t.text "footer_message_html"
46 47
    t.text "message_background_color"
    t.text "message_font_color"
48
    t.string "favicon"
Valery Sizov's avatar
Valery Sizov committed
49 50
  end

51 52 53 54 55 56
  create_table "application_setting_terms", force: :cascade do |t|
    t.integer "cached_markdown_version"
    t.text "terms", null: false
    t.text "terms_html"
  end

Valery Sizov's avatar
Valery Sizov committed
57
  create_table "application_settings", force: :cascade do |t|
58 59 60 61
    t.integer "default_projects_limit"
    t.boolean "signup_enabled"
    t.boolean "gravatar_enabled"
    t.text "sign_in_text"
62 63
    t.datetime "created_at"
    t.datetime "updated_at"
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
    t.string "home_page_url"
    t.integer "default_branch_protection", default: 2
    t.text "help_text"
    t.text "restricted_visibility_levels"
    t.boolean "version_check_enabled", default: true
    t.integer "max_attachment_size", default: 10, null: false
    t.integer "default_project_visibility"
    t.integer "default_snippet_visibility"
    t.text "domain_whitelist"
    t.boolean "user_oauth_applications", default: true
    t.string "after_sign_out_path"
    t.integer "session_expire_delay", default: 10080, null: false
    t.text "import_sources"
    t.text "help_page_text"
    t.string "admin_notification_email"
    t.boolean "shared_runners_enabled", default: true, null: false
    t.integer "max_artifacts_size", default: 100, null: false
    t.string "runners_registration_token"
    t.integer "max_pages_size", default: 100, null: false
    t.boolean "require_two_factor_authentication", default: false
    t.integer "two_factor_grace_period", default: 48
    t.boolean "metrics_enabled", default: false
    t.string "metrics_host", default: "localhost"
    t.integer "metrics_pool_size", default: 16
    t.integer "metrics_timeout", default: 10
    t.integer "metrics_method_call_threshold", default: 10
    t.boolean "recaptcha_enabled", default: false
    t.string "recaptcha_site_key"
    t.string "recaptcha_private_key"
    t.integer "metrics_port", default: 8089
    t.boolean "akismet_enabled", default: false
    t.string "akismet_api_key"
    t.integer "metrics_sample_interval", default: 15
    t.boolean "sentry_enabled", default: false
    t.string "sentry_dsn"
    t.boolean "email_author_in_body", default: false
    t.integer "default_group_visibility"
    t.boolean "repository_checks_enabled", default: false
    t.text "shared_runners_text"
    t.integer "metrics_packet_size", default: 1
    t.text "disabled_oauth_sign_in_sources"
    t.string "health_check_access_token"
    t.boolean "send_user_confirmation_email", default: false
    t.integer "container_registry_token_expire_delay", default: 5
    t.text "after_sign_up_text"
    t.boolean "user_default_external", default: false, null: false
    t.boolean "elasticsearch_indexing", default: false, null: false
    t.boolean "elasticsearch_search", default: false, null: false
112
    t.string "repository_storages", default: "default"
113 114 115 116 117 118 119 120 121 122
    t.string "enabled_git_access_protocol"
    t.boolean "domain_blacklist_enabled", default: false
    t.text "domain_blacklist"
    t.boolean "usage_ping_enabled", default: true, null: false
    t.boolean "koding_enabled"
    t.string "koding_url"
    t.text "sign_in_text_html"
    t.text "help_page_text_html"
    t.text "shared_runners_text_html"
    t.text "after_sign_up_text_html"
123
    t.integer "rsa_key_restriction", default: 0, null: false
124
    t.integer "dsa_key_restriction", default: -1, null: false
125 126
    t.integer "ecdsa_key_restriction", default: 0, null: false
    t.integer "ed25519_key_restriction", default: 0, null: false
127 128 129 130 131
    t.boolean "housekeeping_enabled", default: true, null: false
    t.boolean "housekeeping_bitmaps_enabled", default: true, null: false
    t.integer "housekeeping_incremental_repack_period", default: 10, null: false
    t.integer "housekeeping_full_repack_period", default: 50, null: false
    t.integer "housekeeping_gc_period", default: 200, null: false
132
    t.boolean "html_emails_enabled", default: true
133 134
    t.string "plantuml_url"
    t.boolean "plantuml_enabled"
135
    t.integer "shared_runners_minutes", default: 0, null: false
136
    t.integer "repository_size_limit", limit: 8, default: 0
137
    t.integer "terminal_max_session_time", default: 0, null: false
138 139 140
    t.integer "unique_ips_limit_per_user"
    t.integer "unique_ips_limit_time_window"
    t.boolean "unique_ips_limit_enabled", default: false, null: false
141 142 143 144 145 146
    t.string "default_artifacts_expire_in", default: "0", null: false
    t.string "elasticsearch_url", default: "http://localhost:9200"
    t.boolean "elasticsearch_aws", default: false, null: false
    t.string "elasticsearch_aws_region", default: "us-east-1"
    t.string "elasticsearch_aws_access_key"
    t.string "elasticsearch_aws_secret_access_key"
147
    t.integer "geo_status_timeout", default: 10
148
    t.string "uuid"
149
    t.decimal "polling_interval_multiplier", default: 1.0, null: false
150
    t.boolean "elasticsearch_experimental_indexer"
151
    t.integer "cached_markdown_version"
152 153
    t.boolean "clientside_sentry_enabled", default: false, null: false
    t.string "clientside_sentry_dsn"
154
    t.boolean "check_namespace_plan", default: false, null: false
155
    t.integer "mirror_max_delay", default: 300, null: false
156 157
    t.integer "mirror_max_capacity", default: 100, null: false
    t.integer "mirror_capacity_threshold", default: 50, null: false
158
    t.boolean "prometheus_metrics_enabled", default: true, null: false
159
    t.boolean "authorized_keys_enabled", default: true, null: false
160 161
    t.boolean "help_page_hide_commercial_content", default: false
    t.string "help_page_support_url"
Valery Sizov's avatar
Valery Sizov committed
162 163 164 165
    t.boolean "slack_app_enabled", default: false
    t.string "slack_app_id"
    t.string "slack_app_secret"
    t.string "slack_app_verification_token"
166
    t.integer "performance_bar_allowed_group_id"
167
    t.boolean "allow_group_owners_to_manage_ldap", default: true, null: false
168
    t.boolean "hashed_storage_enabled", default: false, null: false
169
    t.boolean "project_export_enabled", default: true, null: false
170
    t.boolean "auto_devops_enabled", default: true, null: false
171
    t.integer "circuitbreaker_failure_count_threshold", default: 3
172
    t.integer "circuitbreaker_failure_reset_time", default: 1800
173
    t.integer "circuitbreaker_storage_timeout", default: 15
174
    t.integer "circuitbreaker_access_retries", default: 3
175 176 177 178 179 180 181 182 183
    t.boolean "throttle_unauthenticated_enabled", default: false, null: false
    t.integer "throttle_unauthenticated_requests_per_period", default: 3600, null: false
    t.integer "throttle_unauthenticated_period_in_seconds", default: 3600, null: false
    t.boolean "throttle_authenticated_api_enabled", default: false, null: false
    t.integer "throttle_authenticated_api_requests_per_period", default: 7200, null: false
    t.integer "throttle_authenticated_api_period_in_seconds", default: 3600, null: false
    t.boolean "throttle_authenticated_web_enabled", default: false, null: false
    t.integer "throttle_authenticated_web_requests_per_period", default: 7200, null: false
    t.integer "throttle_authenticated_web_period_in_seconds", default: 3600, null: false
184
    t.integer "circuitbreaker_check_interval", default: 1, null: false
185 186
    t.boolean "password_authentication_enabled_for_web"
    t.boolean "password_authentication_enabled_for_git", default: true
187 188 189
    t.integer "gitaly_timeout_default", default: 55, null: false
    t.integer "gitaly_timeout_medium", default: 30, null: false
    t.integer "gitaly_timeout_fast", default: 10, null: false
190
    t.boolean "mirror_available", default: true, null: false
191
    t.integer "default_project_creation", default: 2, null: false
192
    t.string "auto_devops_domain"
193 194 195
    t.boolean "external_authorization_service_enabled", default: false, null: false
    t.string "external_authorization_service_url"
    t.string "external_authorization_service_default_label"
196
    t.boolean "pages_domain_verification_enabled", default: true, null: false
197
    t.string "user_default_internal_regex"
198
    t.boolean "allow_local_requests_from_hooks_and_services", default: false, null: false
199
    t.float "external_authorization_service_timeout", default: 0.5
200 201 202 203 204
    t.text "external_auth_client_cert"
    t.text "encrypted_external_auth_client_key"
    t.string "encrypted_external_auth_client_key_iv"
    t.string "encrypted_external_auth_client_key_pass"
    t.string "encrypted_external_auth_client_key_pass_iv"
205
    t.string "email_additional_text"
206
    t.boolean "enforce_terms", default: false
207
    t.integer "file_template_project_id"
208
    t.boolean "pseudonymizer_enabled", default: false, null: false
209
    t.boolean "hide_third_party_offers", default: false, null: false
Imre Farkas's avatar
Imre Farkas committed
210 211 212 213
    t.boolean "snowplow_enabled", default: false, null: false
    t.string "snowplow_collector_uri"
    t.string "snowplow_site_id"
    t.string "snowplow_cookie_domain"
Luke Bennett's avatar
Luke Bennett committed
214
    t.boolean "instance_statistics_visibility_private", default: false, null: false
215
    t.boolean "web_ide_clientside_preview_enabled", default: false, null: false
216
    t.boolean "user_show_add_ssh_key_message", default: true, null: false
Luke Bennett's avatar
Luke Bennett committed
217
    t.integer "custom_project_templates_group_id"
218
    t.integer "usage_stats_set_by_user_id"
219
    t.integer "receive_max_input_size"
220
    t.integer "diff_max_patch_bytes", default: 102400, null: false
Valery Sizov's avatar
Valery Sizov committed
221 222 223
  end

  create_table "approvals", force: :cascade do |t|
224 225
    t.integer "merge_request_id", null: false
    t.integer "user_id", null: false
Valery Sizov's avatar
Valery Sizov committed
226 227
    t.datetime "created_at"
    t.datetime "updated_at"
228 229
  end

230 231
  add_index "approvals", ["merge_request_id"], name: "index_approvals_on_merge_request_id", using: :btree

Valery Sizov's avatar
Valery Sizov committed
232
  create_table "approver_groups", force: :cascade do |t|
233 234 235
    t.integer "target_id", null: false
    t.string "target_type", null: false
    t.integer "group_id", null: false
Valery Sizov's avatar
Valery Sizov committed
236 237 238 239 240 241 242
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  add_index "approver_groups", ["group_id"], name: "index_approver_groups_on_group_id", using: :btree
  add_index "approver_groups", ["target_id", "target_type"], name: "index_approver_groups_on_target_id_and_target_type", using: :btree

Valery Sizov's avatar
Valery Sizov committed
243
  create_table "approvers", force: :cascade do |t|
244 245 246
    t.integer "target_id", null: false
    t.string "target_type"
    t.integer "user_id", null: false
Valery Sizov's avatar
Valery Sizov committed
247 248 249 250 251 252 253 254
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  add_index "approvers", ["target_id", "target_type"], name: "index_approvers_on_target_id_and_target_type", using: :btree
  add_index "approvers", ["user_id"], name: "index_approvers_on_user_id", using: :btree

  create_table "audit_events", force: :cascade do |t|
255 256 257 258 259
    t.integer "author_id", null: false
    t.string "type", null: false
    t.integer "entity_id", null: false
    t.string "entity_type", null: false
    t.text "details"
Marin Jankovski's avatar
Marin Jankovski committed
260 261 262 263 264 265
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  add_index "audit_events", ["entity_id", "entity_type"], name: "index_audit_events_on_entity_id_and_entity_type", using: :btree

266
  create_table "award_emoji", force: :cascade do |t|
267 268 269 270
    t.string "name"
    t.integer "user_id"
    t.integer "awardable_id"
    t.string "awardable_type"
271 272 273 274
    t.datetime "created_at"
    t.datetime "updated_at"
  end

Z.J. van de Weg's avatar
Z.J. van de Weg committed
275
  add_index "award_emoji", ["awardable_type", "awardable_id"], name: "index_award_emoji_on_awardable_type_and_awardable_id", using: :btree
276
  add_index "award_emoji", ["user_id", "name"], name: "index_award_emoji_on_user_id_and_name", using: :btree
277

278 279 280 281 282 283 284 285 286 287 288 289 290
  create_table "badges", force: :cascade do |t|
    t.string "link_url", null: false
    t.string "image_url", null: false
    t.integer "project_id"
    t.integer "group_id"
    t.string "type", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
  end

  add_index "badges", ["group_id"], name: "index_badges_on_group_id", using: :btree
  add_index "badges", ["project_id"], name: "index_badges_on_project_id", using: :btree

291 292 293 294 295 296 297
  create_table "board_assignees", force: :cascade do |t|
    t.integer "board_id", null: false
    t.integer "assignee_id", null: false
  end

  add_index "board_assignees", ["board_id", "assignee_id"], name: "index_board_assignees_on_board_id_and_assignee_id", unique: true, using: :btree

298
  create_table "board_labels", force: :cascade do |t|
299
    t.integer "board_id", null: false
Oswaldo Ferreira's avatar
Oswaldo Ferreira committed
300 301 302
    t.integer "label_id", null: false
  end

303
  add_index "board_labels", ["board_id", "label_id"], name: "index_board_labels_on_board_id_and_label_id", unique: true, using: :btree
Oswaldo Ferreira's avatar
Oswaldo Ferreira committed
304

305
  create_table "boards", force: :cascade do |t|
306
    t.integer "project_id"
307 308
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
309
    t.string "name", default: "Development", null: false
310
    t.integer "milestone_id"
Felipe Artur's avatar
Felipe Artur committed
311
    t.integer "group_id"
312
    t.integer "weight"
313 314
  end

Felipe Artur's avatar
Felipe Artur committed
315
  add_index "boards", ["group_id"], name: "index_boards_on_group_id", using: :btree
316
  add_index "boards", ["milestone_id"], name: "index_boards_on_milestone_id", using: :btree
317 318
  add_index "boards", ["project_id"], name: "index_boards_on_project_id", using: :btree

Valery Sizov's avatar
Valery Sizov committed
319
  create_table "broadcast_messages", force: :cascade do |t|
320
    t.text "message", null: false
321 322 323 324
    t.datetime "starts_at", null: false
    t.datetime "ends_at", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
325 326
    t.string "color"
    t.string "font"
327
    t.text "message_html", null: false
328
    t.integer "cached_markdown_version"
329
  end
330

331 332
  add_index "broadcast_messages", ["starts_at", "ends_at", "id"], name: "index_broadcast_messages_on_starts_at_and_ends_at_and_id", using: :btree

333 334 335
  create_table "chat_names", force: :cascade do |t|
    t.integer "user_id", null: false
    t.integer "service_id", null: false
336
    t.string "team_id", null: false
337
    t.string "team_domain"
338
    t.string "chat_id", null: false
339
    t.string "chat_name"
340
    t.datetime "last_used_at"
341 342
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
343 344
  end

345
  add_index "chat_names", ["service_id", "team_id", "chat_id"], name: "index_chat_names_on_service_id_and_team_id_and_chat_id", unique: true, using: :btree
346 347
  add_index "chat_names", ["user_id", "service_id"], name: "index_chat_names_on_user_id_and_service_id", unique: true, using: :btree

348
  create_table "chat_teams", force: :cascade do |t|
349
    t.integer "namespace_id", null: false
350 351 352 353 354 355
    t.string "team_id"
    t.string "name"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

356
  add_index "chat_teams", ["namespace_id"], name: "index_chat_teams_on_namespace_id", unique: true, using: :btree
357

358 359 360 361 362 363 364 365 366
  create_table "ci_build_trace_chunks", id: :bigserial, force: :cascade do |t|
    t.integer "build_id", null: false
    t.integer "chunk_index", null: false
    t.integer "data_store", null: false
    t.binary "raw_data"
  end

  add_index "ci_build_trace_chunks", ["build_id", "chunk_index"], name: "index_ci_build_trace_chunks_on_build_id_and_chunk_index", unique: true, using: :btree

367 368 369 370 371 372 373 374
  create_table "ci_build_trace_section_names", force: :cascade do |t|
    t.integer "project_id", null: false
    t.string "name", null: false
  end

  add_index "ci_build_trace_section_names", ["project_id", "name"], name: "index_ci_build_trace_section_names_on_project_id_and_name", unique: true, using: :btree

  create_table "ci_build_trace_sections", force: :cascade do |t|
375
    t.integer "project_id", null: false
376 377
    t.datetime "date_start", null: false
    t.datetime "date_end", null: false
378 379 380 381 382 383 384 385
    t.integer "byte_start", limit: 8, null: false
    t.integer "byte_end", limit: 8, null: false
    t.integer "build_id", null: false
    t.integer "section_name_id", null: false
  end

  add_index "ci_build_trace_sections", ["build_id", "section_name_id"], name: "index_ci_build_trace_sections_on_build_id_and_section_name_id", unique: true, using: :btree
  add_index "ci_build_trace_sections", ["project_id"], name: "index_ci_build_trace_sections_on_project_id", using: :btree
386
  add_index "ci_build_trace_sections", ["section_name_id"], name: "index_ci_build_trace_sections_on_section_name_id", using: :btree
387

Valery Sizov's avatar
Valery Sizov committed
388
  create_table "ci_builds", force: :cascade do |t|
389
    t.string "status"
390
    t.datetime "finished_at"
391
    t.text "trace"
392 393 394
    t.datetime "created_at"
    t.datetime "updated_at"
    t.datetime "started_at"
395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411
    t.integer "runner_id"
    t.float "coverage"
    t.integer "commit_id"
    t.text "commands"
    t.string "name"
    t.text "options"
    t.boolean "allow_failure", default: false, null: false
    t.string "stage"
    t.integer "trigger_request_id"
    t.integer "stage_idx"
    t.boolean "tag"
    t.string "ref"
    t.integer "user_id"
    t.string "type"
    t.string "target_url"
    t.string "description"
    t.text "artifacts_file"
412
    t.integer "project_id"
413 414
    t.text "artifacts_metadata"
    t.integer "erased_by_id"
415
    t.datetime "erased_at"
416
    t.datetime "artifacts_expire_at"
417 418 419 420
    t.string "environment"
    t.integer "artifacts_size", limit: 8
    t.string "when"
    t.text "yaml_variables"
421
    t.datetime "queued_at"
422
    t.string "token"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
423
    t.integer "lock_version"
424
    t.string "coverage_regex"
425
    t.integer "auto_canceled_by_id"
426
    t.boolean "retried"
427
    t.integer "stage_id"
Rémy Coutable's avatar
Rémy Coutable committed
428 429
    t.integer "artifacts_file_store"
    t.integer "artifacts_metadata_store"
430
    t.boolean "protected"
431
    t.integer "failure_reason"
432 433
  end

434
  add_index "ci_builds", ["artifacts_expire_at"], name: "index_ci_builds_on_artifacts_expire_at", where: "(artifacts_file <> ''::text)", using: :btree
435
  add_index "ci_builds", ["auto_canceled_by_id"], name: "index_ci_builds_on_auto_canceled_by_id", using: :btree
436
  add_index "ci_builds", ["commit_id", "stage_idx", "created_at"], name: "index_ci_builds_on_commit_id_and_stage_idx_and_created_at", using: :btree
437
  add_index "ci_builds", ["commit_id", "status", "type"], name: "index_ci_builds_on_commit_id_and_status_and_type", using: :btree
438 439
  add_index "ci_builds", ["commit_id", "type", "name", "ref"], name: "index_ci_builds_on_commit_id_and_type_and_name_and_ref", using: :btree
  add_index "ci_builds", ["commit_id", "type", "ref"], name: "index_ci_builds_on_commit_id_and_type_and_ref", using: :btree
440
  add_index "ci_builds", ["id"], name: "partial_index_ci_builds_on_id_with_legacy_artifacts", where: "(artifacts_file <> ''::text)", using: :btree
Rémy Coutable's avatar
Rémy Coutable committed
441
  add_index "ci_builds", ["name"], name: "index_ci_builds_on_name_for_security_products_values", where: "((name)::text = ANY (ARRAY[('container_scanning'::character varying)::text, ('dast'::character varying)::text, ('dependency_scanning'::character varying)::text, ('license_management'::character varying)::text, ('sast'::character varying)::text]))", using: :btree
442
  add_index "ci_builds", ["project_id", "id"], name: "index_ci_builds_on_project_id_and_id", using: :btree
443
  add_index "ci_builds", ["protected"], name: "index_ci_builds_on_protected", using: :btree
444
  add_index "ci_builds", ["runner_id"], name: "index_ci_builds_on_runner_id", using: :btree
445
  add_index "ci_builds", ["stage_id", "stage_idx"], name: "tmp_build_stage_position_index", where: "(stage_idx IS NOT NULL)", using: :btree
446
  add_index "ci_builds", ["stage_id"], name: "index_ci_builds_on_stage_id", using: :btree
447
  add_index "ci_builds", ["status", "type", "runner_id"], name: "index_ci_builds_on_status_and_type_and_runner_id", using: :btree
Kamil Trzcinski's avatar
Kamil Trzcinski committed
448
  add_index "ci_builds", ["token"], name: "index_ci_builds_on_token", unique: true, using: :btree
449
  add_index "ci_builds", ["updated_at"], name: "index_ci_builds_on_updated_at", using: :btree
450
  add_index "ci_builds", ["user_id"], name: "index_ci_builds_on_user_id", using: :btree
451

452 453 454 455 456 457 458 459 460 461
  create_table "ci_builds_metadata", force: :cascade do |t|
    t.integer "build_id", null: false
    t.integer "project_id", null: false
    t.integer "timeout"
    t.integer "timeout_source", default: 1, null: false
  end

  add_index "ci_builds_metadata", ["build_id"], name: "index_ci_builds_metadata_on_build_id", unique: true, using: :btree
  add_index "ci_builds_metadata", ["project_id"], name: "index_ci_builds_metadata_on_project_id", using: :btree

462
  create_table "ci_builds_runner_session", id: :bigserial, force: :cascade do |t|
463 464 465 466 467 468 469 470
    t.integer "build_id", null: false
    t.string "url", null: false
    t.string "certificate"
    t.string "authorization"
  end

  add_index "ci_builds_runner_session", ["build_id"], name: "index_ci_builds_runner_session_on_build_id", unique: true, using: :btree

Shinya Maeda's avatar
fix  
Shinya Maeda committed
471
  create_table "ci_group_variables", force: :cascade do |t|
472 473 474 475 476
    t.string "key", null: false
    t.text "value"
    t.text "encrypted_value"
    t.string "encrypted_value_salt"
    t.string "encrypted_value_iv"
Shinya Maeda's avatar
fix  
Shinya Maeda committed
477 478
    t.integer "group_id", null: false
    t.boolean "protected", default: false, null: false
479 480
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
481 482
  end

Shinya Maeda's avatar
fix  
Shinya Maeda committed
483
  add_index "ci_group_variables", ["group_id", "key"], name: "index_ci_group_variables_on_group_id_and_key", unique: true, using: :btree
484

485 486
  create_table "ci_job_artifacts", force: :cascade do |t|
    t.integer "project_id", null: false
487
    t.integer "job_id", null: false
488
    t.integer "file_type", null: false
489
    t.integer "size", limit: 8
490 491
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
492
    t.datetime_with_timezone "expire_at"
493
    t.string "file"
494
    t.integer "file_store"
495
    t.binary "file_sha256"
496
    t.integer "file_format", limit: 2
497
    t.integer "file_location", limit: 2
498 499
  end

500
  add_index "ci_job_artifacts", ["expire_at", "job_id"], name: "index_ci_job_artifacts_on_expire_at_and_job_id", using: :btree
501
  add_index "ci_job_artifacts", ["file_store"], name: "index_ci_job_artifacts_on_file_store", using: :btree
502
  add_index "ci_job_artifacts", ["job_id", "file_type"], name: "index_ci_job_artifacts_on_job_id_and_file_type", unique: true, using: :btree
503 504
  add_index "ci_job_artifacts", ["project_id"], name: "index_ci_job_artifacts_on_project_id", using: :btree

505 506 507 508 509 510 511 512
  create_table "ci_pipeline_chat_data", id: :bigserial, force: :cascade do |t|
    t.integer "pipeline_id", null: false
    t.integer "chat_name_id", null: false
    t.text "response_url", null: false
  end

  add_index "ci_pipeline_chat_data", ["pipeline_id"], name: "index_ci_pipeline_chat_data_on_pipeline_id", unique: true, using: :btree

Shinya Maeda's avatar
fix  
Shinya Maeda committed
513
  create_table "ci_pipeline_schedule_variables", force: :cascade do |t|
Shinya Maeda's avatar
Shinya Maeda committed
514 515 516 517 518
    t.string "key", null: false
    t.text "value"
    t.text "encrypted_value"
    t.string "encrypted_value_salt"
    t.string "encrypted_value_iv"
Shinya Maeda's avatar
fix  
Shinya Maeda committed
519
    t.integer "pipeline_schedule_id", null: false
520 521
    t.datetime_with_timezone "created_at"
    t.datetime_with_timezone "updated_at"
Shinya Maeda's avatar
Shinya Maeda committed
522 523
  end

Shinya Maeda's avatar
fix  
Shinya Maeda committed
524
  add_index "ci_pipeline_schedule_variables", ["pipeline_schedule_id", "key"], name: "index_ci_pipeline_schedule_variables_on_schedule_id_and_key", unique: true, using: :btree
Shinya Maeda's avatar
Shinya Maeda committed
525

526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541
  create_table "ci_pipeline_schedules", force: :cascade do |t|
    t.string "description"
    t.string "ref"
    t.string "cron"
    t.string "cron_timezone"
    t.datetime "next_run_at"
    t.integer "project_id"
    t.integer "owner_id"
    t.boolean "active", default: true
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  add_index "ci_pipeline_schedules", ["next_run_at", "active"], name: "index_ci_pipeline_schedules_on_next_run_at_and_active", using: :btree
  add_index "ci_pipeline_schedules", ["project_id"], name: "index_ci_pipeline_schedules_on_project_id", using: :btree

542 543 544 545 546 547 548 549 550 551 552
  create_table "ci_pipeline_variables", force: :cascade do |t|
    t.string "key", null: false
    t.text "value"
    t.text "encrypted_value"
    t.string "encrypted_value_salt"
    t.string "encrypted_value_iv"
    t.integer "pipeline_id", null: false
  end

  add_index "ci_pipeline_variables", ["pipeline_id", "key"], name: "index_ci_pipeline_variables_on_pipeline_id_and_key", unique: true, using: :btree

553
  create_table "ci_pipelines", force: :cascade do |t|
554 555 556
    t.string "ref"
    t.string "sha"
    t.string "before_sha"
557 558
    t.datetime "created_at"
    t.datetime "updated_at"
559 560
    t.boolean "tag", default: false
    t.text "yaml_errors"
561
    t.datetime "committed_at"
562
    t.integer "project_id"
563
    t.string "status"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
564 565
    t.datetime "started_at"
    t.datetime "finished_at"
566 567
    t.integer "duration"
    t.integer "user_id"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
568
    t.integer "lock_version"
569
    t.integer "auto_canceled_by_id"
570
    t.integer "pipeline_schedule_id"
571
    t.integer "source"
572
    t.integer "config_source"
573
    t.boolean "protected"
574
    t.integer "failure_reason"
Micaël Bergeron's avatar
Micaël Bergeron committed
575
    t.integer "iid"
576 577
  end

578
  add_index "ci_pipelines", ["auto_canceled_by_id"], name: "index_ci_pipelines_on_auto_canceled_by_id", using: :btree
579
  add_index "ci_pipelines", ["pipeline_schedule_id"], name: "index_ci_pipelines_on_pipeline_schedule_id", using: :btree
Micaël Bergeron's avatar
Micaël Bergeron committed
580
  add_index "ci_pipelines", ["project_id", "iid"], name: "index_ci_pipelines_on_project_id_and_iid", unique: true, where: "(iid IS NOT NULL)", using: :btree
581
  add_index "ci_pipelines", ["project_id", "ref", "status", "id"], name: "index_ci_pipelines_on_project_id_and_ref_and_status_and_id", using: :btree
582
  add_index "ci_pipelines", ["project_id", "sha"], name: "index_ci_pipelines_on_project_id_and_sha", using: :btree
583
  add_index "ci_pipelines", ["project_id", "source"], name: "index_ci_pipelines_on_project_id_and_source", using: :btree
584
  add_index "ci_pipelines", ["project_id", "status", "config_source"], name: "index_ci_pipelines_on_project_id_and_status_and_config_source", using: :btree
585 586 587
  add_index "ci_pipelines", ["project_id"], name: "index_ci_pipelines_on_project_id", using: :btree
  add_index "ci_pipelines", ["status"], name: "index_ci_pipelines_on_status", using: :btree
  add_index "ci_pipelines", ["user_id"], name: "index_ci_pipelines_on_user_id", using: :btree
588

589
  create_table "ci_runner_namespaces", force: :cascade do |t|
590
    t.integer "runner_id"
591
    t.integer "namespace_id"
592 593
  end

594 595
  add_index "ci_runner_namespaces", ["namespace_id"], name: "index_ci_runner_namespaces_on_namespace_id", using: :btree
  add_index "ci_runner_namespaces", ["runner_id", "namespace_id"], name: "index_ci_runner_namespaces_on_runner_id_and_namespace_id", unique: true, using: :btree
596

Valery Sizov's avatar
Valery Sizov committed
597
  create_table "ci_runner_projects", force: :cascade do |t|
598
    t.integer "runner_id", null: false
599 600
    t.datetime "created_at"
    t.datetime "updated_at"
601
    t.integer "project_id"
602 603
  end

604
  add_index "ci_runner_projects", ["project_id"], name: "index_ci_runner_projects_on_project_id", using: :btree
605 606
  add_index "ci_runner_projects", ["runner_id"], name: "index_ci_runner_projects_on_runner_id", using: :btree

Valery Sizov's avatar
Valery Sizov committed
607
  create_table "ci_runners", force: :cascade do |t|
608
    t.string "token"
609 610
    t.datetime "created_at"
    t.datetime "updated_at"
611
    t.string "description"
612
    t.datetime "contacted_at"
613 614 615 616 617 618 619 620 621
    t.boolean "active", default: true, null: false
    t.boolean "is_shared", default: false
    t.string "name"
    t.string "version"
    t.string "revision"
    t.string "platform"
    t.string "architecture"
    t.boolean "run_untagged", default: true, null: false
    t.boolean "locked", default: false, null: false
622
    t.integer "access_level", default: 0, null: false
623
    t.string "ip_address"
624
    t.integer "maximum_timeout"
625
    t.integer "runner_type", limit: 2, null: false
626 627
  end

628
  add_index "ci_runners", ["contacted_at"], name: "index_ci_runners_on_contacted_at", using: :btree
629
  add_index "ci_runners", ["is_shared"], name: "index_ci_runners_on_is_shared", using: :btree
630
  add_index "ci_runners", ["locked"], name: "index_ci_runners_on_locked", using: :btree
631
  add_index "ci_runners", ["runner_type"], name: "index_ci_runners_on_runner_type", using: :btree
632
  add_index "ci_runners", ["token"], name: "index_ci_runners_on_token", using: :btree
633

Kamil Trzcinski's avatar
Kamil Trzcinski committed
634 635 636 637 638 639 640 641
  create_table "ci_sources_pipelines", force: :cascade do |t|
    t.integer "project_id"
    t.integer "pipeline_id"
    t.integer "source_project_id"
    t.integer "source_job_id"
    t.integer "source_pipeline_id"
  end

642 643 644 645 646
  add_index "ci_sources_pipelines", ["pipeline_id"], name: "index_ci_sources_pipelines_on_pipeline_id", using: :btree
  add_index "ci_sources_pipelines", ["project_id"], name: "index_ci_sources_pipelines_on_project_id", using: :btree
  add_index "ci_sources_pipelines", ["source_job_id"], name: "index_ci_sources_pipelines_on_source_job_id", using: :btree
  add_index "ci_sources_pipelines", ["source_pipeline_id"], name: "index_ci_sources_pipelines_on_source_pipeline_id", using: :btree
  add_index "ci_sources_pipelines", ["source_project_id"], name: "index_ci_sources_pipelines_on_source_project_id", using: :btree
Nick Thomas's avatar
Nick Thomas committed
647

648 649 650 651 652
  create_table "ci_stages", force: :cascade do |t|
    t.integer "project_id"
    t.integer "pipeline_id"
    t.datetime "created_at"
    t.datetime "updated_at"
653
    t.string "name"
654
    t.integer "status"
655
    t.integer "lock_version"
656
    t.integer "position"
657 658
  end

659
  add_index "ci_stages", ["pipeline_id", "name"], name: "index_ci_stages_on_pipeline_id_and_name", unique: true, using: :btree
660
  add_index "ci_stages", ["pipeline_id", "position"], name: "index_ci_stages_on_pipeline_id_and_position", using: :btree
661 662
  add_index "ci_stages", ["pipeline_id"], name: "index_ci_stages_on_pipeline_id", using: :btree
  add_index "ci_stages", ["project_id"], name: "index_ci_stages_on_project_id", using: :btree
Kamil Trzcinski's avatar
Kamil Trzcinski committed
663

Valery Sizov's avatar
Valery Sizov committed
664
  create_table "ci_trigger_requests", force: :cascade do |t|
665 666
    t.integer "trigger_id", null: false
    t.text "variables"
667 668
    t.datetime "created_at"
    t.datetime "updated_at"
669
    t.integer "commit_id"
670 671
  end

672 673
  add_index "ci_trigger_requests", ["commit_id"], name: "index_ci_trigger_requests_on_commit_id", using: :btree

Valery Sizov's avatar
Valery Sizov committed
674
  create_table "ci_triggers", force: :cascade do |t|
675
    t.string "token"
676 677
    t.datetime "created_at"
    t.datetime "updated_at"
678
    t.integer "project_id"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
679 680
    t.integer "owner_id"
    t.string "description"
Shinya Maeda's avatar
Shinya Maeda committed
681
    t.string "ref"
682 683
  end

684
  add_index "ci_triggers", ["project_id"], name: "index_ci_triggers_on_project_id", using: :btree
685

Valery Sizov's avatar
Valery Sizov committed
686
  create_table "ci_variables", force: :cascade do |t|
687
    t.string "key", null: false
688 689 690 691
    t.text "value"
    t.text "encrypted_value"
    t.string "encrypted_value_salt"
    t.string "encrypted_value_iv"
692
    t.integer "project_id", null: false
693
    t.boolean "protected", default: false, null: false
694
    t.string "environment_scope", default: "*", null: false
695 696
  end

697
  add_index "ci_variables", ["project_id", "key", "environment_scope"], name: "index_ci_variables_on_project_id_and_key_and_environment_scope", unique: true, using: :btree
698

Shinya Maeda's avatar
Shinya Maeda committed
699 700
  create_table "cluster_platforms_kubernetes", force: :cascade do |t|
    t.integer "cluster_id", null: false
701 702
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
Kamil Trzcinski's avatar
Kamil Trzcinski committed
703
    t.text "api_url"
Shinya Maeda's avatar
Shinya Maeda committed
704 705 706 707 708 709 710
    t.text "ca_cert"
    t.string "namespace"
    t.string "username"
    t.text "encrypted_password"
    t.string "encrypted_password_iv"
    t.text "encrypted_token"
    t.string "encrypted_token_iv"
711
    t.integer "authorization_type", limit: 2
Shinya Maeda's avatar
Shinya Maeda committed
712 713 714 715 716 717 718
  end

  add_index "cluster_platforms_kubernetes", ["cluster_id"], name: "index_cluster_platforms_kubernetes_on_cluster_id", unique: true, using: :btree

  create_table "cluster_projects", force: :cascade do |t|
    t.integer "project_id", null: false
    t.integer "cluster_id", null: false
719 720
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
Shinya Maeda's avatar
Shinya Maeda committed
721 722 723 724 725 726 727 728
  end

  add_index "cluster_projects", ["cluster_id"], name: "index_cluster_projects_on_cluster_id", using: :btree
  add_index "cluster_projects", ["project_id"], name: "index_cluster_projects_on_project_id", using: :btree

  create_table "cluster_providers_gcp", force: :cascade do |t|
    t.integer "cluster_id", null: false
    t.integer "status"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
729
    t.integer "num_nodes", null: false
730 731
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
Shinya Maeda's avatar
Shinya Maeda committed
732 733 734 735 736 737 738 739
    t.text "status_reason"
    t.string "gcp_project_id", null: false
    t.string "zone", null: false
    t.string "machine_type"
    t.string "operation_id"
    t.string "endpoint"
    t.text "encrypted_access_token"
    t.string "encrypted_access_token_iv"
740
    t.boolean "legacy_abac", default: true, null: false
Shinya Maeda's avatar
Shinya Maeda committed
741 742 743 744 745
  end

  add_index "cluster_providers_gcp", ["cluster_id"], name: "index_cluster_providers_gcp_on_cluster_id", unique: true, using: :btree

  create_table "clusters", force: :cascade do |t|
746
    t.integer "user_id"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
747 748
    t.integer "provider_type"
    t.integer "platform_type"
749 750
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
751 752
    t.boolean "enabled", default: true
    t.string "name", null: false
753
    t.string "environment_scope", default: "*", null: false
Shinya Maeda's avatar
Shinya Maeda committed
754 755
  end

Alessio Caiazza's avatar
Alessio Caiazza committed
756 757 758
  add_index "clusters", ["enabled"], name: "index_clusters_on_enabled", using: :btree
  add_index "clusters", ["user_id"], name: "index_clusters_on_user_id", using: :btree

759 760
  create_table "clusters_applications_helm", force: :cascade do |t|
    t.integer "cluster_id", null: false
761 762
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
763 764 765
    t.integer "status", null: false
    t.string "version", null: false
    t.text "status_reason"
766 767 768
    t.text "encrypted_ca_key"
    t.text "encrypted_ca_key_iv"
    t.text "ca_cert"
769
  end
770

Kamil Trzcinski's avatar
Kamil Trzcinski committed
771 772
  create_table "clusters_applications_ingress", force: :cascade do |t|
    t.integer "cluster_id", null: false
773 774
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
Kamil Trzcinski's avatar
Kamil Trzcinski committed
775 776 777 778 779
    t.integer "status", null: false
    t.integer "ingress_type", null: false
    t.string "version", null: false
    t.string "cluster_ip"
    t.text "status_reason"
780
    t.string "external_ip"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
781 782
  end

783
  create_table "clusters_applications_jupyter", force: :cascade do |t|
784
    t.integer "cluster_id", null: false
785
    t.integer "oauth_application_id"
786 787 788 789 790
    t.integer "status", null: false
    t.string "version", null: false
    t.string "hostname"
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
791
    t.text "status_reason"
792 793
  end

794 795 796 797 798 799 800
  create_table "clusters_applications_prometheus", force: :cascade do |t|
    t.integer "cluster_id", null: false
    t.integer "status", null: false
    t.string "version", null: false
    t.text "status_reason"
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
801
    t.datetime_with_timezone "last_update_started_at"
802 803
  end

804 805 806 807 808 809 810 811
  create_table "clusters_applications_runners", force: :cascade do |t|
    t.integer "cluster_id", null: false
    t.integer "runner_id"
    t.integer "status", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.string "version", null: false
    t.text "status_reason"
812
    t.boolean "privileged", default: true, null: false
813 814 815 816 817
  end

  add_index "clusters_applications_runners", ["cluster_id"], name: "index_clusters_applications_runners_on_cluster_id", unique: true, using: :btree
  add_index "clusters_applications_runners", ["runner_id"], name: "index_clusters_applications_runners_on_runner_id", using: :btree

818 819 820 821 822 823 824 825 826 827
  create_table "container_repositories", force: :cascade do |t|
    t.integer "project_id", null: false
    t.string "name", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  add_index "container_repositories", ["project_id", "name"], name: "index_container_repositories_on_project_id_and_name", unique: true, using: :btree
  add_index "container_repositories", ["project_id"], name: "index_container_repositories_on_project_id", using: :btree

828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850
  create_table "conversational_development_index_metrics", force: :cascade do |t|
    t.float "leader_issues", null: false
    t.float "instance_issues", null: false
    t.float "leader_notes", null: false
    t.float "instance_notes", null: false
    t.float "leader_milestones", null: false
    t.float "instance_milestones", null: false
    t.float "leader_boards", null: false
    t.float "instance_boards", null: false
    t.float "leader_merge_requests", null: false
    t.float "instance_merge_requests", null: false
    t.float "leader_ci_pipelines", null: false
    t.float "instance_ci_pipelines", null: false
    t.float "leader_environments", null: false
    t.float "instance_environments", null: false
    t.float "leader_deployments", null: false
    t.float "instance_deployments", null: false
    t.float "leader_projects_prometheus_active", null: false
    t.float "instance_projects_prometheus_active", null: false
    t.float "leader_service_desk_issues", null: false
    t.float "instance_service_desk_issues", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
851 852 853 854 855 856 857 858 859 860
    t.float "percentage_boards", default: 0.0, null: false
    t.float "percentage_ci_pipelines", default: 0.0, null: false
    t.float "percentage_deployments", default: 0.0, null: false
    t.float "percentage_environments", default: 0.0, null: false
    t.float "percentage_issues", default: 0.0, null: false
    t.float "percentage_merge_requests", default: 0.0, null: false
    t.float "percentage_milestones", default: 0.0, null: false
    t.float "percentage_notes", default: 0.0, null: false
    t.float "percentage_projects_prometheus_active", default: 0.0, null: false
    t.float "percentage_service_desk_issues", default: 0.0, null: false
861 862
  end

Valery Sizov's avatar
Valery Sizov committed
863
  create_table "deploy_keys_projects", force: :cascade do |t|
864 865
    t.integer "deploy_key_id", null: false
    t.integer "project_id", null: false
Kamil Trzcinski's avatar
Kamil Trzcinski committed
866 867
    t.datetime "created_at"
    t.datetime "updated_at"
868
    t.boolean "can_push", default: false, null: false
869
  end
870

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
871
  add_index "deploy_keys_projects", ["project_id"], name: "index_deploy_keys_projects_on_project_id", using: :btree
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
872

873 874
  create_table "deploy_tokens", force: :cascade do |t|
    t.boolean "revoked", default: false
875 876
    t.boolean "read_repository", default: false, null: false
    t.boolean "read_registry", default: false, null: false
877
    t.datetime_with_timezone "expires_at", null: false
878
    t.datetime_with_timezone "created_at", null: false
879 880
    t.string "name", null: false
    t.string "token", null: false
881 882
  end

883
  add_index "deploy_tokens", ["token", "expires_at", "id"], name: "index_deploy_tokens_on_token_and_expires_at_and_id", where: "(revoked IS FALSE)", using: :btree
884 885
  add_index "deploy_tokens", ["token"], name: "index_deploy_tokens_on_token", unique: true, using: :btree

886
  create_table "deployments", force: :cascade do |t|
887 888 889 890 891 892 893 894 895
    t.integer "iid", null: false
    t.integer "project_id", null: false
    t.integer "environment_id", null: false
    t.string "ref", null: false
    t.boolean "tag", null: false
    t.string "sha", null: false
    t.integer "user_id"
    t.integer "deployable_id"
    t.string "deployable_type"
896 897
    t.datetime "created_at"
    t.datetime "updated_at"
898
    t.string "on_stop"
899 900
  end

901
  add_index "deployments", ["created_at"], name: "index_deployments_on_created_at", using: :btree
902
  add_index "deployments", ["deployable_type", "deployable_id"], name: "index_deployments_on_deployable_type_and_deployable_id", using: :btree
903 904
  add_index "deployments", ["environment_id", "id"], name: "index_deployments_on_environment_id_and_id", using: :btree
  add_index "deployments", ["environment_id", "iid", "project_id"], name: "index_deployments_on_environment_id_and_iid_and_project_id", using: :btree
905
  add_index "deployments", ["project_id", "iid"], name: "index_deployments_on_project_id_and_iid", unique: true, using: :btree
906

Valery Sizov's avatar
Valery Sizov committed
907
  create_table "emails", force: :cascade do |t|
908 909
    t.integer "user_id", null: false
    t.string "email", null: false
910 911
    t.datetime "created_at"
    t.datetime "updated_at"
912
    t.string "confirmation_token"
913 914
    t.datetime "confirmed_at"
    t.datetime "confirmation_sent_at"
915 916
  end

917
  add_index "emails", ["confirmation_token"], name: "index_emails_on_confirmation_token", unique: true, using: :btree
Kamil Trzcinski's avatar
Kamil Trzcinski committed
918
  add_index "emails", ["email"], name: "index_emails_on_email", unique: true, using: :btree
919 920
  add_index "emails", ["user_id"], name: "index_emails_on_user_id", using: :btree

921
  create_table "environments", force: :cascade do |t|
922
    t.integer "project_id", null: false
923
    t.string "name", null: false
924 925
    t.datetime "created_at"
    t.datetime "updated_at"
926 927
    t.string "external_url"
    t.string "environment_type"
928
    t.string "state", default: "available", null: false
Nick Thomas's avatar
Nick Thomas committed
929
    t.string "slug", null: false
930 931
  end

932
  add_index "environments", ["name"], name: "index_environments_on_name_varchar_pattern_ops", using: :btree, opclasses: {"name"=>"varchar_pattern_ops"}
933
  add_index "environments", ["project_id", "name"], name: "index_environments_on_project_id_and_name", unique: true, using: :btree
Nick Thomas's avatar
Nick Thomas committed
934
  add_index "environments", ["project_id", "slug"], name: "index_environments_on_project_id_and_slug", unique: true, using: :btree
935

936 937 938
  create_table "epic_issues", force: :cascade do |t|
    t.integer "epic_id", null: false
    t.integer "issue_id", null: false
939
    t.integer "relative_position", default: 1073741823, null: false
940 941 942 943 944
  end

  add_index "epic_issues", ["epic_id"], name: "index_epic_issues_on_epic_id", using: :btree
  add_index "epic_issues", ["issue_id"], name: "index_epic_issues_on_issue_id", unique: true, using: :btree

Clement Ho's avatar
Clement Ho committed
945 946
  create_table "epic_metrics", force: :cascade do |t|
    t.integer "epic_id", null: false
947 948
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
Clement Ho's avatar
Clement Ho committed
949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964
  end

  add_index "epic_metrics", ["epic_id"], name: "index_epic_metrics", using: :btree

  create_table "epics", force: :cascade do |t|
    t.integer "milestone_id"
    t.integer "group_id", null: false
    t.integer "author_id", null: false
    t.integer "assignee_id"
    t.integer "iid", null: false
    t.integer "cached_markdown_version"
    t.integer "updated_by_id"
    t.integer "last_edited_by_id"
    t.integer "lock_version"
    t.date "start_date"
    t.date "end_date"
965 966 967
    t.datetime "last_edited_at"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
Clement Ho's avatar
Clement Ho committed
968 969 970 971
    t.string "title", null: false
    t.string "title_html", null: false
    t.text "description"
    t.text "description_html"
972 973
    t.integer "start_date_sourcing_milestone_id"
    t.integer "due_date_sourcing_milestone_id"
Mark Chao's avatar
Mark Chao committed
974 975 976 977
    t.date "start_date_fixed"
    t.date "due_date_fixed"
    t.boolean "start_date_is_fixed"
    t.boolean "due_date_is_fixed"
978 979 980
    t.integer "state", limit: 2, default: 1, null: false
    t.integer "closed_by_id"
    t.datetime "closed_at"
Clement Ho's avatar
Clement Ho committed
981 982 983 984
  end

  add_index "epics", ["assignee_id"], name: "index_epics_on_assignee_id", using: :btree
  add_index "epics", ["author_id"], name: "index_epics_on_author_id", using: :btree
985
  add_index "epics", ["closed_by_id"], name: "index_epics_on_closed_by_id", using: :btree
986
  add_index "epics", ["end_date"], name: "index_epics_on_end_date", using: :btree
Clement Ho's avatar
Clement Ho committed
987 988 989
  add_index "epics", ["group_id"], name: "index_epics_on_group_id", using: :btree
  add_index "epics", ["iid"], name: "index_epics_on_iid", using: :btree
  add_index "epics", ["milestone_id"], name: "index_milestone", using: :btree
990
  add_index "epics", ["start_date"], name: "index_epics_on_start_date", using: :btree
Clement Ho's avatar
Clement Ho committed
991

Valery Sizov's avatar
Valery Sizov committed
992
  create_table "events", force: :cascade do |t|
993 994 995
    t.integer "project_id"
    t.integer "author_id", null: false
    t.integer "target_id"
996 997
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
998 999 1000 1001
    t.integer "action", limit: 2, null: false
    t.string "target_type"
  end

1002
  add_index "events", ["action"], name: "index_events_on_action", using: :btree
1003
  add_index "events", ["author_id", "project_id"], name: "index_events_on_author_id_and_project_id", using: :btree
1004 1005
  add_index "events", ["project_id", "id"], name: "index_events_on_project_id_and_id", using: :btree
  add_index "events", ["target_type", "target_id"], name: "index_events_on_target_type_and_target_id", using: :btree
1006

1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024
  create_table "feature_gates", force: :cascade do |t|
    t.string "feature_key", null: false
    t.string "key", null: false
    t.string "value"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  add_index "feature_gates", ["feature_key", "key", "value"], name: "index_feature_gates_on_feature_key_and_key_and_value", unique: true, using: :btree

  create_table "features", force: :cascade do |t|
    t.string "key", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  add_index "features", ["key"], name: "index_features_on_key", unique: true, using: :btree

1025 1026 1027 1028 1029 1030 1031 1032 1033
  create_table "fork_network_members", force: :cascade do |t|
    t.integer "fork_network_id", null: false
    t.integer "project_id", null: false
    t.integer "forked_from_project_id"
  end

  add_index "fork_network_members", ["fork_network_id"], name: "index_fork_network_members_on_fork_network_id", using: :btree
  add_index "fork_network_members", ["project_id"], name: "index_fork_network_members_on_project_id", unique: true, using: :btree

1034 1035 1036 1037 1038 1039 1040
  create_table "fork_networks", force: :cascade do |t|
    t.integer "root_project_id"
    t.string "deleted_root_project_name"
  end

  add_index "fork_networks", ["root_project_id"], name: "index_fork_networks_on_root_project_id", unique: true, using: :btree

Valery Sizov's avatar
Valery Sizov committed
1041
  create_table "forked_project_links", force: :cascade do |t|
1042 1043
    t.integer "forked_to_project_id", null: false
    t.integer "forked_from_project_id", null: false
Kamil Trzcinski's avatar
Kamil Trzcinski committed
1044 1045
    t.datetime "created_at"
    t.datetime "updated_at"
1046 1047
  end

Kamil Trzcinski's avatar
Kamil Trzcinski committed
1048
  add_index "forked_project_links", ["forked_to_project_id"], name: "index_forked_project_links_on_forked_to_project_id", unique: true, using: :btree
1049

1050 1051 1052 1053 1054 1055
  create_table "gcp_clusters", force: :cascade do |t|
    t.integer "project_id", null: false
    t.integer "user_id"
    t.integer "service_id"
    t.integer "status"
    t.integer "gcp_cluster_size", null: false
1056 1057
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078
    t.boolean "enabled", default: true
    t.text "status_reason"
    t.string "project_namespace"
    t.string "endpoint"
    t.text "ca_cert"
    t.text "encrypted_kubernetes_token"
    t.string "encrypted_kubernetes_token_iv"
    t.string "username"
    t.text "encrypted_password"
    t.string "encrypted_password_iv"
    t.string "gcp_project_id", null: false
    t.string "gcp_cluster_zone", null: false
    t.string "gcp_cluster_name", null: false
    t.string "gcp_machine_type"
    t.string "gcp_operation_id"
    t.text "encrypted_gcp_token"
    t.string "encrypted_gcp_token_iv"
  end

  add_index "gcp_clusters", ["project_id"], name: "index_gcp_clusters_on_project_id", unique: true, using: :btree

1079
  create_table "geo_event_log", id: :bigserial, force: :cascade do |t|
1080
    t.datetime "created_at", null: false
1081
    t.integer "repository_updated_event_id", limit: 8
Stan Hu's avatar
Stan Hu committed
1082
    t.integer "repository_deleted_event_id", limit: 8
1083
    t.integer "repository_renamed_event_id", limit: 8
1084
    t.integer "repositories_changed_event_id", limit: 8
1085
    t.integer "repository_created_event_id", limit: 8
1086
    t.integer "hashed_storage_migrated_event_id", limit: 8
1087
    t.integer "lfs_object_deleted_event_id", limit: 8
1088
    t.integer "hashed_storage_attachments_event_id", limit: 8
1089
    t.integer "job_artifact_deleted_event_id", limit: 8
1090
    t.integer "upload_deleted_event_id", limit: 8
1091
    t.integer "reset_checksum_event_id", limit: 8
1092 1093
  end

1094
  add_index "geo_event_log", ["repositories_changed_event_id"], name: "index_geo_event_log_on_repositories_changed_event_id", using: :btree
1095
  add_index "geo_event_log", ["repository_created_event_id"], name: "index_geo_event_log_on_repository_created_event_id", using: :btree
1096 1097
  add_index "geo_event_log", ["repository_deleted_event_id"], name: "index_geo_event_log_on_repository_deleted_event_id", using: :btree
  add_index "geo_event_log", ["repository_renamed_event_id"], name: "index_geo_event_log_on_repository_renamed_event_id", using: :btree
1098
  add_index "geo_event_log", ["repository_updated_event_id"], name: "index_geo_event_log_on_repository_updated_event_id", using: :btree
1099
  add_index "geo_event_log", ["reset_checksum_event_id"], name: "index_geo_event_log_on_reset_checksum_event_id", using: :btree
1100

1101 1102 1103 1104 1105 1106 1107 1108
  create_table "geo_hashed_storage_attachments_events", id: :bigserial, force: :cascade do |t|
    t.integer "project_id", null: false
    t.text "old_attachments_path", null: false
    t.text "new_attachments_path", null: false
  end

  add_index "geo_hashed_storage_attachments_events", ["project_id"], name: "index_geo_hashed_storage_attachments_events_on_project_id", using: :btree

1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121
  create_table "geo_hashed_storage_migrated_events", id: :bigserial, force: :cascade do |t|
    t.integer "project_id", null: false
    t.text "repository_storage_name", null: false
    t.text "old_disk_path", null: false
    t.text "new_disk_path", null: false
    t.text "old_wiki_disk_path", null: false
    t.text "new_wiki_disk_path", null: false
    t.integer "old_storage_version", limit: 2
    t.integer "new_storage_version", limit: 2, null: false
  end

  add_index "geo_hashed_storage_migrated_events", ["project_id"], name: "index_geo_hashed_storage_migrated_events_on_project_id", using: :btree

1122 1123 1124 1125 1126 1127 1128
  create_table "geo_job_artifact_deleted_events", id: :bigserial, force: :cascade do |t|
    t.integer "job_artifact_id", null: false
    t.string "file_path", null: false
  end

  add_index "geo_job_artifact_deleted_events", ["job_artifact_id"], name: "index_geo_job_artifact_deleted_events_on_job_artifact_id", using: :btree

1129 1130 1131 1132 1133 1134 1135 1136
  create_table "geo_lfs_object_deleted_events", id: :bigserial, force: :cascade do |t|
    t.integer "lfs_object_id", null: false
    t.string "oid", null: false
    t.string "file_path", null: false
  end

  add_index "geo_lfs_object_deleted_events", ["lfs_object_id"], name: "index_geo_lfs_object_deleted_events_on_lfs_object_id", using: :btree

1137
  create_table "geo_node_namespace_links", force: :cascade do |t|
1138
    t.integer "geo_node_id", null: false
1139
    t.integer "namespace_id", null: false
1140 1141
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
1142 1143
  end

1144 1145
  add_index "geo_node_namespace_links", ["geo_node_id", "namespace_id"], name: "index_geo_node_namespace_links_on_geo_node_id_and_namespace_id", unique: true, using: :btree
  add_index "geo_node_namespace_links", ["geo_node_id"], name: "index_geo_node_namespace_links_on_geo_node_id", using: :btree
1146

1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158
  create_table "geo_node_statuses", force: :cascade do |t|
    t.integer "geo_node_id", null: false
    t.integer "db_replication_lag_seconds"
    t.integer "repositories_synced_count"
    t.integer "repositories_failed_count"
    t.integer "lfs_objects_count"
    t.integer "lfs_objects_synced_count"
    t.integer "lfs_objects_failed_count"
    t.integer "attachments_count"
    t.integer "attachments_synced_count"
    t.integer "attachments_failed_count"
    t.integer "last_event_id"
1159
    t.datetime "last_event_date"
1160
    t.integer "cursor_last_event_id"
1161 1162 1163 1164
    t.datetime "cursor_last_event_date"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.datetime "last_successful_status_check_at"
1165
    t.string "status_message"
1166 1167
    t.integer "replication_slots_count"
    t.integer "replication_slots_used_count"
1168
    t.integer "replication_slots_max_retained_wal_bytes", limit: 8
1169 1170
    t.integer "wikis_synced_count"
    t.integer "wikis_failed_count"
1171 1172 1173
    t.integer "job_artifacts_count"
    t.integer "job_artifacts_synced_count"
    t.integer "job_artifacts_failed_count"
1174 1175
    t.string "version"
    t.string "revision"
1176 1177 1178 1179
    t.integer "repositories_verified_count"
    t.integer "repositories_verification_failed_count"
    t.integer "wikis_verified_count"
    t.integer "wikis_verification_failed_count"
1180 1181 1182
    t.integer "lfs_objects_synced_missing_on_primary_count"
    t.integer "job_artifacts_synced_missing_on_primary_count"
    t.integer "attachments_synced_missing_on_primary_count"
1183 1184 1185 1186 1187 1188
    t.integer "repositories_checksummed_count"
    t.integer "repositories_checksum_failed_count"
    t.integer "repositories_checksum_mismatch_count"
    t.integer "wikis_checksummed_count"
    t.integer "wikis_checksum_failed_count"
    t.integer "wikis_checksum_mismatch_count"
1189
    t.binary "storage_configuration_digest"
1190 1191
    t.integer "repositories_retrying_verification_count"
    t.integer "wikis_retrying_verification_count"
1192
    t.integer "projects_count"
1193 1194 1195 1196
  end

  add_index "geo_node_statuses", ["geo_node_id"], name: "index_geo_node_statuses_on_geo_node_id", unique: true, using: :btree

1197 1198
  create_table "geo_nodes", force: :cascade do |t|
    t.boolean "primary"
1199
    t.integer "oauth_application_id"
1200
    t.boolean "enabled", default: true, null: false
1201 1202 1203
    t.string "access_key"
    t.string "encrypted_secret_access_key"
    t.string "encrypted_secret_access_key_iv"
1204
    t.string "clone_url_prefix"
1205 1206
    t.integer "files_max_capacity", default: 10, null: false
    t.integer "repos_max_capacity", default: 25, null: false
1207
    t.string "url", null: false
1208 1209
    t.string "selective_sync_type"
    t.text "selective_sync_shards"
1210
    t.integer "verification_max_capacity", default: 100, null: false
1211 1212
  end

1213
  add_index "geo_nodes", ["access_key"], name: "index_geo_nodes_on_access_key", using: :btree
1214
  add_index "geo_nodes", ["primary"], name: "index_geo_nodes_on_primary", using: :btree
1215
  add_index "geo_nodes", ["url"], name: "index_geo_nodes_on_url", unique: true, using: :btree
Valery Sizov's avatar
Valery Sizov committed
1216

1217 1218 1219 1220 1221 1222
  create_table "geo_repositories_changed_events", id: :bigserial, force: :cascade do |t|
    t.integer "geo_node_id", null: false
  end

  add_index "geo_repositories_changed_events", ["geo_node_id"], name: "index_geo_repositories_changed_events_on_geo_node_id", using: :btree

1223 1224 1225 1226 1227 1228 1229 1230 1231 1232
  create_table "geo_repository_created_events", id: :bigserial, force: :cascade do |t|
    t.integer "project_id", null: false
    t.text "repository_storage_name", null: false
    t.text "repo_path", null: false
    t.text "wiki_path"
    t.text "project_name", null: false
  end

  add_index "geo_repository_created_events", ["project_id"], name: "index_geo_repository_created_events_on_project_id", using: :btree

Stan Hu's avatar
Stan Hu committed
1233 1234
  create_table "geo_repository_deleted_events", id: :bigserial, force: :cascade do |t|
    t.integer "project_id", null: false
1235
    t.text "repository_storage_name", null: false
Stan Hu's avatar
Stan Hu committed
1236 1237 1238 1239 1240 1241 1242
    t.text "deleted_path", null: false
    t.text "deleted_wiki_path"
    t.text "deleted_project_name", null: false
  end

  add_index "geo_repository_deleted_events", ["project_id"], name: "index_geo_repository_deleted_events_on_project_id", using: :btree

1243 1244 1245
  create_table "geo_repository_renamed_events", id: :bigserial, force: :cascade do |t|
    t.integer "project_id", null: false
    t.text "repository_storage_name", null: false
1246 1247
    t.text "old_path_with_namespace", null: false
    t.text "new_path_with_namespace", null: false
1248 1249
    t.text "old_wiki_path_with_namespace", null: false
    t.text "new_wiki_path_with_namespace", null: false
1250 1251
    t.text "old_path", null: false
    t.text "new_path", null: false
1252 1253 1254 1255
  end

  add_index "geo_repository_renamed_events", ["project_id"], name: "index_geo_repository_renamed_events_on_project_id", using: :btree

1256
  create_table "geo_repository_updated_events", id: :bigserial, force: :cascade do |t|
1257 1258
    t.integer "branches_affected", null: false
    t.integer "tags_affected", null: false
1259
    t.integer "project_id", null: false
1260
    t.integer "source", limit: 2, null: false
1261 1262
    t.boolean "new_branch", default: false, null: false
    t.boolean "remove_branch", default: false, null: false
1263
    t.text "ref"
1264 1265
  end

1266 1267
  add_index "geo_repository_updated_events", ["project_id"], name: "index_geo_repository_updated_events_on_project_id", using: :btree
  add_index "geo_repository_updated_events", ["source"], name: "index_geo_repository_updated_events_on_source", using: :btree
1268

1269 1270 1271 1272 1273 1274
  create_table "geo_reset_checksum_events", id: :bigserial, force: :cascade do |t|
    t.integer "project_id", null: false
  end

  add_index "geo_reset_checksum_events", ["project_id"], name: "index_geo_reset_checksum_events_on_project_id", using: :btree

1275 1276 1277 1278 1279 1280 1281 1282 1283 1284
  create_table "geo_upload_deleted_events", id: :bigserial, force: :cascade do |t|
    t.integer "upload_id", null: false
    t.string "file_path", null: false
    t.integer "model_id", null: false
    t.string "model_type", null: false
    t.string "uploader", null: false
  end

  add_index "geo_upload_deleted_events", ["upload_id"], name: "index_geo_upload_deleted_events_on_upload_id", using: :btree

1285
  create_table "gpg_key_subkeys", force: :cascade do |t|
1286
    t.integer "gpg_key_id", null: false
1287 1288 1289 1290
    t.binary "keyid"
    t.binary "fingerprint"
  end

1291
  add_index "gpg_key_subkeys", ["fingerprint"], name: "index_gpg_key_subkeys_on_fingerprint", unique: true, using: :btree
1292
  add_index "gpg_key_subkeys", ["gpg_key_id"], name: "index_gpg_key_subkeys_on_gpg_key_id", using: :btree
1293
  add_index "gpg_key_subkeys", ["keyid"], name: "index_gpg_key_subkeys_on_keyid", unique: true, using: :btree
1294

Alexis Reigel's avatar
Alexis Reigel committed
1295
  create_table "gpg_keys", force: :cascade do |t|
1296 1297
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
1298
    t.integer "user_id"
1299 1300
    t.binary "primary_keyid"
    t.binary "fingerprint"
1301
    t.text "key"
Alexis Reigel's avatar
Alexis Reigel committed
1302 1303
  end

1304 1305
  add_index "gpg_keys", ["fingerprint"], name: "index_gpg_keys_on_fingerprint", unique: true, using: :btree
  add_index "gpg_keys", ["primary_keyid"], name: "index_gpg_keys_on_primary_keyid", unique: true, using: :btree
Alexis Reigel's avatar
Alexis Reigel committed
1306 1307
  add_index "gpg_keys", ["user_id"], name: "index_gpg_keys_on_user_id", using: :btree

1308
  create_table "gpg_signatures", force: :cascade do |t|
1309 1310
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
1311 1312
    t.integer "project_id"
    t.integer "gpg_key_id"
1313 1314
    t.binary "commit_sha"
    t.binary "gpg_key_primary_keyid"
1315 1316
    t.text "gpg_key_user_name"
    t.text "gpg_key_user_email"
1317
    t.integer "verification_status", limit: 2, default: 0, null: false
1318
    t.integer "gpg_key_subkey_id"
1319 1320
  end

1321
  add_index "gpg_signatures", ["commit_sha"], name: "index_gpg_signatures_on_commit_sha", unique: true, using: :btree
1322 1323
  add_index "gpg_signatures", ["gpg_key_id"], name: "index_gpg_signatures_on_gpg_key_id", using: :btree
  add_index "gpg_signatures", ["gpg_key_primary_keyid"], name: "index_gpg_signatures_on_gpg_key_primary_keyid", using: :btree
1324
  add_index "gpg_signatures", ["gpg_key_subkey_id"], name: "index_gpg_signatures_on_gpg_key_subkey_id", using: :btree
1325
  add_index "gpg_signatures", ["project_id"], name: "index_gpg_signatures_on_project_id", using: :btree
Valery Sizov's avatar
Valery Sizov committed
1326

1327
  create_table "group_custom_attributes", force: :cascade do |t|
1328 1329
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
1330 1331 1332 1333 1334 1335 1336 1337
    t.integer "group_id", null: false
    t.string "key", null: false
    t.string "value", null: false
  end

  add_index "group_custom_attributes", ["group_id", "key"], name: "index_group_custom_attributes_on_group_id_and_key", unique: true, using: :btree
  add_index "group_custom_attributes", ["key", "value"], name: "index_group_custom_attributes_on_key_and_value", using: :btree

1338 1339 1340 1341 1342 1343 1344
  create_table "historical_data", force: :cascade do |t|
    t.date "date", null: false
    t.integer "active_user_count"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

Valery Sizov's avatar
Valery Sizov committed
1345
  create_table "identities", force: :cascade do |t|
1346 1347 1348
    t.string "extern_uid"
    t.string "provider"
    t.integer "user_id"
1349 1350
    t.datetime "created_at"
    t.datetime "updated_at"
1351
    t.string "secondary_extern_uid"
1352
    t.integer "saml_provider_id"
1353 1354
  end

1355
  add_index "identities", ["saml_provider_id"], name: "index_identities_on_saml_provider_id", where: "(saml_provider_id IS NOT NULL)", using: :btree
1356 1357
  add_index "identities", ["user_id"], name: "index_identities_on_user_id", using: :btree

1358 1359 1360 1361 1362 1363 1364 1365 1366 1367
  create_table "import_export_uploads", force: :cascade do |t|
    t.datetime_with_timezone "updated_at", null: false
    t.integer "project_id"
    t.text "import_file"
    t.text "export_file"
  end

  add_index "import_export_uploads", ["project_id"], name: "index_import_export_uploads_on_project_id", using: :btree
  add_index "import_export_uploads", ["updated_at"], name: "index_import_export_uploads_on_updated_at", using: :btree

Valery Sizov's avatar
Valery Sizov committed
1368
  create_table "index_statuses", force: :cascade do |t|
1369
    t.integer "project_id", null: false
Valery Sizov's avatar
Valery Sizov committed
1370
    t.datetime "indexed_at"
1371 1372 1373 1374
    t.text "note"
    t.string "last_commit"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
Valery Sizov's avatar
Valery Sizov committed
1375 1376
  end

Valery Sizov's avatar
Valery Sizov committed
1377
  add_index "index_statuses", ["project_id"], name: "index_index_statuses_on_project_id", unique: true, using: :btree
Valery Sizov's avatar
Valery Sizov committed
1378

1379
  create_table "internal_ids", id: :bigserial, force: :cascade do |t|
1380
    t.integer "project_id"
1381 1382
    t.integer "usage", null: false
    t.integer "last_value", null: false
1383
    t.integer "namespace_id"
1384 1385
  end

1386 1387
  add_index "internal_ids", ["usage", "namespace_id"], name: "index_internal_ids_on_usage_and_namespace_id", unique: true, where: "(namespace_id IS NOT NULL)", using: :btree
  add_index "internal_ids", ["usage", "project_id"], name: "index_internal_ids_on_usage_and_project_id", unique: true, where: "(project_id IS NOT NULL)", using: :btree
1388

1389
  create_table "issue_assignees", id: false, force: :cascade do |t|
1390 1391 1392 1393 1394 1395 1396
    t.integer "user_id", null: false
    t.integer "issue_id", null: false
  end

  add_index "issue_assignees", ["issue_id", "user_id"], name: "index_issue_assignees_on_issue_id_and_user_id", unique: true, using: :btree
  add_index "issue_assignees", ["user_id"], name: "index_issue_assignees_on_user_id", using: :btree

1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407
  create_table "issue_links", force: :cascade do |t|
    t.integer "source_id", null: false
    t.integer "target_id", null: false
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  add_index "issue_links", ["source_id", "target_id"], name: "index_issue_links_on_source_id_and_target_id", unique: true, using: :btree
  add_index "issue_links", ["source_id"], name: "index_issue_links_on_source_id", using: :btree
  add_index "issue_links", ["target_id"], name: "index_issue_links_on_target_id", using: :btree

1408
  create_table "issue_metrics", force: :cascade do |t|
1409
    t.integer "issue_id", null: false
1410
    t.datetime "first_mentioned_in_commit_at"
1411 1412
    t.datetime "first_associated_with_milestone_at"
    t.datetime "first_added_to_board_at"
1413 1414
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
1415 1416 1417 1418
  end

  add_index "issue_metrics", ["issue_id"], name: "index_issue_metrics", using: :btree

Valery Sizov's avatar
Valery Sizov committed
1419
  create_table "issues", force: :cascade do |t|
1420 1421 1422
    t.string "title"
    t.integer "author_id"
    t.integer "project_id"
1423 1424
    t.datetime "created_at"
    t.datetime "updated_at"
1425 1426 1427 1428 1429 1430
    t.text "description"
    t.integer "milestone_id"
    t.string "state"
    t.integer "iid"
    t.integer "updated_by_id"
    t.integer "weight"
1431
    t.boolean "confidential", default: false, null: false
1432 1433 1434 1435 1436
    t.date "due_date"
    t.integer "moved_to_id"
    t.integer "lock_version"
    t.text "title_html"
    t.text "description_html"
1437
    t.integer "time_estimate"
1438
    t.integer "relative_position"
1439
    t.string "service_desk_reply_to"
1440
    t.integer "cached_markdown_version"
1441 1442
    t.datetime "last_edited_at"
    t.integer "last_edited_by_id"
1443
    t.boolean "discussion_locked"
1444
    t.datetime_with_timezone "closed_at"
haseeb's avatar
haseeb committed
1445
    t.integer "closed_by_id"
Andrew8xx8's avatar
Andrew8xx8 committed
1446 1447
  end

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
1448
  add_index "issues", ["author_id"], name: "index_issues_on_author_id", using: :btree
1449
  add_index "issues", ["confidential"], name: "index_issues_on_confidential", using: :btree
1450
  add_index "issues", ["description"], name: "index_issues_on_description_trigram", using: :gin, opclasses: {"description"=>"gin_trgm_ops"}
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
1451
  add_index "issues", ["milestone_id"], name: "index_issues_on_milestone_id", using: :btree
1452
  add_index "issues", ["moved_to_id"], name: "index_issues_on_moved_to_id", where: "(moved_to_id IS NOT NULL)", using: :btree
1453
  add_index "issues", ["project_id", "created_at", "id", "state"], name: "index_issues_on_project_id_and_created_at_and_id_and_state", using: :btree
1454
  add_index "issues", ["project_id", "due_date", "id", "state"], name: "idx_issues_on_project_id_and_due_date_and_id_and_state_partial", where: "(due_date IS NOT NULL)", using: :btree
1455
  add_index "issues", ["project_id", "iid"], name: "index_issues_on_project_id_and_iid", unique: true, using: :btree
1456
  add_index "issues", ["project_id", "updated_at", "id", "state"], name: "index_issues_on_project_id_and_updated_at_and_id_and_state", using: :btree
1457
  add_index "issues", ["relative_position"], name: "index_issues_on_relative_position", using: :btree
1458
  add_index "issues", ["state"], name: "index_issues_on_state", using: :btree
1459
  add_index "issues", ["title"], name: "index_issues_on_title_trigram", using: :gin, opclasses: {"title"=>"gin_trgm_ops"}
1460
  add_index "issues", ["updated_at"], name: "index_issues_on_updated_at", using: :btree
1461
  add_index "issues", ["updated_by_id"], name: "index_issues_on_updated_by_id", where: "(updated_by_id IS NOT NULL)", using: :btree
Andrew8xx8's avatar
Andrew8xx8 committed
1462

Valery Sizov's avatar
Valery Sizov committed
1463
  create_table "keys", force: :cascade do |t|
1464
    t.integer "user_id"
1465 1466
    t.datetime "created_at"
    t.datetime "updated_at"
1467 1468 1469 1470 1471
    t.text "key"
    t.string "title"
    t.string "type"
    t.string "fingerprint"
    t.boolean "public", default: false, null: false
1472
    t.datetime "last_used_at"
Andrew8xx8's avatar
Andrew8xx8 committed
1473 1474
  end

1475
  add_index "keys", ["fingerprint"], name: "index_keys_on_fingerprint", unique: true, using: :btree
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
1476
  add_index "keys", ["user_id"], name: "index_keys_on_user_id", using: :btree
Andrew8xx8's avatar
Andrew8xx8 committed
1477

Valery Sizov's avatar
Valery Sizov committed
1478
  create_table "label_links", force: :cascade do |t|
1479 1480 1481
    t.integer "label_id"
    t.integer "target_id"
    t.string "target_type"
1482 1483 1484 1485
    t.datetime "created_at"
    t.datetime "updated_at"
  end

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
1486 1487 1488
  add_index "label_links", ["label_id"], name: "index_label_links_on_label_id", using: :btree
  add_index "label_links", ["target_id", "target_type"], name: "index_label_links_on_target_id_and_target_type", using: :btree

1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499
  create_table "label_priorities", force: :cascade do |t|
    t.integer "project_id", null: false
    t.integer "label_id", null: false
    t.integer "priority", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  add_index "label_priorities", ["priority"], name: "index_label_priorities_on_priority", using: :btree
  add_index "label_priorities", ["project_id", "label_id"], name: "index_label_priorities_on_project_id_and_label_id", unique: true, using: :btree

Valery Sizov's avatar
Valery Sizov committed
1500
  create_table "labels", force: :cascade do |t|
1501 1502 1503
    t.string "title"
    t.string "color"
    t.integer "project_id"
1504 1505
    t.datetime "created_at"
    t.datetime "updated_at"
1506 1507 1508
    t.boolean "template", default: false
    t.string "description"
    t.text "description_html"
1509 1510
    t.string "type"
    t.integer "group_id"
1511
    t.integer "cached_markdown_version"
1512 1513
  end

1514
  add_index "labels", ["group_id", "project_id", "title"], name: "index_labels_on_group_id_and_project_id_and_title", unique: true, using: :btree
1515
  add_index "labels", ["project_id"], name: "index_labels_on_project_id", using: :btree
1516
  add_index "labels", ["template"], name: "index_labels_on_template", where: "template", using: :btree
1517
  add_index "labels", ["title"], name: "index_labels_on_title", using: :btree
1518
  add_index "labels", ["type", "project_id"], name: "index_labels_on_type_and_project_id", using: :btree
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
1519

Valery Sizov's avatar
Valery Sizov committed
1520
  create_table "ldap_group_links", force: :cascade do |t|
1521
    t.string "cn"
1522 1523
    t.integer "group_access", null: false
    t.integer "group_id", null: false
Valery Sizov's avatar
Valery Sizov committed
1524 1525
    t.datetime "created_at"
    t.datetime "updated_at"
1526
    t.string "provider"
1527
    t.string "filter"
Valery Sizov's avatar
Valery Sizov committed
1528 1529
  end

1530 1531 1532 1533
  create_table "lfs_file_locks", force: :cascade do |t|
    t.integer "project_id", null: false
    t.integer "user_id", null: false
    t.datetime "created_at", null: false
1534
    t.string "path", limit: 511
1535 1536
  end

1537
  add_index "lfs_file_locks", ["project_id", "path"], name: "index_lfs_file_locks_on_project_id_and_path", unique: true, using: :btree
1538 1539
  add_index "lfs_file_locks", ["user_id"], name: "index_lfs_file_locks_on_user_id", using: :btree

Valery Sizov's avatar
Valery Sizov committed
1540
  create_table "lfs_objects", force: :cascade do |t|
1541 1542
    t.string "oid", null: false
    t.integer "size", limit: 8, null: false
Marin Jankovski's avatar
Marin Jankovski committed
1543 1544
    t.datetime "created_at"
    t.datetime "updated_at"
1545
    t.string "file"
1546
    t.integer "file_store"
Marin Jankovski's avatar
Marin Jankovski committed
1547 1548
  end

1549
  add_index "lfs_objects", ["oid"], name: "index_lfs_objects_on_oid", unique: true, using: :btree
Marin Jankovski's avatar
Marin Jankovski committed
1550

Valery Sizov's avatar
Valery Sizov committed
1551
  create_table "lfs_objects_projects", force: :cascade do |t|
1552 1553
    t.integer "lfs_object_id", null: false
    t.integer "project_id", null: false
Marin Jankovski's avatar
Marin Jankovski committed
1554 1555 1556 1557 1558 1559
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  add_index "lfs_objects_projects", ["project_id"], name: "index_lfs_objects_projects_on_project_id", using: :btree

Valery Sizov's avatar
Valery Sizov committed
1560
  create_table "licenses", force: :cascade do |t|
1561
    t.text "data", null: false
Valery Sizov's avatar
Valery Sizov committed
1562 1563 1564 1565
    t.datetime "created_at"
    t.datetime "updated_at"
  end

1566
  create_table "lists", force: :cascade do |t|
1567 1568 1569 1570 1571 1572
    t.integer "board_id", null: false
    t.integer "label_id"
    t.integer "list_type", default: 1, null: false
    t.integer "position"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
1573
    t.integer "user_id"
1574
    t.integer "milestone_id"
1575 1576
  end

1577
  add_index "lists", ["board_id", "label_id"], name: "index_lists_on_board_id_and_label_id", unique: true, using: :btree
1578
  add_index "lists", ["label_id"], name: "index_lists_on_label_id", using: :btree
1579
  add_index "lists", ["list_type"], name: "index_lists_on_list_type", using: :btree
1580
  add_index "lists", ["milestone_id"], name: "index_lists_on_milestone_id", using: :btree
1581
  add_index "lists", ["user_id"], name: "index_lists_on_user_id", using: :btree
1582

Valery Sizov's avatar
Valery Sizov committed
1583
  create_table "members", force: :cascade do |t|
1584 1585 1586 1587 1588 1589
    t.integer "access_level", null: false
    t.integer "source_id", null: false
    t.string "source_type", null: false
    t.integer "user_id"
    t.integer "notification_level", null: false
    t.string "type"
1590 1591
    t.datetime "created_at"
    t.datetime "updated_at"
1592 1593 1594
    t.integer "created_by_id"
    t.string "invite_email"
    t.string "invite_token"
Douwe Maan's avatar
Douwe Maan committed
1595
    t.datetime "invite_accepted_at"
1596
    t.datetime "requested_at"
1597 1598 1599
    t.date "expires_at"
    t.boolean "ldap", default: false, null: false
    t.boolean "override", default: false, null: false
1600 1601
  end

1602
  add_index "members", ["access_level"], name: "index_members_on_access_level", using: :btree
Douwe Maan's avatar
Douwe Maan committed
1603
  add_index "members", ["invite_token"], name: "index_members_on_invite_token", unique: true, using: :btree
1604
  add_index "members", ["requested_at"], name: "index_members_on_requested_at", using: :btree
1605 1606 1607
  add_index "members", ["source_id", "source_type"], name: "index_members_on_source_id_and_source_type", using: :btree
  add_index "members", ["user_id"], name: "index_members_on_user_id", using: :btree

1608
  create_table "merge_request_diff_commits", id: false, force: :cascade do |t|
1609 1610
    t.datetime "authored_date"
    t.datetime "committed_date"
1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621
    t.integer "merge_request_diff_id", null: false
    t.integer "relative_order", null: false
    t.binary "sha", null: false
    t.text "author_name"
    t.text "author_email"
    t.text "committer_name"
    t.text "committer_email"
    t.text "message"
  end

  add_index "merge_request_diff_commits", ["merge_request_diff_id", "relative_order"], name: "index_merge_request_diff_commits_on_mr_diff_id_and_order", unique: true, using: :btree
1622
  add_index "merge_request_diff_commits", ["sha"], name: "index_merge_request_diff_commits_on_sha", using: :btree
1623

1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635
  create_table "merge_request_diff_files", id: false, force: :cascade do |t|
    t.integer "merge_request_diff_id", null: false
    t.integer "relative_order", null: false
    t.boolean "new_file", null: false
    t.boolean "renamed_file", null: false
    t.boolean "deleted_file", null: false
    t.boolean "too_large", null: false
    t.string "a_mode", null: false
    t.string "b_mode", null: false
    t.text "new_path", null: false
    t.text "old_path", null: false
    t.text "diff", null: false
1636
    t.boolean "binary"
1637 1638 1639 1640
  end

  add_index "merge_request_diff_files", ["merge_request_diff_id", "relative_order"], name: "index_merge_request_diff_files_on_mr_diff_id_and_order", unique: true, using: :btree

Valery Sizov's avatar
Valery Sizov committed
1641
  create_table "merge_request_diffs", force: :cascade do |t|
1642 1643
    t.string "state"
    t.integer "merge_request_id", null: false
1644 1645
    t.datetime "created_at"
    t.datetime "updated_at"
1646 1647 1648 1649
    t.string "base_commit_sha"
    t.string "real_size"
    t.string "head_commit_sha"
    t.string "start_commit_sha"
1650
    t.integer "commits_count"
1651 1652
  end

1653
  add_index "merge_request_diffs", ["merge_request_id", "id"], name: "index_merge_request_diffs_on_merge_request_id_and_id", using: :btree
1654

1655
  create_table "merge_request_metrics", force: :cascade do |t|
1656
    t.integer "merge_request_id", null: false
1657 1658 1659 1660
    t.datetime "latest_build_started_at"
    t.datetime "latest_build_finished_at"
    t.datetime "first_deployed_to_production_at"
    t.datetime "merged_at"
1661 1662
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
1663
    t.integer "pipeline_id"
1664 1665 1666
    t.integer "merged_by_id"
    t.integer "latest_closed_by_id"
    t.datetime_with_timezone "latest_closed_at"
1667 1668
  end

1669
  add_index "merge_request_metrics", ["first_deployed_to_production_at"], name: "index_merge_request_metrics_on_first_deployed_to_production_at", using: :btree
1670
  add_index "merge_request_metrics", ["merge_request_id"], name: "index_merge_request_metrics", using: :btree
1671
  add_index "merge_request_metrics", ["pipeline_id"], name: "index_merge_request_metrics_on_pipeline_id", using: :btree
1672

Valery Sizov's avatar
Valery Sizov committed
1673
  create_table "merge_requests", force: :cascade do |t|
1674 1675
    t.string "target_branch", null: false
    t.string "source_branch", null: false
1676
    t.integer "source_project_id"
1677 1678 1679
    t.integer "author_id"
    t.integer "assignee_id"
    t.string "title"
1680 1681
    t.datetime "created_at"
    t.datetime "updated_at"
1682
    t.integer "milestone_id"
1683 1684
    t.string "state", default: "opened", null: false
    t.string "merge_status", default: "unchecked", null: false
1685 1686 1687 1688 1689 1690
    t.integer "target_project_id", null: false
    t.integer "iid"
    t.text "description"
    t.integer "updated_by_id"
    t.text "merge_error"
    t.text "merge_params"
1691
    t.boolean "merge_when_pipeline_succeeds", default: false, null: false
1692 1693 1694 1695 1696 1697 1698 1699
    t.integer "merge_user_id"
    t.string "merge_commit_sha"
    t.integer "approvals_before_merge"
    t.string "rebase_commit_sha"
    t.string "in_progress_merge_commit_sha"
    t.integer "lock_version"
    t.text "title_html"
    t.text "description_html"
1700
    t.integer "time_estimate"
1701
    t.boolean "squash", default: false, null: false
1702
    t.integer "cached_markdown_version"
1703 1704
    t.datetime "last_edited_at"
    t.integer "last_edited_by_id"
1705
    t.integer "head_pipeline_id"
1706
    t.string "merge_jid"
1707
    t.boolean "discussion_locked"
1708
    t.integer "latest_merge_request_diff_id"
1709
    t.boolean "allow_maintainer_to_push"
Andrew8xx8's avatar
Andrew8xx8 committed
1710 1711
  end

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
1712 1713 1714
  add_index "merge_requests", ["assignee_id"], name: "index_merge_requests_on_assignee_id", using: :btree
  add_index "merge_requests", ["author_id"], name: "index_merge_requests_on_author_id", using: :btree
  add_index "merge_requests", ["created_at"], name: "index_merge_requests_on_created_at", using: :btree
1715
  add_index "merge_requests", ["description"], name: "index_merge_requests_on_description_trigram", using: :gin, opclasses: {"description"=>"gin_trgm_ops"}
1716
  add_index "merge_requests", ["head_pipeline_id"], name: "index_merge_requests_on_head_pipeline_id", using: :btree
1717
  add_index "merge_requests", ["latest_merge_request_diff_id"], name: "index_merge_requests_on_latest_merge_request_diff_id", using: :btree
1718
  add_index "merge_requests", ["merge_user_id"], name: "index_merge_requests_on_merge_user_id", where: "(merge_user_id IS NOT NULL)", using: :btree
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
1719 1720
  add_index "merge_requests", ["milestone_id"], name: "index_merge_requests_on_milestone_id", using: :btree
  add_index "merge_requests", ["source_branch"], name: "index_merge_requests_on_source_branch", using: :btree
1721
  add_index "merge_requests", ["source_project_id", "source_branch"], name: "index_merge_requests_on_source_project_and_branch_state_opened", where: "((state)::text = 'opened'::text)", using: :btree
1722
  add_index "merge_requests", ["source_project_id", "source_branch"], name: "index_merge_requests_on_source_project_id_and_source_branch", using: :btree
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
1723
  add_index "merge_requests", ["target_branch"], name: "index_merge_requests_on_target_branch", using: :btree
1724
  add_index "merge_requests", ["target_project_id", "iid"], name: "index_merge_requests_on_target_project_id_and_iid", unique: true, using: :btree
1725
  add_index "merge_requests", ["target_project_id", "iid"], name: "index_merge_requests_on_target_project_id_and_iid_opened", where: "((state)::text = 'opened'::text)", using: :btree
1726
  add_index "merge_requests", ["target_project_id", "merge_commit_sha", "id"], name: "index_merge_requests_on_tp_id_and_merge_commit_sha_and_id", using: :btree
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
1727
  add_index "merge_requests", ["title"], name: "index_merge_requests_on_title", using: :btree
1728
  add_index "merge_requests", ["title"], name: "index_merge_requests_on_title_trigram", using: :gin, opclasses: {"title"=>"gin_trgm_ops"}
1729
  add_index "merge_requests", ["updated_by_id"], name: "index_merge_requests_on_updated_by_id", where: "(updated_by_id IS NOT NULL)", using: :btree
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
1730

1731
  create_table "merge_requests_closing_issues", force: :cascade do |t|
1732 1733 1734 1735
    t.integer "merge_request_id", null: false
    t.integer "issue_id", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
1736 1737 1738 1739 1740
  end

  add_index "merge_requests_closing_issues", ["issue_id"], name: "index_merge_requests_closing_issues_on_issue_id", using: :btree
  add_index "merge_requests_closing_issues", ["merge_request_id"], name: "index_merge_requests_closing_issues_on_merge_request_id", using: :btree

Valery Sizov's avatar
Valery Sizov committed
1741
  create_table "milestones", force: :cascade do |t|
1742
    t.string "title", null: false
Felipe Artur's avatar
Felipe Artur committed
1743
    t.integer "project_id"
1744 1745
    t.text "description"
    t.date "due_date"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
1746 1747
    t.datetime "created_at"
    t.datetime "updated_at"
1748 1749 1750 1751
    t.string "state"
    t.integer "iid"
    t.text "title_html"
    t.text "description_html"
1752
    t.date "start_date"
1753
    t.integer "cached_markdown_version"
Felipe Artur's avatar
Felipe Artur committed
1754
    t.integer "group_id"
Andrew8xx8's avatar
Andrew8xx8 committed
1755 1756
  end

1757
  add_index "milestones", ["description"], name: "index_milestones_on_description_trigram", using: :gin, opclasses: {"description"=>"gin_trgm_ops"}
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
1758
  add_index "milestones", ["due_date"], name: "index_milestones_on_due_date", using: :btree
Felipe Artur's avatar
Felipe Artur committed
1759
  add_index "milestones", ["group_id"], name: "index_milestones_on_group_id", using: :btree
1760
  add_index "milestones", ["project_id", "iid"], name: "index_milestones_on_project_id_and_iid", unique: true, using: :btree
1761
  add_index "milestones", ["title"], name: "index_milestones_on_title", using: :btree
1762
  add_index "milestones", ["title"], name: "index_milestones_on_title_trigram", using: :gin, opclasses: {"title"=>"gin_trgm_ops"}
Andrew8xx8's avatar
Andrew8xx8 committed
1763

1764 1765
  create_table "namespace_statistics", force: :cascade do |t|
    t.integer "namespace_id", null: false
1766 1767
    t.integer "shared_runners_seconds", default: 0, null: false
    t.datetime "shared_runners_seconds_last_reset"
1768 1769 1770 1771
  end

  add_index "namespace_statistics", ["namespace_id"], name: "index_namespace_statistics_on_namespace_id", unique: true, using: :btree

Valery Sizov's avatar
Valery Sizov committed
1772
  create_table "namespaces", force: :cascade do |t|
1773 1774 1775
    t.string "name", null: false
    t.string "path", null: false
    t.integer "owner_id"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
1776 1777
    t.datetime "created_at"
    t.datetime "updated_at"
1778 1779 1780 1781 1782 1783
    t.string "type"
    t.string "description", default: "", null: false
    t.string "avatar"
    t.boolean "membership_lock", default: false
    t.boolean "share_with_group_lock", default: false
    t.integer "visibility_level", default: 20, null: false
1784
    t.boolean "request_access_enabled", default: false, null: false
1785 1786
    t.string "ldap_sync_status", default: "ready", null: false
    t.string "ldap_sync_error"
1787 1788 1789
    t.datetime "ldap_sync_last_update_at"
    t.datetime "ldap_sync_last_successful_update_at"
    t.datetime "ldap_sync_last_sync_at"
Nick Thomas's avatar
Nick Thomas committed
1790
    t.text "description_html"
1791
    t.boolean "lfs_enabled"
1792
    t.integer "parent_id"
1793 1794
    t.integer "shared_runners_minutes_limit"
    t.integer "repository_size_limit", limit: 8
1795 1796
    t.boolean "require_two_factor_authentication", default: false, null: false
    t.integer "two_factor_grace_period", default: 48, null: false
1797
    t.integer "cached_markdown_version"
1798
    t.integer "plan_id"
1799
    t.integer "project_creation_level"
1800
    t.string "runners_token"
1801
    t.datetime_with_timezone "trial_ends_on"
Andrew8xx8's avatar
Andrew8xx8 committed
1802 1803
  end

1804
  add_index "namespaces", ["created_at"], name: "index_namespaces_on_created_at", using: :btree
1805 1806
  add_index "namespaces", ["ldap_sync_last_successful_update_at"], name: "index_namespaces_on_ldap_sync_last_successful_update_at", using: :btree
  add_index "namespaces", ["ldap_sync_last_update_at"], name: "index_namespaces_on_ldap_sync_last_update_at", using: :btree
1807
  add_index "namespaces", ["name", "parent_id"], name: "index_namespaces_on_name_and_parent_id", unique: true, using: :btree
1808
  add_index "namespaces", ["name"], name: "index_namespaces_on_name_trigram", using: :gin, opclasses: {"name"=>"gin_trgm_ops"}
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
1809
  add_index "namespaces", ["owner_id"], name: "index_namespaces_on_owner_id", using: :btree
1810
  add_index "namespaces", ["parent_id", "id"], name: "index_namespaces_on_parent_id_and_id", unique: true, using: :btree
1811
  add_index "namespaces", ["path"], name: "index_namespaces_on_path", using: :btree
1812
  add_index "namespaces", ["path"], name: "index_namespaces_on_path_trigram", using: :gin, opclasses: {"path"=>"gin_trgm_ops"}
1813
  add_index "namespaces", ["plan_id"], name: "index_namespaces_on_plan_id", using: :btree
1814
  add_index "namespaces", ["require_two_factor_authentication"], name: "index_namespaces_on_require_two_factor_authentication", using: :btree
1815
  add_index "namespaces", ["runners_token"], name: "index_namespaces_on_runners_token", unique: true, using: :btree
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
1816
  add_index "namespaces", ["type"], name: "index_namespaces_on_type", using: :btree
Andrew8xx8's avatar
Andrew8xx8 committed
1817

1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831
  create_table "note_diff_files", force: :cascade do |t|
    t.integer "diff_note_id", null: false
    t.text "diff", null: false
    t.boolean "new_file", null: false
    t.boolean "renamed_file", null: false
    t.boolean "deleted_file", null: false
    t.string "a_mode", null: false
    t.string "b_mode", null: false
    t.text "new_path", null: false
    t.text "old_path", null: false
  end

  add_index "note_diff_files", ["diff_note_id"], name: "index_note_diff_files_on_diff_note_id", unique: true, using: :btree

Valery Sizov's avatar
Valery Sizov committed
1832
  create_table "notes", force: :cascade do |t|
1833 1834 1835
    t.text "note"
    t.string "noteable_type"
    t.integer "author_id"
1836 1837
    t.datetime "created_at"
    t.datetime "updated_at"
1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848
    t.integer "project_id"
    t.string "attachment"
    t.string "line_code"
    t.string "commit_id"
    t.integer "noteable_id"
    t.boolean "system", default: false, null: false
    t.text "st_diff"
    t.integer "updated_by_id"
    t.string "type"
    t.text "position"
    t.text "original_position"
1849
    t.datetime "resolved_at"
1850 1851 1852
    t.integer "resolved_by_id"
    t.string "discussion_id"
    t.text "note_html"
1853
    t.integer "cached_markdown_version"
1854
    t.text "change_position"
1855
    t.boolean "resolved_by_push"
Andrew8xx8's avatar
Andrew8xx8 committed
1856 1857
  end

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
1858 1859 1860
  add_index "notes", ["author_id"], name: "index_notes_on_author_id", using: :btree
  add_index "notes", ["commit_id"], name: "index_notes_on_commit_id", using: :btree
  add_index "notes", ["created_at"], name: "index_notes_on_created_at", using: :btree
1861
  add_index "notes", ["discussion_id"], name: "index_notes_on_discussion_id", using: :btree
1862
  add_index "notes", ["line_code"], name: "index_notes_on_line_code", using: :btree
1863
  add_index "notes", ["note"], name: "index_notes_on_note_trigram", using: :gin, opclasses: {"note"=>"gin_trgm_ops"}
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
1864 1865 1866
  add_index "notes", ["noteable_id", "noteable_type"], name: "index_notes_on_noteable_id_and_noteable_type", using: :btree
  add_index "notes", ["noteable_type"], name: "index_notes_on_noteable_type", using: :btree
  add_index "notes", ["project_id", "noteable_type"], name: "index_notes_on_project_id_and_noteable_type", using: :btree
1867
  add_index "notes", ["updated_at"], name: "index_notes_on_updated_at", using: :btree
Andrew8xx8's avatar
Andrew8xx8 committed
1868

1869
  create_table "notification_settings", force: :cascade do |t|
1870 1871 1872 1873 1874 1875
    t.integer "user_id", null: false
    t.integer "source_id"
    t.string "source_type"
    t.integer "level", default: 0, null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887
    t.boolean "new_note"
    t.boolean "new_issue"
    t.boolean "reopen_issue"
    t.boolean "close_issue"
    t.boolean "reassign_issue"
    t.boolean "new_merge_request"
    t.boolean "reopen_merge_request"
    t.boolean "close_merge_request"
    t.boolean "reassign_merge_request"
    t.boolean "merge_merge_request"
    t.boolean "failed_pipeline"
    t.boolean "success_pipeline"
1888
    t.boolean "push_to_merge_request"
1889
    t.boolean "issue_due"
1890
    t.boolean "new_epic"
1891 1892
  end

1893
  add_index "notification_settings", ["source_id", "source_type"], name: "index_notification_settings_on_source_id_and_source_type", using: :btree
Valery Sizov's avatar
Valery Sizov committed
1894
  add_index "notification_settings", ["user_id", "source_id", "source_type"], name: "index_notifications_on_user_id_and_source_id_and_source_type", unique: true, using: :btree
1895 1896
  add_index "notification_settings", ["user_id"], name: "index_notification_settings_on_user_id", using: :btree

Valery Sizov's avatar
Valery Sizov committed
1897
  create_table "oauth_access_grants", force: :cascade do |t|
1898 1899 1900 1901 1902 1903
    t.integer "resource_owner_id", null: false
    t.integer "application_id", null: false
    t.string "token", null: false
    t.integer "expires_in", null: false
    t.text "redirect_uri", null: false
    t.datetime "created_at", null: false
Valery Sizov's avatar
Valery Sizov committed
1904
    t.datetime "revoked_at"
1905
    t.string "scopes"
Valery Sizov's avatar
Valery Sizov committed
1906 1907 1908 1909
  end

  add_index "oauth_access_grants", ["token"], name: "index_oauth_access_grants_on_token", unique: true, using: :btree

Valery Sizov's avatar
Valery Sizov committed
1910
  create_table "oauth_access_tokens", force: :cascade do |t|
1911 1912 1913 1914 1915
    t.integer "resource_owner_id"
    t.integer "application_id"
    t.string "token", null: false
    t.string "refresh_token"
    t.integer "expires_in"
Valery Sizov's avatar
Valery Sizov committed
1916
    t.datetime "revoked_at"
1917 1918
    t.datetime "created_at", null: false
    t.string "scopes"
Valery Sizov's avatar
Valery Sizov committed
1919 1920 1921 1922 1923 1924
  end

  add_index "oauth_access_tokens", ["refresh_token"], name: "index_oauth_access_tokens_on_refresh_token", unique: true, using: :btree
  add_index "oauth_access_tokens", ["resource_owner_id"], name: "index_oauth_access_tokens_on_resource_owner_id", using: :btree
  add_index "oauth_access_tokens", ["token"], name: "index_oauth_access_tokens_on_token", unique: true, using: :btree

Valery Sizov's avatar
Valery Sizov committed
1925
  create_table "oauth_applications", force: :cascade do |t|
1926 1927 1928 1929 1930
    t.string "name", null: false
    t.string "uid", null: false
    t.string "secret", null: false
    t.text "redirect_uri", null: false
    t.string "scopes", default: "", null: false
Valery Sizov's avatar
Valery Sizov committed
1931 1932
    t.datetime "created_at"
    t.datetime "updated_at"
1933 1934
    t.integer "owner_id"
    t.string "owner_type"
1935
    t.boolean "trusted", default: false, null: false
Valery Sizov's avatar
Valery Sizov committed
1936 1937 1938 1939 1940
  end

  add_index "oauth_applications", ["owner_id", "owner_type"], name: "index_oauth_applications_on_owner_id_and_owner_type", using: :btree
  add_index "oauth_applications", ["uid"], name: "index_oauth_applications_on_uid", unique: true, using: :btree

1941 1942 1943 1944 1945
  create_table "oauth_openid_requests", force: :cascade do |t|
    t.integer "access_grant_id", null: false
    t.string "nonce", null: false
  end

1946
  create_table "packages_maven_metadata", id: :bigserial, force: :cascade do |t|
1947
    t.integer "package_id", limit: 8, null: false
1948 1949
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
1950 1951
    t.string "app_group", null: false
    t.string "app_name", null: false
1952
    t.string "app_version"
1953
    t.string "path", limit: 512, null: false
1954 1955
  end

1956
  add_index "packages_maven_metadata", ["package_id", "path"], name: "index_packages_maven_metadata_on_package_id_and_path", using: :btree
1957

1958
  create_table "packages_package_files", id: :bigserial, force: :cascade do |t|
1959
    t.integer "package_id", limit: 8, null: false
1960 1961
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
1962
    t.integer "size", limit: 8
1963 1964 1965 1966
    t.integer "file_type"
    t.integer "file_store"
    t.binary "file_md5"
    t.binary "file_sha1"
1967
    t.string "file_name", null: false
1968
    t.text "file", null: false
1969 1970
  end

1971
  add_index "packages_package_files", ["package_id", "file_name"], name: "index_packages_package_files_on_package_id_and_file_name", using: :btree
1972

1973
  create_table "packages_packages", id: :bigserial, force: :cascade do |t|
1974
    t.integer "project_id", null: false
1975 1976
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
1977
    t.string "name", null: false
1978 1979 1980 1981 1982
    t.string "version"
  end

  add_index "packages_packages", ["project_id"], name: "index_packages_packages_on_project_id", using: :btree

Kamil Trzcinski's avatar
Kamil Trzcinski committed
1983 1984
  create_table "pages_domains", force: :cascade do |t|
    t.integer "project_id"
1985 1986 1987 1988 1989
    t.text "certificate"
    t.text "encrypted_key"
    t.string "encrypted_key_iv"
    t.string "encrypted_key_salt"
    t.string "domain"
1990 1991 1992
    t.datetime_with_timezone "verified_at"
    t.string "verification_code", null: false
    t.datetime_with_timezone "enabled_until"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
1993 1994 1995
  end

  add_index "pages_domains", ["domain"], name: "index_pages_domains_on_domain", unique: true, using: :btree
1996
  add_index "pages_domains", ["project_id", "enabled_until"], name: "index_pages_domains_on_project_id_and_enabled_until", using: :btree
1997
  add_index "pages_domains", ["project_id"], name: "index_pages_domains_on_project_id", using: :btree
1998 1999
  add_index "pages_domains", ["verified_at", "enabled_until"], name: "index_pages_domains_on_verified_at_and_enabled_until", using: :btree
  add_index "pages_domains", ["verified_at"], name: "index_pages_domains_on_verified_at", using: :btree
Kamil Trzcinski's avatar
Kamil Trzcinski committed
2000

Valery Sizov's avatar
Valery Sizov committed
2001
  create_table "path_locks", force: :cascade do |t|
2002 2003 2004
    t.string "path", null: false
    t.integer "project_id"
    t.integer "user_id"
Valery Sizov's avatar
Valery Sizov committed
2005 2006 2007 2008 2009 2010 2011
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  add_index "path_locks", ["path"], name: "index_path_locks_on_path", using: :btree
  add_index "path_locks", ["project_id"], name: "index_path_locks_on_project_id", using: :btree
  add_index "path_locks", ["user_id"], name: "index_path_locks_on_user_id", using: :btree
Valery Sizov's avatar
Valery Sizov committed
2012

2013
  create_table "personal_access_tokens", force: :cascade do |t|
2014 2015 2016 2017
    t.integer "user_id", null: false
    t.string "token", null: false
    t.string "name", null: false
    t.boolean "revoked", default: false
2018
    t.date "expires_at"
2019 2020
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
2021
    t.string "scopes", default: "--- []\n", null: false
Simon Vocella's avatar
Simon Vocella committed
2022
    t.boolean "impersonation", default: false, null: false
2023 2024 2025 2026
  end

  add_index "personal_access_tokens", ["token"], name: "index_personal_access_tokens_on_token", unique: true, using: :btree
  add_index "personal_access_tokens", ["user_id"], name: "index_personal_access_tokens_on_user_id", using: :btree
Valery Sizov's avatar
Valery Sizov committed
2027

2028
  create_table "plans", force: :cascade do |t|
2029 2030
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
2031 2032
    t.string "name"
    t.string "title"
2033 2034
    t.integer "active_pipelines_limit"
    t.integer "pipeline_size_limit"
2035 2036 2037 2038
  end

  add_index "plans", ["name"], name: "index_plans_on_name", using: :btree

2039 2040 2041 2042 2043 2044 2045 2046
  create_table "programming_languages", force: :cascade do |t|
    t.string "name", null: false
    t.string "color", null: false
    t.datetime_with_timezone "created_at", null: false
  end

  add_index "programming_languages", ["name"], name: "index_programming_languages_on_name", unique: true, using: :btree

2047
  create_table "project_authorizations", id: false, force: :cascade do |t|
2048 2049 2050
    t.integer "user_id", null: false
    t.integer "project_id", null: false
    t.integer "access_level", null: false
2051 2052
  end

2053
  add_index "project_authorizations", ["project_id"], name: "index_project_authorizations_on_project_id", using: :btree
2054 2055
  add_index "project_authorizations", ["user_id", "project_id", "access_level"], name: "index_project_authorizations_on_user_id_project_id_access_level", unique: true, using: :btree

2056
  create_table "project_auto_devops", force: :cascade do |t|
Zeger-Jan van de Weg's avatar
Zeger-Jan van de Weg committed
2057
    t.integer "project_id", null: false
2058 2059
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
2060 2061
    t.boolean "enabled"
    t.string "domain"
2062
    t.integer "deploy_strategy", default: 0, null: false
2063 2064
  end

Zeger-Jan van de Weg's avatar
Zeger-Jan van de Weg committed
2065
  add_index "project_auto_devops", ["project_id"], name: "index_project_auto_devops_on_project_id", unique: true, using: :btree
2066

2067 2068 2069 2070 2071 2072 2073
  create_table "project_ci_cd_settings", force: :cascade do |t|
    t.integer "project_id", null: false
    t.boolean "group_runners_enabled", default: true, null: false
  end

  add_index "project_ci_cd_settings", ["project_id"], name: "index_project_ci_cd_settings_on_project_id", unique: true, using: :btree

2074
  create_table "project_custom_attributes", force: :cascade do |t|
2075 2076
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
2077 2078 2079 2080 2081 2082 2083 2084
    t.integer "project_id", null: false
    t.string "key", null: false
    t.string "value", null: false
  end

  add_index "project_custom_attributes", ["key", "value"], name: "index_project_custom_attributes_on_key_and_value", using: :btree
  add_index "project_custom_attributes", ["project_id", "key"], name: "index_project_custom_attributes_on_project_id_and_key", unique: true, using: :btree

2085 2086 2087
  create_table "project_deploy_tokens", force: :cascade do |t|
    t.integer "project_id", null: false
    t.integer "deploy_token_id", null: false
2088
    t.datetime_with_timezone "created_at", null: false
2089 2090
  end

2091
  add_index "project_deploy_tokens", ["project_id", "deploy_token_id"], name: "index_project_deploy_tokens_on_project_id_and_deploy_token_id", unique: true, using: :btree
2092

2093
  create_table "project_features", force: :cascade do |t|
2094
    t.integer "project_id", null: false
2095 2096 2097 2098 2099
    t.integer "merge_requests_access_level"
    t.integer "issues_access_level"
    t.integer "wiki_access_level"
    t.integer "snippets_access_level"
    t.integer "builds_access_level"
2100 2101
    t.datetime "created_at"
    t.datetime "updated_at"
2102
    t.integer "repository_access_level", default: 20, null: false
2103 2104
  end

2105
  add_index "project_features", ["project_id"], name: "index_project_features_on_project_id", unique: true, using: :btree
2106

Valery Sizov's avatar
Valery Sizov committed
2107
  create_table "project_group_links", force: :cascade do |t|
2108 2109
    t.integer "project_id", null: false
    t.integer "group_id", null: false
Valery Sizov's avatar
Valery Sizov committed
2110 2111
    t.datetime "created_at"
    t.datetime "updated_at"
2112 2113
    t.integer "group_access", default: 30, null: false
    t.date "expires_at"
Valery Sizov's avatar
Valery Sizov committed
2114 2115
  end

2116
  add_index "project_group_links", ["group_id"], name: "index_project_group_links_on_group_id", using: :btree
2117
  add_index "project_group_links", ["project_id"], name: "index_project_group_links_on_project_id", using: :btree
2118

Valery Sizov's avatar
Valery Sizov committed
2119
  create_table "project_import_data", force: :cascade do |t|
2120
    t.integer "project_id"
2121 2122 2123 2124
    t.text "data"
    t.text "encrypted_credentials"
    t.string "encrypted_credentials_iv"
    t.string "encrypted_credentials_salt"
2125 2126
  end

2127 2128
  add_index "project_import_data", ["project_id"], name: "index_project_import_data_on_project_id", using: :btree

2129
  create_table "project_mirror_data", force: :cascade do |t|
2130
    t.integer "project_id", null: false
2131 2132 2133
    t.integer "retry_count", default: 0, null: false
    t.datetime "last_update_started_at"
    t.datetime "last_update_scheduled_at"
2134
    t.datetime "next_execution_timestamp"
2135 2136
    t.string "status"
    t.string "jid"
2137
    t.text "last_error"
2138 2139
    t.datetime_with_timezone "last_update_at"
    t.datetime_with_timezone "last_successful_update_at"
2140 2141
  end

Tiago Botelho's avatar
Tiago Botelho committed
2142 2143
  add_index "project_mirror_data", ["jid"], name: "index_project_mirror_data_on_jid", using: :btree
  add_index "project_mirror_data", ["last_successful_update_at"], name: "index_project_mirror_data_on_last_successful_update_at", using: :btree
2144
  add_index "project_mirror_data", ["next_execution_timestamp", "retry_count"], name: "index_mirror_data_on_next_execution_and_retry_count", using: :btree
2145
  add_index "project_mirror_data", ["project_id"], name: "index_project_mirror_data_on_project_id", unique: true, using: :btree
Tiago Botelho's avatar
Tiago Botelho committed
2146
  add_index "project_mirror_data", ["status"], name: "index_project_mirror_data_on_status", using: :btree
2147

2148 2149 2150 2151 2152 2153
  create_table "project_repository_states", force: :cascade do |t|
    t.integer "project_id", null: false
    t.binary "repository_verification_checksum"
    t.binary "wiki_verification_checksum"
    t.string "last_repository_verification_failure"
    t.string "last_wiki_verification_failure"
2154 2155 2156 2157
    t.datetime_with_timezone "repository_retry_at"
    t.datetime_with_timezone "wiki_retry_at"
    t.integer "repository_retry_count"
    t.integer "wiki_retry_count"
2158 2159
  end

2160 2161
  add_index "project_repository_states", ["last_repository_verification_failure"], name: "idx_repository_states_on_repository_failure_partial", where: "(last_repository_verification_failure IS NOT NULL)", using: :btree
  add_index "project_repository_states", ["last_wiki_verification_failure"], name: "idx_repository_states_on_wiki_failure_partial", where: "(last_wiki_verification_failure IS NOT NULL)", using: :btree
2162
  add_index "project_repository_states", ["project_id"], name: "idx_repository_states_outdated_checksums", where: "(((repository_verification_checksum IS NULL) AND (last_repository_verification_failure IS NULL)) OR ((wiki_verification_checksum IS NULL) AND (last_wiki_verification_failure IS NULL)))", using: :btree
2163 2164
  add_index "project_repository_states", ["project_id"], name: "index_project_repository_states_on_project_id", unique: true, using: :btree

2165 2166 2167 2168 2169 2170 2171 2172
  create_table "project_statistics", force: :cascade do |t|
    t.integer "project_id", null: false
    t.integer "namespace_id", null: false
    t.integer "commit_count", limit: 8, default: 0, null: false
    t.integer "storage_size", limit: 8, default: 0, null: false
    t.integer "repository_size", limit: 8, default: 0, null: false
    t.integer "lfs_objects_size", limit: 8, default: 0, null: false
    t.integer "build_artifacts_size", limit: 8, default: 0, null: false
2173 2174
    t.integer "shared_runners_seconds", limit: 8, default: 0, null: false
    t.datetime "shared_runners_seconds_last_reset"
2175 2176 2177 2178 2179
  end

  add_index "project_statistics", ["namespace_id"], name: "index_project_statistics_on_namespace_id", using: :btree
  add_index "project_statistics", ["project_id"], name: "index_project_statistics_on_project_id", unique: true, using: :btree

Valery Sizov's avatar
Valery Sizov committed
2180
  create_table "projects", force: :cascade do |t|
2181 2182 2183
    t.string "name"
    t.string "path"
    t.text "description"
2184 2185
    t.datetime "created_at"
    t.datetime "updated_at"
2186
    t.integer "creator_id"
2187
    t.integer "namespace_id", null: false
2188
    t.datetime "last_activity_at"
2189 2190 2191 2192
    t.string "import_url"
    t.integer "visibility_level", default: 0, null: false
    t.boolean "archived", default: false, null: false
    t.string "avatar"
Tiago Botelho's avatar
Tiago Botelho committed
2193
    t.string "import_status"
2194 2195
    t.text "merge_requests_template"
    t.integer "star_count", default: 0, null: false
2196
    t.boolean "merge_requests_rebase_enabled", default: false
2197 2198 2199 2200
    t.string "import_type"
    t.string "import_source"
    t.integer "approvals_before_merge", default: 0, null: false
    t.boolean "reset_approvals_on_push", default: true
2201
    t.boolean "merge_requests_ff_only_enabled", default: false
2202 2203
    t.text "issues_template"
    t.boolean "mirror", default: false, null: false
Tiago Botelho's avatar
Tiago Botelho committed
2204 2205
    t.datetime "mirror_last_update_at"
    t.datetime "mirror_last_successful_update_at"
2206
    t.integer "mirror_user_id"
Tiago Botelho's avatar
Tiago Botelho committed
2207
    t.text "import_error"
2208 2209 2210 2211 2212 2213 2214 2215 2216 2217
    t.integer "ci_id"
    t.boolean "shared_runners_enabled", default: true, null: false
    t.string "runners_token"
    t.string "build_coverage_regex"
    t.boolean "build_allow_git_fetch", default: true, null: false
    t.integer "build_timeout", default: 3600, null: false
    t.boolean "mirror_trigger_builds", default: false, null: false
    t.boolean "pending_delete", default: false
    t.boolean "public_builds", default: true, null: false
    t.boolean "last_repository_check_failed"
2218
    t.datetime "last_repository_check_at"
2219
    t.boolean "container_registry_enabled"
2220
    t.boolean "only_allow_merge_if_pipeline_succeeds", default: false, null: false
2221 2222
    t.boolean "has_external_issue_tracker"
    t.string "repository_storage", default: "default", null: false
2223
    t.boolean "repository_read_only"
2224
    t.boolean "request_access_enabled", default: false, null: false
2225
    t.boolean "has_external_wiki"
2226
    t.string "ci_config_path"
2227 2228
    t.boolean "lfs_enabled"
    t.text "description_html"
2229
    t.boolean "only_allow_merge_if_all_discussions_are_resolved"
2230
    t.integer "repository_size_limit", limit: 8
2231
    t.boolean "printing_merge_request_link_enabled", default: true, null: false
2232
    t.integer "auto_cancel_pending_pipelines", default: 1, null: false
2233
    t.boolean "service_desk_enabled", default: true
Tiago Botelho's avatar
Tiago Botelho committed
2234
    t.string "import_jid"
2235
    t.integer "cached_markdown_version"
2236
    t.text "delete_error"
2237
    t.datetime "last_repository_updated_at"
Simon Knox's avatar
Simon Knox committed
2238
    t.boolean "disable_overriding_approvers_per_merge_request"
2239
    t.integer "storage_version", limit: 2
Sean McGivern's avatar
Sean McGivern committed
2240
    t.boolean "resolve_outdated_diff_discussions"
2241
    t.boolean "remote_mirror_available_overridden"
2242
    t.boolean "only_mirror_protected_branches"
2243
    t.boolean "pull_mirror_available_overridden"
2244
    t.integer "jobs_cache_index"
2245
    t.string "external_authorization_classification_label"
2246
    t.boolean "mirror_overwrites_diverged_branches"
Rob Watson's avatar
Rob Watson committed
2247
    t.boolean "pages_https_only", default: true
2248
    t.string "external_webhook_token"
2249
    t.boolean "packages_enabled"
2250
    t.boolean "merge_requests_author_approval"
Andrew8xx8's avatar
Andrew8xx8 committed
2251 2252
  end

2253
  add_index "projects", ["ci_id"], name: "index_projects_on_ci_id", using: :btree
2254
  add_index "projects", ["created_at"], name: "index_projects_on_created_at", using: :btree
2255
  add_index "projects", ["creator_id"], name: "index_projects_on_creator_id", using: :btree
2256
  add_index "projects", ["description"], name: "index_projects_on_description_trigram", using: :gin, opclasses: {"description"=>"gin_trgm_ops"}
2257
  add_index "projects", ["id", "repository_storage", "last_repository_updated_at"], name: "idx_projects_on_repository_storage_last_repository_updated_at", using: :btree
2258
  add_index "projects", ["id"], name: "index_projects_on_id_partial_for_visibility", unique: true, where: "(visibility_level = ANY (ARRAY[10, 20]))", using: :btree
2259
  add_index "projects", ["id"], name: "index_projects_on_mirror_and_mirror_trigger_builds_both_true", where: "((mirror IS TRUE) AND (mirror_trigger_builds IS TRUE))", using: :btree
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
2260
  add_index "projects", ["last_activity_at"], name: "index_projects_on_last_activity_at", using: :btree
2261
  add_index "projects", ["last_repository_check_at"], name: "index_projects_on_last_repository_check_at", where: "(last_repository_check_at IS NOT NULL)", using: :btree
2262
  add_index "projects", ["last_repository_check_failed"], name: "index_projects_on_last_repository_check_failed", using: :btree
2263
  add_index "projects", ["last_repository_updated_at"], name: "index_projects_on_last_repository_updated_at", using: :btree
Tiago Botelho's avatar
Tiago Botelho committed
2264
  add_index "projects", ["mirror_last_successful_update_at"], name: "index_projects_on_mirror_last_successful_update_at", using: :btree
2265
  add_index "projects", ["name"], name: "index_projects_on_name_trigram", using: :gin, opclasses: {"name"=>"gin_trgm_ops"}
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
2266
  add_index "projects", ["namespace_id"], name: "index_projects_on_namespace_id", using: :btree
Kamil Trzcinski's avatar
Kamil Trzcinski committed
2267
  add_index "projects", ["path"], name: "index_projects_on_path", using: :btree
2268
  add_index "projects", ["path"], name: "index_projects_on_path_trigram", using: :gin, opclasses: {"path"=>"gin_trgm_ops"}
2269
  add_index "projects", ["pending_delete"], name: "index_projects_on_pending_delete", using: :btree
Valery Sizov's avatar
Valery Sizov committed
2270
  add_index "projects", ["repository_storage", "created_at"], name: "idx_project_repository_check_partial", where: "(last_repository_check_at IS NULL)", using: :btree
2271
  add_index "projects", ["repository_storage"], name: "index_projects_on_repository_storage", using: :btree
2272
  add_index "projects", ["runners_token"], name: "index_projects_on_runners_token", using: :btree
2273
  add_index "projects", ["star_count"], name: "index_projects_on_star_count", using: :btree
2274
  add_index "projects", ["visibility_level"], name: "index_projects_on_visibility_level", using: :btree
Andrew8xx8's avatar
Andrew8xx8 committed
2275

2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286
  create_table "prometheus_alerts", force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.float "threshold", null: false
    t.integer "operator", null: false
    t.integer "environment_id", null: false
    t.integer "project_id", null: false
    t.integer "prometheus_metric_id", null: false
  end

  add_index "prometheus_alerts", ["environment_id"], name: "index_prometheus_alerts_on_environment_id", using: :btree
2287
  add_index "prometheus_alerts", ["project_id", "prometheus_metric_id"], name: "index_prometheus_alerts_on_project_id_and_prometheus_metric_id", unique: true, using: :btree
2288
  add_index "prometheus_alerts", ["prometheus_metric_id"], name: "index_prometheus_alerts_on_prometheus_metric_id", using: :btree
2289

2290
  create_table "prometheus_metrics", force: :cascade do |t|
2291
    t.integer "project_id"
2292 2293
    t.string "title", null: false
    t.string "query", null: false
2294 2295 2296
    t.string "y_label"
    t.string "unit"
    t.string "legend"
2297
    t.integer "group", null: false
2298 2299
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
2300 2301
    t.boolean "common", default: false, null: false
    t.string "identifier"
2302 2303
  end

2304
  add_index "prometheus_metrics", ["common"], name: "index_prometheus_metrics_on_common", using: :btree
Pawel Chojnacki's avatar
Pawel Chojnacki committed
2305
  add_index "prometheus_metrics", ["group"], name: "index_prometheus_metrics_on_group", using: :btree
2306
  add_index "prometheus_metrics", ["identifier"], name: "index_prometheus_metrics_on_identifier", unique: true, using: :btree
2307 2308
  add_index "prometheus_metrics", ["project_id"], name: "index_prometheus_metrics_on_project_id", using: :btree

2309
  create_table "protected_branch_merge_access_levels", force: :cascade do |t|
2310
    t.integer "protected_branch_id", null: false
2311
    t.integer "access_level", default: 40
2312 2313 2314
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.integer "user_id"
2315
    t.integer "group_id"
2316 2317 2318
  end

  add_index "protected_branch_merge_access_levels", ["protected_branch_id"], name: "index_protected_branch_merge_access", using: :btree
2319
  add_index "protected_branch_merge_access_levels", ["user_id"], name: "index_protected_branch_merge_access_levels_on_user_id", using: :btree
2320 2321

  create_table "protected_branch_push_access_levels", force: :cascade do |t|
2322
    t.integer "protected_branch_id", null: false
2323
    t.integer "access_level", default: 40
2324 2325 2326
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.integer "user_id"
2327
    t.integer "group_id"
2328 2329 2330
  end

  add_index "protected_branch_push_access_levels", ["protected_branch_id"], name: "index_protected_branch_push_access", using: :btree
2331
  add_index "protected_branch_push_access_levels", ["user_id"], name: "index_protected_branch_push_access_levels_on_user_id", using: :btree
2332

2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343
  create_table "protected_branch_unprotect_access_levels", force: :cascade do |t|
    t.integer "protected_branch_id", null: false
    t.integer "access_level", default: 40
    t.integer "user_id"
    t.integer "group_id"
  end

  add_index "protected_branch_unprotect_access_levels", ["group_id"], name: "index_protected_branch_unprotect_access_levels_on_group_id", using: :btree
  add_index "protected_branch_unprotect_access_levels", ["protected_branch_id"], name: "index_protected_branch_unprotect_access", using: :btree
  add_index "protected_branch_unprotect_access_levels", ["user_id"], name: "index_protected_branch_unprotect_access_levels_on_user_id", using: :btree

Valery Sizov's avatar
Valery Sizov committed
2344
  create_table "protected_branches", force: :cascade do |t|
2345 2346
    t.integer "project_id", null: false
    t.string "name", null: false
Kamil Trzcinski's avatar
Kamil Trzcinski committed
2347 2348
    t.datetime "created_at"
    t.datetime "updated_at"
Andrew8xx8's avatar
Andrew8xx8 committed
2349 2350
  end

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
2351
  add_index "protected_branches", ["project_id"], name: "index_protected_branches_on_project_id", using: :btree
2352

2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375
  create_table "protected_environment_deploy_access_levels", force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "access_level", default: 40
    t.integer "protected_environment_id", null: false
    t.integer "user_id"
    t.integer "group_id"
  end

  add_index "protected_environment_deploy_access_levels", ["group_id"], name: "index_protected_environment_deploy_access_levels_on_group_id", using: :btree
  add_index "protected_environment_deploy_access_levels", ["protected_environment_id"], name: "index_protected_environment_deploy_access", using: :btree
  add_index "protected_environment_deploy_access_levels", ["user_id"], name: "index_protected_environment_deploy_access_levels_on_user_id", using: :btree

  create_table "protected_environments", force: :cascade do |t|
    t.integer "project_id", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.string "name", null: false
  end

  add_index "protected_environments", ["project_id", "name"], name: "index_protected_environments_on_project_id_and_name", unique: true, using: :btree
  add_index "protected_environments", ["project_id"], name: "index_protected_environments_on_project_id", using: :btree

2376
  create_table "protected_tag_create_access_levels", force: :cascade do |t|
2377 2378 2379 2380 2381 2382 2383 2384
    t.integer "protected_tag_id", null: false
    t.integer "access_level", default: 40
    t.integer "user_id"
    t.integer "group_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

2385 2386
  add_index "protected_tag_create_access_levels", ["protected_tag_id"], name: "index_protected_tag_create_access", using: :btree
  add_index "protected_tag_create_access_levels", ["user_id"], name: "index_protected_tag_create_access_levels_on_user_id", using: :btree
2387 2388 2389 2390 2391 2392 2393 2394

  create_table "protected_tags", force: :cascade do |t|
    t.integer "project_id", null: false
    t.string "name", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

Robert Schilling's avatar
Robert Schilling committed
2395
  add_index "protected_tags", ["project_id", "name"], name: "index_protected_tags_on_project_id_and_name", unique: true, using: :btree
2396 2397
  add_index "protected_tags", ["project_id"], name: "index_protected_tags_on_project_id", using: :btree

2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410
  create_table "push_event_payloads", id: false, force: :cascade do |t|
    t.integer "commit_count", limit: 8, null: false
    t.integer "event_id", null: false
    t.integer "action", limit: 2, null: false
    t.integer "ref_type", limit: 2, null: false
    t.binary "commit_from"
    t.binary "commit_to"
    t.text "ref"
    t.string "commit_title", limit: 70
  end

  add_index "push_event_payloads", ["event_id"], name: "index_push_event_payloads_on_event_id", unique: true, using: :btree

2411
  create_table "push_rules", force: :cascade do |t|
2412 2413 2414 2415 2416
    t.string "force_push_regex"
    t.string "delete_branch_regex"
    t.string "commit_message_regex"
    t.boolean "deny_delete_tag"
    t.integer "project_id"
2417 2418
    t.datetime "created_at"
    t.datetime "updated_at"
2419 2420 2421 2422 2423 2424
    t.string "author_email_regex"
    t.boolean "member_check", default: false, null: false
    t.string "file_name_regex"
    t.boolean "is_sample", default: false
    t.integer "max_file_size", default: 0, null: false
    t.boolean "prevent_secrets", default: false, null: false
2425
    t.string "branch_name_regex"
2426
    t.boolean "reject_unsigned_commits"
2427
    t.boolean "commit_committer_check"
2428
    t.boolean "regexp_uses_re2", default: true
2429
    t.string "commit_message_negative_regex"
2430 2431
  end

2432
  add_index "push_rules", ["is_sample"], name: "index_push_rules_on_is_sample", where: "is_sample", using: :btree
2433
  add_index "push_rules", ["project_id"], name: "index_push_rules_on_project_id", using: :btree
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
2434

2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445
  create_table "redirect_routes", force: :cascade do |t|
    t.integer "source_id", null: false
    t.string "source_type", null: false
    t.string "path", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  add_index "redirect_routes", ["path"], name: "index_redirect_routes_on_path", unique: true, using: :btree
  add_index "redirect_routes", ["source_type", "source_id"], name: "index_redirect_routes_on_source_type_and_source_id", using: :btree

Valery Sizov's avatar
Valery Sizov committed
2446
  create_table "releases", force: :cascade do |t|
2447 2448 2449
    t.string "tag"
    t.text "description"
    t.integer "project_id"
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
2450 2451
    t.datetime "created_at"
    t.datetime "updated_at"
2452
    t.text "description_html"
2453
    t.integer "cached_markdown_version"
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
2454 2455 2456 2457 2458
  end

  add_index "releases", ["project_id", "tag"], name: "index_releases_on_project_id_and_tag", using: :btree
  add_index "releases", ["project_id"], name: "index_releases_on_project_id", using: :btree

2459
  create_table "remote_mirrors", force: :cascade do |t|
2460 2461 2462 2463
    t.integer "project_id"
    t.string "url"
    t.boolean "enabled", default: false
    t.string "update_status"
2464 2465
    t.datetime "last_update_at"
    t.datetime "last_successful_update_at"
2466 2467 2468 2469 2470 2471
    t.string "last_error"
    t.text "encrypted_credentials"
    t.string "encrypted_credentials_iv"
    t.string "encrypted_credentials_salt"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
2472
    t.datetime "last_update_started_at"
2473
    t.boolean "only_protected_branches", default: false, null: false
2474
    t.string "remote_name"
2475 2476
  end

2477
  add_index "remote_mirrors", ["last_successful_update_at"], name: "index_remote_mirrors_on_last_successful_update_at", using: :btree
2478
  add_index "remote_mirrors", ["project_id"], name: "index_remote_mirrors_on_project_id", using: :btree
2479

2480 2481 2482 2483 2484 2485 2486 2487
  create_table "repository_languages", id: false, force: :cascade do |t|
    t.integer "project_id", null: false
    t.integer "programming_language_id", null: false
    t.float "share", null: false
  end

  add_index "repository_languages", ["project_id", "programming_language_id"], name: "index_repository_languages_on_project_and_languages_id", unique: true, using: :btree

2488 2489 2490 2491
  create_table "resource_label_events", id: :bigserial, force: :cascade do |t|
    t.integer "action", null: false
    t.integer "issue_id"
    t.integer "merge_request_id"
Jan Provaznik's avatar
Jan Provaznik committed
2492
    t.integer "epic_id"
2493 2494 2495
    t.integer "label_id"
    t.integer "user_id"
    t.datetime_with_timezone "created_at", null: false
2496 2497 2498
    t.integer "cached_markdown_version"
    t.text "reference"
    t.text "reference_html"
2499 2500
  end

Jan Provaznik's avatar
Jan Provaznik committed
2501
  add_index "resource_label_events", ["epic_id"], name: "index_resource_label_events_on_epic_id", using: :btree
2502 2503 2504 2505 2506
  add_index "resource_label_events", ["issue_id"], name: "index_resource_label_events_on_issue_id", using: :btree
  add_index "resource_label_events", ["label_id"], name: "index_resource_label_events_on_label_id", using: :btree
  add_index "resource_label_events", ["merge_request_id"], name: "index_resource_label_events_on_merge_request_id", using: :btree
  add_index "resource_label_events", ["user_id"], name: "index_resource_label_events_on_user_id", using: :btree

2507 2508 2509 2510 2511 2512
  create_table "routes", force: :cascade do |t|
    t.integer "source_id", null: false
    t.string "source_type", null: false
    t.string "path", null: false
    t.datetime "created_at"
    t.datetime "updated_at"
2513
    t.string "name"
2514 2515 2516
  end

  add_index "routes", ["path"], name: "index_routes_on_path", unique: true, using: :btree
2517
  add_index "routes", ["path"], name: "index_routes_on_path_text_pattern_ops", using: :btree, opclasses: {"path"=>"varchar_pattern_ops"}
2518
  add_index "routes", ["source_type", "source_id"], name: "index_routes_on_source_type_and_source_id", unique: true, using: :btree
2519

2520 2521 2522 2523 2524 2525 2526 2527 2528
  create_table "saml_providers", force: :cascade do |t|
    t.integer "group_id", null: false
    t.boolean "enabled", null: false
    t.string "certificate_fingerprint", null: false
    t.string "sso_url", null: false
  end

  add_index "saml_providers", ["group_id"], name: "index_saml_providers_on_group_id", using: :btree

Valery Sizov's avatar
Valery Sizov committed
2529
  create_table "sent_notifications", force: :cascade do |t|
Douwe Maan's avatar
Douwe Maan committed
2530 2531
    t.integer "project_id"
    t.integer "noteable_id"
2532
    t.string "noteable_type"
Douwe Maan's avatar
Douwe Maan committed
2533
    t.integer "recipient_id"
2534 2535 2536 2537 2538
    t.string "commit_id"
    t.string "reply_key", null: false
    t.string "line_code"
    t.string "note_type"
    t.text "position"
2539
    t.string "in_reply_to_discussion_id"
Douwe Maan's avatar
Douwe Maan committed
2540 2541 2542 2543
  end

  add_index "sent_notifications", ["reply_key"], name: "index_sent_notifications_on_reply_key", unique: true, using: :btree

Valery Sizov's avatar
Valery Sizov committed
2544
  create_table "services", force: :cascade do |t|
2545 2546 2547
    t.string "type"
    t.string "title"
    t.integer "project_id"
2548 2549
    t.datetime "created_at"
    t.datetime "updated_at"
2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562
    t.boolean "active", default: false, null: false
    t.text "properties"
    t.boolean "template", default: false
    t.boolean "push_events", default: true
    t.boolean "issues_events", default: true
    t.boolean "merge_requests_events", default: true
    t.boolean "tag_push_events", default: true
    t.boolean "note_events", default: true, null: false
    t.string "category", default: "common", null: false
    t.boolean "default", default: false
    t.boolean "wiki_page_events", default: true
    t.boolean "pipeline_events", default: false, null: false
    t.boolean "confidential_issues_events", default: true, null: false
2563
    t.boolean "commit_events", default: true, null: false
2564
    t.boolean "job_events", default: false, null: false
2565
    t.boolean "confidential_note_events", default: true
Andrew8xx8's avatar
Andrew8xx8 committed
2566 2567
  end

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
2568
  add_index "services", ["project_id"], name: "index_services_on_project_id", using: :btree
2569
  add_index "services", ["template"], name: "index_services_on_template", using: :btree
Andrew8xx8's avatar
Andrew8xx8 committed
2570

2571 2572 2573 2574
  create_table "site_statistics", force: :cascade do |t|
    t.integer "repositories_count", default: 0, null: false
  end

Valery Sizov's avatar
Valery Sizov committed
2575 2576 2577 2578 2579 2580
  create_table "slack_integrations", force: :cascade do |t|
    t.integer "service_id", null: false
    t.string "team_id", null: false
    t.string "team_name", null: false
    t.string "alias", null: false
    t.string "user_id", null: false
2581 2582
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
Valery Sizov's avatar
Valery Sizov committed
2583 2584 2585
  end

  add_index "slack_integrations", ["service_id"], name: "index_slack_integrations_on_service_id", using: :btree
2586
  add_index "slack_integrations", ["team_id", "alias"], name: "index_slack_integrations_on_team_id_and_alias", unique: true, using: :btree
2587

Valery Sizov's avatar
Valery Sizov committed
2588
  create_table "snippets", force: :cascade do |t|
2589 2590 2591 2592
    t.string "title"
    t.text "content"
    t.integer "author_id", null: false
    t.integer "project_id"
2593 2594
    t.datetime "created_at"
    t.datetime "updated_at"
2595 2596 2597 2598 2599
    t.string "file_name"
    t.string "type"
    t.integer "visibility_level", default: 0, null: false
    t.text "title_html"
    t.text "content_html"
2600
    t.integer "cached_markdown_version"
2601 2602
    t.text "description"
    t.text "description_html"
Andrew8xx8's avatar
Andrew8xx8 committed
2603 2604
  end

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
2605
  add_index "snippets", ["author_id"], name: "index_snippets_on_author_id", using: :btree
2606
  add_index "snippets", ["file_name"], name: "index_snippets_on_file_name_trigram", using: :gin, opclasses: {"file_name"=>"gin_trgm_ops"}
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
2607
  add_index "snippets", ["project_id"], name: "index_snippets_on_project_id", using: :btree
2608
  add_index "snippets", ["title"], name: "index_snippets_on_title_trigram", using: :gin, opclasses: {"title"=>"gin_trgm_ops"}
2609
  add_index "snippets", ["updated_at"], name: "index_snippets_on_updated_at", using: :btree
2610
  add_index "snippets", ["visibility_level"], name: "index_snippets_on_visibility_level", using: :btree
Andrew8xx8's avatar
Andrew8xx8 committed
2611

2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625
  create_table "software_license_policies", force: :cascade do |t|
    t.integer "project_id", null: false
    t.integer "software_license_id", null: false
    t.integer "approval_status", default: 0, null: false
  end

  add_index "software_license_policies", ["project_id", "software_license_id"], name: "index_software_license_policies_unique_per_project", unique: true, using: :btree

  create_table "software_licenses", force: :cascade do |t|
    t.string "name", null: false
  end

  add_index "software_licenses", ["name"], name: "index_software_licenses_on_name", using: :btree

2626
  create_table "spam_logs", force: :cascade do |t|
2627 2628 2629 2630 2631 2632 2633 2634 2635 2636
    t.integer "user_id"
    t.string "source_ip"
    t.string "user_agent"
    t.boolean "via_api"
    t.string "noteable_type"
    t.string "title"
    t.text "description"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.boolean "submitted_as_ham", default: false, null: false
2637
    t.boolean "recaptcha_verified", default: false, null: false
2638 2639
  end

Valery Sizov's avatar
Valery Sizov committed
2640
  create_table "subscriptions", force: :cascade do |t|
2641 2642 2643 2644
    t.integer "user_id"
    t.integer "subscribable_id"
    t.string "subscribable_type"
    t.boolean "subscribed"
Valery Sizov's avatar
Valery Sizov committed
2645 2646
    t.datetime "created_at"
    t.datetime "updated_at"
2647
    t.integer "project_id"
Valery Sizov's avatar
Valery Sizov committed
2648 2649
  end

2650
  add_index "subscriptions", ["subscribable_id", "subscribable_type", "user_id", "project_id"], name: "index_subscriptions_on_subscribable_and_user_id_and_project_id", unique: true, using: :btree
Valery Sizov's avatar
Valery Sizov committed
2651

2652 2653 2654
  create_table "system_note_metadata", force: :cascade do |t|
    t.integer "note_id", null: false
    t.integer "commit_count"
2655
    t.string "action"
2656 2657 2658 2659
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

2660 2661
  add_index "system_note_metadata", ["note_id"], name: "index_system_note_metadata_on_note_id", unique: true, using: :btree

Valery Sizov's avatar
Valery Sizov committed
2662
  create_table "taggings", force: :cascade do |t|
2663 2664 2665 2666 2667 2668
    t.integer "tag_id"
    t.integer "taggable_id"
    t.string "taggable_type"
    t.integer "tagger_id"
    t.string "tagger_type"
    t.string "context"
Andrew8xx8's avatar
Andrew8xx8 committed
2669 2670 2671
    t.datetime "created_at"
  end

2672
  add_index "taggings", ["tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type"], name: "taggings_idx", unique: true, using: :btree
2673
  add_index "taggings", ["tag_id"], name: "index_taggings_on_tag_id", using: :btree
2674
  add_index "taggings", ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context", using: :btree
2675
  add_index "taggings", ["taggable_id", "taggable_type"], name: "index_taggings_on_taggable_id_and_taggable_type", using: :btree
2676

Valery Sizov's avatar
Valery Sizov committed
2677
  create_table "tags", force: :cascade do |t|
2678
    t.string "name"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
2679
    t.integer "taggings_count", default: 0
Andrew8xx8's avatar
Andrew8xx8 committed
2680 2681
  end

2682 2683
  add_index "tags", ["name"], name: "index_tags_on_name", unique: true, using: :btree

2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695
  create_table "term_agreements", force: :cascade do |t|
    t.integer "term_id", null: false
    t.integer "user_id", null: false
    t.boolean "accepted", default: false, null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
  end

  add_index "term_agreements", ["term_id"], name: "index_term_agreements_on_term_id", using: :btree
  add_index "term_agreements", ["user_id", "term_id"], name: "term_agreements_unique_index", unique: true, using: :btree
  add_index "term_agreements", ["user_id"], name: "index_term_agreements_on_user_id", using: :btree

2696 2697
  create_table "timelogs", force: :cascade do |t|
    t.integer "time_spent", null: false
2698
    t.integer "user_id"
2699 2700
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
2701 2702
    t.integer "issue_id"
    t.integer "merge_request_id"
2703
    t.datetime "spent_at"
2704 2705
  end

2706 2707
  add_index "timelogs", ["issue_id"], name: "index_timelogs_on_issue_id", using: :btree
  add_index "timelogs", ["merge_request_id"], name: "index_timelogs_on_merge_request_id", using: :btree
2708
  add_index "timelogs", ["user_id"], name: "index_timelogs_on_user_id", using: :btree
2709

2710
  create_table "todos", force: :cascade do |t|
2711
    t.integer "user_id", null: false
2712
    t.integer "project_id"
2713 2714
    t.integer "target_id"
    t.string "target_type", null: false
2715
    t.integer "author_id", null: false
2716 2717
    t.integer "action", null: false
    t.string "state", null: false
Douglas Barbosa Alexandre's avatar
Douglas Barbosa Alexandre committed
2718 2719
    t.datetime "created_at"
    t.datetime "updated_at"
2720 2721
    t.integer "note_id"
    t.string "commit_id"
2722
    t.integer "group_id"
Douglas Barbosa Alexandre's avatar
Douglas Barbosa Alexandre committed
2723 2724
  end

2725
  add_index "todos", ["author_id"], name: "index_todos_on_author_id", using: :btree
2726
  add_index "todos", ["commit_id"], name: "index_todos_on_commit_id", using: :btree
2727
  add_index "todos", ["group_id"], name: "index_todos_on_group_id", using: :btree
2728 2729 2730
  add_index "todos", ["note_id"], name: "index_todos_on_note_id", using: :btree
  add_index "todos", ["project_id"], name: "index_todos_on_project_id", using: :btree
  add_index "todos", ["target_type", "target_id"], name: "index_todos_on_target_type_and_target_id", using: :btree
2731 2732
  add_index "todos", ["user_id", "id"], name: "index_todos_on_user_id_and_id_done", where: "((state)::text = 'done'::text)", using: :btree
  add_index "todos", ["user_id", "id"], name: "index_todos_on_user_id_and_id_pending", where: "((state)::text = 'pending'::text)", using: :btree
2733
  add_index "todos", ["user_id"], name: "index_todos_on_user_id", using: :btree
Douglas Barbosa Alexandre's avatar
Douglas Barbosa Alexandre committed
2734

2735 2736 2737 2738
  create_table "trending_projects", force: :cascade do |t|
    t.integer "project_id", null: false
  end

2739
  add_index "trending_projects", ["project_id"], name: "index_trending_projects_on_project_id", unique: true, using: :btree
2740

2741
  create_table "u2f_registrations", force: :cascade do |t|
2742 2743 2744 2745 2746 2747 2748 2749
    t.text "certificate"
    t.string "key_handle"
    t.string "public_key"
    t.integer "counter"
    t.integer "user_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.string "name"
2750 2751 2752 2753 2754
  end

  add_index "u2f_registrations", ["key_handle"], name: "index_u2f_registrations_on_key_handle", using: :btree
  add_index "u2f_registrations", ["user_id"], name: "index_u2f_registrations_on_user_id", using: :btree

2755 2756
  create_table "uploads", force: :cascade do |t|
    t.integer "size", limit: 8, null: false
2757
    t.string "path", limit: 511, null: false
2758 2759 2760 2761 2762
    t.string "checksum", limit: 64
    t.integer "model_id"
    t.string "model_type"
    t.string "uploader", null: false
    t.datetime "created_at", null: false
Micaël Bergeron's avatar
Micaël Bergeron committed
2763
    t.integer "store"
Micaël Bergeron's avatar
Micaël Bergeron committed
2764 2765
    t.string "mount_point"
    t.string "secret"
2766 2767 2768 2769
  end

  add_index "uploads", ["checksum"], name: "index_uploads_on_checksum", using: :btree
  add_index "uploads", ["model_id", "model_type"], name: "index_uploads_on_model_id_and_model_type", using: :btree
Micaël Bergeron's avatar
Micaël Bergeron committed
2770
  add_index "uploads", ["uploader", "path"], name: "index_uploads_on_uploader_and_path", using: :btree
2771

2772 2773 2774 2775 2776 2777
  create_table "usage_counters", force: :cascade do |t|
    t.integer "web_ide_commits"
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
  end

2778
  create_table "user_agent_details", force: :cascade do |t|
2779 2780 2781 2782 2783 2784 2785
    t.string "user_agent", null: false
    t.string "ip_address", null: false
    t.integer "subject_id", null: false
    t.string "subject_type", null: false
    t.boolean "submitted", default: false, null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
2786 2787
  end

2788 2789
  add_index "user_agent_details", ["subject_id", "subject_type"], name: "index_user_agent_details_on_subject_id_and_subject_type", using: :btree

2790
  create_table "user_callouts", force: :cascade do |t|
2791
    t.integer "feature_name", null: false
2792 2793 2794 2795 2796 2797
    t.integer "user_id", null: false
  end

  add_index "user_callouts", ["user_id", "feature_name"], name: "index_user_callouts_on_user_id_and_feature_name", unique: true, using: :btree
  add_index "user_callouts", ["user_id"], name: "index_user_callouts_on_user_id", using: :btree

2798
  create_table "user_custom_attributes", force: :cascade do |t|
2799 2800
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
2801 2802 2803 2804 2805 2806 2807 2808
    t.integer "user_id", null: false
    t.string "key", null: false
    t.string "value", null: false
  end

  add_index "user_custom_attributes", ["key", "value"], name: "index_user_custom_attributes_on_key_and_value", using: :btree
  add_index "user_custom_attributes", ["user_id", "key"], name: "index_user_custom_attributes_on_user_id_and_key", unique: true, using: :btree

2809 2810 2811 2812 2813 2814
  create_table "user_interacted_projects", id: false, force: :cascade do |t|
    t.integer "user_id", null: false
    t.integer "project_id", null: false
  end

  add_index "user_interacted_projects", ["project_id", "user_id"], name: "index_user_interacted_projects_on_project_id_and_user_id", unique: true, using: :btree
2815
  add_index "user_interacted_projects", ["user_id"], name: "index_user_interacted_projects_on_user_id", using: :btree
2816

2817 2818 2819 2820 2821 2822 2823
  create_table "user_statuses", primary_key: "user_id", force: :cascade do |t|
    t.integer "cached_markdown_version"
    t.string "emoji", default: "speech_balloon", null: false
    t.string "message", limit: 100
    t.string "message_html"
  end

2824 2825 2826 2827 2828 2829 2830 2831 2832 2833
  create_table "user_synced_attributes_metadata", force: :cascade do |t|
    t.boolean "name_synced", default: false
    t.boolean "email_synced", default: false
    t.boolean "location_synced", default: false
    t.integer "user_id", null: false
    t.string "provider"
  end

  add_index "user_synced_attributes_metadata", ["user_id"], name: "index_user_synced_attributes_metadata_on_user_id", unique: true, using: :btree

Valery Sizov's avatar
Valery Sizov committed
2834
  create_table "users", force: :cascade do |t|
2835 2836 2837
    t.string "email", default: "", null: false
    t.string "encrypted_password", default: "", null: false
    t.string "reset_password_token"
Andrew8xx8's avatar
Andrew8xx8 committed
2838 2839
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
2840
    t.integer "sign_in_count", default: 0
Andrew8xx8's avatar
Andrew8xx8 committed
2841 2842
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
2843 2844
    t.string "current_sign_in_ip"
    t.string "last_sign_in_ip"
2845 2846
    t.datetime "created_at"
    t.datetime "updated_at"
2847 2848
    t.string "name"
    t.boolean "admin", default: false, null: false
2849
    t.integer "projects_limit", null: false
2850 2851 2852 2853 2854
    t.string "skype", default: "", null: false
    t.string "linkedin", default: "", null: false
    t.string "twitter", default: "", null: false
    t.string "bio"
    t.integer "failed_attempts", default: 0
Andrew8xx8's avatar
Andrew8xx8 committed
2855
    t.datetime "locked_at"
2856 2857 2858 2859 2860
    t.string "username"
    t.boolean "can_create_group", default: true, null: false
    t.boolean "can_create_team", default: true, null: false
    t.string "state"
    t.integer "color_scheme_id", default: 1, null: false
2861
    t.datetime "password_expires_at"
2862
    t.integer "created_by_id"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
2863
    t.datetime "last_credential_check_at"
2864 2865
    t.string "avatar"
    t.string "confirmation_token"
2866 2867
    t.datetime "confirmed_at"
    t.datetime "confirmation_sent_at"
2868 2869 2870
    t.string "unconfirmed_email"
    t.boolean "hide_no_ssh_key", default: false
    t.string "website_url", default: "", null: false
Kamil Trzcinski's avatar
Kamil Trzcinski committed
2871
    t.datetime "admin_email_unsubscribed_at"
2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888
    t.string "notification_email"
    t.boolean "hide_no_password", default: false
    t.boolean "password_automatically_set", default: false
    t.string "location"
    t.string "encrypted_otp_secret"
    t.string "encrypted_otp_secret_iv"
    t.string "encrypted_otp_secret_salt"
    t.boolean "otp_required_for_login", default: false, null: false
    t.text "otp_backup_codes"
    t.string "public_email", default: "", null: false
    t.integer "dashboard", default: 0
    t.integer "project_view", default: 0
    t.integer "consumed_timestep"
    t.integer "layout", default: 0
    t.boolean "hide_project_limit", default: false
    t.text "note"
    t.string "unlock_token"
2889
    t.datetime "otp_grace_period_started_at"
2890
    t.boolean "external", default: false
Nick Thomas's avatar
Nick Thomas committed
2891
    t.string "incoming_email_token"
2892
    t.string "organization"
2893
    t.boolean "auditor", default: false, null: false
2894 2895
    t.boolean "require_two_factor_authentication_from_group", default: false, null: false
    t.integer "two_factor_grace_period", default: 48, null: false
2896
    t.boolean "ghost"
2897
    t.date "last_activity_on"
2898
    t.boolean "notified_of_own_activity"
2899
    t.boolean "support_bot"
2900
    t.string "preferred_language"
2901 2902
    t.boolean "email_opted_in"
    t.string "email_opted_in_ip"
2903
    t.integer "email_opted_in_source_id"
2904
    t.datetime "email_opted_in_at"
2905
    t.integer "theme_id", limit: 2
2906
    t.integer "accepted_term_id"
Micaël Bergeron's avatar
Micaël Bergeron committed
2907
    t.string "feed_token"
2908
    t.boolean "private_profile"
Mark Chao's avatar
Mark Chao committed
2909
    t.integer "roadmap_layout", limit: 2
2910
    t.boolean "include_private_contributions"
2911
    t.string "commit_email"
Andrew8xx8's avatar
Andrew8xx8 committed
2912 2913
  end

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
2914
  add_index "users", ["admin"], name: "index_users_on_admin", using: :btree
Kamil Trzcinski's avatar
Kamil Trzcinski committed
2915
  add_index "users", ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true, using: :btree
2916
  add_index "users", ["created_at"], name: "index_users_on_created_at", using: :btree
Kamil Trzcinski's avatar
Kamil Trzcinski committed
2917
  add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree
2918
  add_index "users", ["email"], name: "index_users_on_email_trigram", using: :gin, opclasses: {"email"=>"gin_trgm_ops"}
Micaël Bergeron's avatar
Micaël Bergeron committed
2919
  add_index "users", ["feed_token"], name: "index_users_on_feed_token", using: :btree
2920
  add_index "users", ["ghost"], name: "index_users_on_ghost", using: :btree
2921
  add_index "users", ["incoming_email_token"], name: "index_users_on_incoming_email_token", using: :btree
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
2922
  add_index "users", ["name"], name: "index_users_on_name", using: :btree
2923
  add_index "users", ["name"], name: "index_users_on_name_trigram", using: :gin, opclasses: {"name"=>"gin_trgm_ops"}
Kamil Trzcinski's avatar
Kamil Trzcinski committed
2924
  add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
Stan Hu's avatar
Stan Hu committed
2925
  add_index "users", ["state"], name: "index_users_on_state", using: :btree
Micaël Bergeron's avatar
Micaël Bergeron committed
2926
  add_index "users", ["state"], name: "index_users_on_state_and_internal_attrs", where: "((ghost <> true) AND (support_bot <> true))", using: :btree
2927
  add_index "users", ["support_bot"], name: "index_users_on_support_bot", using: :btree
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
2928
  add_index "users", ["username"], name: "index_users_on_username", using: :btree
2929
  add_index "users", ["username"], name: "index_users_on_username_trigram", using: :gin, opclasses: {"username"=>"gin_trgm_ops"}
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
2930

Valery Sizov's avatar
Valery Sizov committed
2931
  create_table "users_star_projects", force: :cascade do |t|
2932 2933
    t.integer "project_id", null: false
    t.integer "user_id", null: false
Ciro Santilli's avatar
Ciro Santilli committed
2934 2935 2936 2937 2938 2939 2940
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  add_index "users_star_projects", ["project_id"], name: "index_users_star_projects_on_project_id", using: :btree
  add_index "users_star_projects", ["user_id", "project_id"], name: "index_users_star_projects_on_user_id_and_project_id", unique: true, using: :btree

2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957
  create_table "vulnerability_feedback", force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "feedback_type", limit: 2, null: false
    t.integer "category", limit: 2, null: false
    t.integer "project_id", null: false
    t.integer "author_id", null: false
    t.integer "pipeline_id"
    t.integer "issue_id"
    t.string "project_fingerprint", limit: 40, null: false
  end

  add_index "vulnerability_feedback", ["author_id"], name: "index_vulnerability_feedback_on_author_id", using: :btree
  add_index "vulnerability_feedback", ["issue_id"], name: "index_vulnerability_feedback_on_issue_id", using: :btree
  add_index "vulnerability_feedback", ["pipeline_id"], name: "index_vulnerability_feedback_on_pipeline_id", using: :btree
  add_index "vulnerability_feedback", ["project_id", "category", "feedback_type", "project_fingerprint"], name: "vulnerability_feedback_unique_idx", unique: true, using: :btree

2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014
  create_table "vulnerability_identifiers", id: :bigserial, force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "project_id", null: false
    t.binary "fingerprint", null: false
    t.string "external_type", null: false
    t.string "external_id", null: false
    t.string "name", null: false
    t.text "url"
  end

  add_index "vulnerability_identifiers", ["project_id", "fingerprint"], name: "index_vulnerability_identifiers_on_project_id_and_fingerprint", unique: true, using: :btree

  create_table "vulnerability_occurrence_identifiers", id: :bigserial, force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "occurrence_id", limit: 8, null: false
    t.integer "identifier_id", limit: 8, null: false
    t.boolean "primary", default: false, null: false
  end

  add_index "vulnerability_occurrence_identifiers", ["identifier_id"], name: "index_vulnerability_occurrence_identifiers_on_identifier_id", using: :btree
  add_index "vulnerability_occurrence_identifiers", ["occurrence_id", "identifier_id"], name: "index_vulnerability_occurrence_identifiers_on_unique_keys", unique: true, using: :btree

  create_table "vulnerability_occurrences", id: :bigserial, force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "severity", limit: 2, null: false
    t.integer "confidence", limit: 2, null: false
    t.integer "report_type", limit: 2, null: false
    t.integer "pipeline_id", null: false
    t.integer "project_id", null: false
    t.integer "scanner_id", limit: 8, null: false
    t.binary "first_seen_in_commit_sha", null: false
    t.binary "project_fingerprint", null: false
    t.binary "location_fingerprint", null: false
    t.binary "primary_identifier_fingerprint", null: false
    t.string "ref", null: false
    t.string "name", null: false
    t.string "metadata_version", null: false
    t.text "raw_metadata", null: false
  end

  add_index "vulnerability_occurrences", ["pipeline_id"], name: "index_vulnerability_occurrences_on_pipeline_id", using: :btree
  add_index "vulnerability_occurrences", ["project_id", "ref", "scanner_id", "primary_identifier_fingerprint", "location_fingerprint"], name: "index_vulnerability_occurrences_on_unique_keys", unique: true, using: :btree
  add_index "vulnerability_occurrences", ["scanner_id"], name: "index_vulnerability_occurrences_on_scanner_id", using: :btree

  create_table "vulnerability_scanners", id: :bigserial, force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "project_id", null: false
    t.string "external_id", null: false
    t.string "name", null: false
  end

  add_index "vulnerability_scanners", ["project_id", "external_id"], name: "index_vulnerability_scanners_on_project_id_and_external_id", unique: true, using: :btree

3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029
  create_table "web_hook_logs", force: :cascade do |t|
    t.integer "web_hook_id", null: false
    t.string "trigger"
    t.string "url"
    t.text "request_headers"
    t.text "request_data"
    t.text "response_headers"
    t.text "response_body"
    t.string "response_status"
    t.float "execution_duration"
    t.string "internal_error_message"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

3030
  add_index "web_hook_logs", ["created_at", "web_hook_id"], name: "index_web_hook_logs_on_created_at_and_web_hook_id", using: :btree
3031 3032
  add_index "web_hook_logs", ["web_hook_id"], name: "index_web_hook_logs_on_web_hook_id", using: :btree

Valery Sizov's avatar
Valery Sizov committed
3033
  create_table "web_hooks", force: :cascade do |t|
3034 3035
    t.string "url", limit: 2000
    t.integer "project_id"
3036 3037
    t.datetime "created_at"
    t.datetime "updated_at"
3038 3039 3040 3041 3042 3043 3044 3045 3046
    t.string "type", default: "ProjectHook"
    t.integer "service_id"
    t.boolean "push_events", default: true, null: false
    t.boolean "issues_events", default: false, null: false
    t.boolean "merge_requests_events", default: false, null: false
    t.boolean "tag_push_events", default: false
    t.integer "group_id"
    t.boolean "note_events", default: false, null: false
    t.boolean "enable_ssl_verification", default: true
3047
    t.boolean "wiki_page_events", default: false, null: false
3048
    t.string "token"
3049 3050
    t.boolean "pipeline_events", default: false, null: false
    t.boolean "confidential_issues_events", default: false, null: false
3051
    t.boolean "repository_update_events", default: false, null: false
Luke "Jared" Bennett's avatar
Luke "Jared" Bennett committed
3052
    t.boolean "job_events", default: false, null: false
3053
    t.boolean "confidential_note_events"
3054
    t.text "push_events_branch_filter"
3055 3056 3057 3058
    t.string "encrypted_token"
    t.string "encrypted_token_iv"
    t.string "encrypted_url"
    t.string "encrypted_url_iv"
Andrew8xx8's avatar
Andrew8xx8 committed
3059 3060
  end

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
3061
  add_index "web_hooks", ["project_id"], name: "index_web_hooks_on_project_id", using: :btree
3062
  add_index "web_hooks", ["type"], name: "index_web_hooks_on_type", using: :btree
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
3063

3064
  add_foreign_key "application_settings", "namespaces", column: "custom_project_templates_group_id", on_delete: :nullify
3065
  add_foreign_key "application_settings", "projects", column: "file_template_project_id", name: "fk_ec757bd087", on_delete: :nullify
3066
  add_foreign_key "application_settings", "users", column: "usage_stats_set_by_user_id", name: "fk_964370041d", on_delete: :nullify
3067
  add_foreign_key "approvals", "merge_requests", name: "fk_310d714958", on_delete: :cascade
Valery Sizov's avatar
Valery Sizov committed
3068
  add_foreign_key "approver_groups", "namespaces", column: "group_id", on_delete: :cascade
3069 3070
  add_foreign_key "badges", "namespaces", column: "group_id", on_delete: :cascade
  add_foreign_key "badges", "projects", on_delete: :cascade
3071 3072
  add_foreign_key "board_assignees", "boards", on_delete: :cascade
  add_foreign_key "board_assignees", "users", column: "assignee_id", on_delete: :cascade
3073 3074
  add_foreign_key "board_labels", "boards", on_delete: :cascade
  add_foreign_key "board_labels", "labels", on_delete: :cascade
Felipe Artur's avatar
Felipe Artur committed
3075
  add_foreign_key "boards", "namespaces", column: "group_id", name: "fk_1e9a074a35", on_delete: :cascade
3076
  add_foreign_key "boards", "projects", name: "fk_f15266b5f9", on_delete: :cascade
3077
  add_foreign_key "chat_teams", "namespaces", on_delete: :cascade
3078
  add_foreign_key "ci_build_trace_chunks", "ci_builds", column: "build_id", on_delete: :cascade
3079 3080 3081 3082
  add_foreign_key "ci_build_trace_section_names", "projects", on_delete: :cascade
  add_foreign_key "ci_build_trace_sections", "ci_build_trace_section_names", column: "section_name_id", name: "fk_264e112c66", on_delete: :cascade
  add_foreign_key "ci_build_trace_sections", "ci_builds", column: "build_id", name: "fk_4ebe41f502", on_delete: :cascade
  add_foreign_key "ci_build_trace_sections", "projects", on_delete: :cascade
3083
  add_foreign_key "ci_builds", "ci_pipelines", column: "auto_canceled_by_id", name: "fk_a2141b1522", on_delete: :nullify
3084
  add_foreign_key "ci_builds", "ci_pipelines", column: "commit_id", name: "fk_d3130c9a7f", on_delete: :cascade
3085
  add_foreign_key "ci_builds", "ci_stages", column: "stage_id", name: "fk_3a9eaa254d", on_delete: :cascade
3086
  add_foreign_key "ci_builds", "projects", name: "fk_befce0568a", on_delete: :cascade
3087 3088
  add_foreign_key "ci_builds_metadata", "ci_builds", column: "build_id", on_delete: :cascade
  add_foreign_key "ci_builds_metadata", "projects", on_delete: :cascade
3089
  add_foreign_key "ci_builds_runner_session", "ci_builds", column: "build_id", on_delete: :cascade
Shinya Maeda's avatar
Shinya Maeda committed
3090
  add_foreign_key "ci_group_variables", "namespaces", column: "group_id", name: "fk_33ae4d58d8", on_delete: :cascade
3091 3092
  add_foreign_key "ci_job_artifacts", "ci_builds", column: "job_id", on_delete: :cascade
  add_foreign_key "ci_job_artifacts", "projects", on_delete: :cascade
3093 3094
  add_foreign_key "ci_pipeline_chat_data", "chat_names", on_delete: :cascade
  add_foreign_key "ci_pipeline_chat_data", "ci_pipelines", column: "pipeline_id", on_delete: :cascade
Shinya Maeda's avatar
fix  
Shinya Maeda committed
3095
  add_foreign_key "ci_pipeline_schedule_variables", "ci_pipeline_schedules", column: "pipeline_schedule_id", name: "fk_41c35fda51", on_delete: :cascade
3096
  add_foreign_key "ci_pipeline_schedules", "projects", name: "fk_8ead60fcc4", on_delete: :cascade
3097
  add_foreign_key "ci_pipeline_schedules", "users", column: "owner_id", name: "fk_9ea99f58d2", on_delete: :nullify
3098
  add_foreign_key "ci_pipeline_variables", "ci_pipelines", column: "pipeline_id", name: "fk_f29c5f4380", on_delete: :cascade
Kamil Trzcinski's avatar
Kamil Trzcinski committed
3099 3100
  add_foreign_key "ci_pipelines", "ci_pipeline_schedules", column: "pipeline_schedule_id", name: "fk_3d34ab2e06", on_delete: :nullify
  add_foreign_key "ci_pipelines", "ci_pipelines", column: "auto_canceled_by_id", name: "fk_262d4c2d19", on_delete: :nullify
3101
  add_foreign_key "ci_pipelines", "projects", name: "fk_86635dbd80", on_delete: :cascade
3102
  add_foreign_key "ci_runner_namespaces", "ci_runners", column: "runner_id", on_delete: :cascade
3103
  add_foreign_key "ci_runner_namespaces", "namespaces", on_delete: :cascade
3104
  add_foreign_key "ci_runner_projects", "projects", name: "fk_4478a6f1e4", on_delete: :cascade
3105 3106 3107 3108 3109
  add_foreign_key "ci_sources_pipelines", "ci_builds", column: "source_job_id", name: "fk_be5624bf37", on_delete: :cascade
  add_foreign_key "ci_sources_pipelines", "ci_pipelines", column: "pipeline_id", name: "fk_e1bad85861", on_delete: :cascade
  add_foreign_key "ci_sources_pipelines", "ci_pipelines", column: "source_pipeline_id", name: "fk_d4e29af7d7", on_delete: :cascade
  add_foreign_key "ci_sources_pipelines", "projects", column: "source_project_id", name: "fk_acd9737679", on_delete: :cascade
  add_foreign_key "ci_sources_pipelines", "projects", name: "fk_1e53c97c0a", on_delete: :cascade
3110
  add_foreign_key "ci_stages", "ci_pipelines", column: "pipeline_id", name: "fk_fb57e6cc56", on_delete: :cascade
3111
  add_foreign_key "ci_stages", "projects", name: "fk_2360681d1d", on_delete: :cascade
3112
  add_foreign_key "ci_trigger_requests", "ci_triggers", column: "trigger_id", name: "fk_b8ec8b7245", on_delete: :cascade
3113
  add_foreign_key "ci_triggers", "projects", name: "fk_e3e63f966e", on_delete: :cascade
3114
  add_foreign_key "ci_triggers", "users", column: "owner_id", name: "fk_e8e10d1964", on_delete: :cascade
3115
  add_foreign_key "ci_variables", "projects", name: "fk_ada5eb64b3", on_delete: :cascade
Shinya Maeda's avatar
Shinya Maeda committed
3116 3117 3118 3119 3120
  add_foreign_key "cluster_platforms_kubernetes", "clusters", on_delete: :cascade
  add_foreign_key "cluster_projects", "clusters", on_delete: :cascade
  add_foreign_key "cluster_projects", "projects", on_delete: :cascade
  add_foreign_key "cluster_providers_gcp", "clusters", on_delete: :cascade
  add_foreign_key "clusters", "users", on_delete: :nullify
3121
  add_foreign_key "clusters_applications_helm", "clusters", on_delete: :cascade
3122
  add_foreign_key "clusters_applications_ingress", "clusters", on_delete: :cascade
Micaël Bergeron's avatar
Micaël Bergeron committed
3123 3124
  add_foreign_key "clusters_applications_jupyter", "clusters", on_delete: :cascade
  add_foreign_key "clusters_applications_jupyter", "oauth_applications", on_delete: :nullify
3125
  add_foreign_key "clusters_applications_prometheus", "clusters", on_delete: :cascade
3126 3127
  add_foreign_key "clusters_applications_runners", "ci_runners", column: "runner_id", name: "fk_02de2ded36", on_delete: :nullify
  add_foreign_key "clusters_applications_runners", "clusters", on_delete: :cascade
Valery Sizov's avatar
Valery Sizov committed
3128
  add_foreign_key "container_repositories", "projects"
3129 3130 3131
  add_foreign_key "deploy_keys_projects", "projects", name: "fk_58a901ca7e", on_delete: :cascade
  add_foreign_key "deployments", "projects", name: "fk_b9a3851b82", on_delete: :cascade
  add_foreign_key "environments", "projects", name: "fk_d1c8c1da6a", on_delete: :cascade
3132 3133
  add_foreign_key "epic_issues", "epics", on_delete: :cascade
  add_foreign_key "epic_issues", "issues", on_delete: :cascade
Clement Ho's avatar
Clement Ho committed
3134 3135 3136 3137 3138
  add_foreign_key "epic_metrics", "epics", on_delete: :cascade
  add_foreign_key "epics", "milestones", on_delete: :nullify
  add_foreign_key "epics", "namespaces", column: "group_id", name: "fk_f081aa4489", on_delete: :cascade
  add_foreign_key "epics", "users", column: "assignee_id", name: "fk_dccd3f98fc", on_delete: :nullify
  add_foreign_key "epics", "users", column: "author_id", name: "fk_3654b61b03", on_delete: :cascade
3139
  add_foreign_key "epics", "users", column: "closed_by_id", name: "fk_aa5798e761", on_delete: :nullify
3140 3141
  add_foreign_key "events", "projects", on_delete: :cascade
  add_foreign_key "events", "users", column: "author_id", name: "fk_edfd187b6f", on_delete: :cascade
3142 3143 3144
  add_foreign_key "fork_network_members", "fork_networks", on_delete: :cascade
  add_foreign_key "fork_network_members", "projects", column: "forked_from_project_id", name: "fk_b01280dae4", on_delete: :nullify
  add_foreign_key "fork_network_members", "projects", on_delete: :cascade
3145
  add_foreign_key "fork_networks", "projects", column: "root_project_id", name: "fk_e7b436b2b5", on_delete: :nullify
3146
  add_foreign_key "forked_project_links", "projects", column: "forked_to_project_id", name: "fk_434510edb0", on_delete: :cascade
3147 3148 3149
  add_foreign_key "gcp_clusters", "projects", on_delete: :cascade
  add_foreign_key "gcp_clusters", "services", on_delete: :nullify
  add_foreign_key "gcp_clusters", "users", on_delete: :nullify
3150
  add_foreign_key "geo_event_log", "geo_hashed_storage_migrated_events", column: "hashed_storage_migrated_event_id", name: "fk_27548c6db3", on_delete: :cascade
3151
  add_foreign_key "geo_event_log", "geo_job_artifact_deleted_events", column: "job_artifact_deleted_event_id", name: "fk_176d3fbb5d", on_delete: :cascade
3152
  add_foreign_key "geo_event_log", "geo_lfs_object_deleted_events", column: "lfs_object_deleted_event_id", name: "fk_d5af95fcd9", on_delete: :cascade
3153
  add_foreign_key "geo_event_log", "geo_repositories_changed_events", column: "repositories_changed_event_id", name: "fk_4a99ebfd60", on_delete: :cascade
3154
  add_foreign_key "geo_event_log", "geo_repository_created_events", column: "repository_created_event_id", name: "fk_9b9afb1916", on_delete: :cascade
Stan Hu's avatar
Stan Hu committed
3155
  add_foreign_key "geo_event_log", "geo_repository_deleted_events", column: "repository_deleted_event_id", name: "fk_c4b1c1f66e", on_delete: :cascade
3156
  add_foreign_key "geo_event_log", "geo_repository_renamed_events", column: "repository_renamed_event_id", name: "fk_86c84214ec", on_delete: :cascade
3157
  add_foreign_key "geo_event_log", "geo_repository_updated_events", column: "repository_updated_event_id", on_delete: :cascade
3158
  add_foreign_key "geo_event_log", "geo_reset_checksum_events", column: "reset_checksum_event_id", name: "fk_cff7185ad2", on_delete: :cascade
3159
  add_foreign_key "geo_event_log", "geo_upload_deleted_events", column: "upload_deleted_event_id", name: "fk_c1f241c70d", on_delete: :cascade
3160
  add_foreign_key "geo_hashed_storage_attachments_events", "projects", on_delete: :cascade
3161
  add_foreign_key "geo_hashed_storage_migrated_events", "projects", on_delete: :cascade
3162
  add_foreign_key "geo_node_namespace_links", "geo_nodes", on_delete: :cascade
3163
  add_foreign_key "geo_node_namespace_links", "namespaces", on_delete: :cascade
3164
  add_foreign_key "geo_node_statuses", "geo_nodes", on_delete: :cascade
3165
  add_foreign_key "geo_repositories_changed_events", "geo_nodes", on_delete: :cascade
3166
  add_foreign_key "geo_repository_created_events", "projects", on_delete: :cascade
3167
  add_foreign_key "geo_repository_renamed_events", "projects", on_delete: :cascade
3168
  add_foreign_key "geo_repository_updated_events", "projects", on_delete: :cascade
3169
  add_foreign_key "geo_reset_checksum_events", "projects", on_delete: :cascade
3170
  add_foreign_key "gpg_key_subkeys", "gpg_keys", on_delete: :cascade
3171
  add_foreign_key "gpg_keys", "users", on_delete: :cascade
3172
  add_foreign_key "gpg_signatures", "gpg_key_subkeys", on_delete: :nullify
3173 3174
  add_foreign_key "gpg_signatures", "gpg_keys", on_delete: :nullify
  add_foreign_key "gpg_signatures", "projects", on_delete: :cascade
3175
  add_foreign_key "group_custom_attributes", "namespaces", column: "group_id", on_delete: :cascade
3176
  add_foreign_key "identities", "saml_providers", name: "fk_aade90f0fc", on_delete: :cascade
3177
  add_foreign_key "import_export_uploads", "projects", on_delete: :cascade
3178
  add_foreign_key "index_statuses", "projects", name: "fk_74b2492545", on_delete: :cascade
3179
  add_foreign_key "internal_ids", "namespaces", name: "fk_162941d509", on_delete: :cascade
3180
  add_foreign_key "internal_ids", "projects", on_delete: :cascade
3181 3182
  add_foreign_key "issue_assignees", "issues", name: "fk_b7d881734a", on_delete: :cascade
  add_foreign_key "issue_assignees", "users", name: "fk_5e0c8d9154", on_delete: :cascade
3183 3184
  add_foreign_key "issue_links", "issues", column: "source_id", name: "fk_c900194ff2", on_delete: :cascade
  add_foreign_key "issue_links", "issues", column: "target_id", name: "fk_e71bb44f1f", on_delete: :cascade
3185
  add_foreign_key "issue_metrics", "issues", on_delete: :cascade
3186 3187
  add_foreign_key "issues", "issues", column: "moved_to_id", name: "fk_a194299be1", on_delete: :nullify
  add_foreign_key "issues", "milestones", name: "fk_96b1dd429c", on_delete: :nullify
3188
  add_foreign_key "issues", "projects", name: "fk_899c8f3231", on_delete: :cascade
3189
  add_foreign_key "issues", "users", column: "author_id", name: "fk_05f1e72feb", on_delete: :nullify
haseeb's avatar
haseeb committed
3190
  add_foreign_key "issues", "users", column: "closed_by_id", name: "fk_c63cbf6c25", on_delete: :nullify
3191
  add_foreign_key "issues", "users", column: "updated_by_id", name: "fk_ffed080f01", on_delete: :nullify
Stan Hu's avatar
Stan Hu committed
3192
  add_foreign_key "label_links", "labels", name: "fk_d97dd08678", on_delete: :cascade
3193 3194
  add_foreign_key "label_priorities", "labels", on_delete: :cascade
  add_foreign_key "label_priorities", "projects", on_delete: :cascade
3195
  add_foreign_key "labels", "namespaces", column: "group_id", on_delete: :cascade
3196
  add_foreign_key "labels", "projects", name: "fk_7de4989a69", on_delete: :cascade
3197 3198
  add_foreign_key "lfs_file_locks", "projects", on_delete: :cascade
  add_foreign_key "lfs_file_locks", "users", on_delete: :cascade
3199 3200
  add_foreign_key "lists", "boards", name: "fk_0d3f677137", on_delete: :cascade
  add_foreign_key "lists", "labels", name: "fk_7a5553d60f", on_delete: :cascade
3201
  add_foreign_key "lists", "milestones", on_delete: :cascade
3202
  add_foreign_key "lists", "users", name: "fk_d6cf4279f7", on_delete: :cascade
3203
  add_foreign_key "members", "users", name: "fk_2e88fb7ce9", on_delete: :cascade
3204
  add_foreign_key "merge_request_diff_commits", "merge_request_diffs", on_delete: :cascade
3205
  add_foreign_key "merge_request_diff_files", "merge_request_diffs", on_delete: :cascade
3206
  add_foreign_key "merge_request_diffs", "merge_requests", name: "fk_8483f3258f", on_delete: :cascade
3207
  add_foreign_key "merge_request_metrics", "ci_pipelines", column: "pipeline_id", on_delete: :cascade
3208
  add_foreign_key "merge_request_metrics", "merge_requests", on_delete: :cascade
3209 3210
  add_foreign_key "merge_request_metrics", "users", column: "latest_closed_by_id", name: "fk_ae440388cc", on_delete: :nullify
  add_foreign_key "merge_request_metrics", "users", column: "merged_by_id", name: "fk_7f28d925f3", on_delete: :nullify
3211
  add_foreign_key "merge_requests", "ci_pipelines", column: "head_pipeline_id", name: "fk_fd82eae0b9", on_delete: :nullify
3212
  add_foreign_key "merge_requests", "merge_request_diffs", column: "latest_merge_request_diff_id", name: "fk_06067f5644", on_delete: :nullify
3213 3214
  add_foreign_key "merge_requests", "milestones", name: "fk_6a5165a692", on_delete: :nullify
  add_foreign_key "merge_requests", "projects", column: "source_project_id", name: "fk_3308fe130c", on_delete: :nullify
3215
  add_foreign_key "merge_requests", "projects", column: "target_project_id", name: "fk_a6963e8447", on_delete: :cascade
3216 3217 3218 3219
  add_foreign_key "merge_requests", "users", column: "assignee_id", name: "fk_6149611a04", on_delete: :nullify
  add_foreign_key "merge_requests", "users", column: "author_id", name: "fk_e719a85f8a", on_delete: :nullify
  add_foreign_key "merge_requests", "users", column: "merge_user_id", name: "fk_ad525e1f87", on_delete: :nullify
  add_foreign_key "merge_requests", "users", column: "updated_by_id", name: "fk_641731faff", on_delete: :nullify
3220 3221
  add_foreign_key "merge_requests_closing_issues", "issues", on_delete: :cascade
  add_foreign_key "merge_requests_closing_issues", "merge_requests", on_delete: :cascade
Felipe Artur's avatar
Felipe Artur committed
3222
  add_foreign_key "milestones", "namespaces", column: "group_id", name: "fk_95650a40d4", on_delete: :cascade
3223
  add_foreign_key "milestones", "projects", name: "fk_9bd0a0c791", on_delete: :cascade
3224
  add_foreign_key "namespace_statistics", "namespaces", on_delete: :cascade
3225
  add_foreign_key "namespaces", "plans", name: "fk_fdd12e5b80", on_delete: :nullify
3226
  add_foreign_key "note_diff_files", "notes", column: "diff_note_id", on_delete: :cascade
3227
  add_foreign_key "notes", "projects", name: "fk_99e097b079", on_delete: :cascade
3228
  add_foreign_key "notification_settings", "users", name: "fk_0c95e91db7", on_delete: :cascade
Nick Thomas's avatar
Nick Thomas committed
3229
  add_foreign_key "oauth_openid_requests", "oauth_access_grants", column: "access_grant_id", name: "fk_oauth_openid_requests_oauth_access_grants_access_grant_id"
3230 3231
  add_foreign_key "packages_maven_metadata", "packages_packages", column: "package_id", name: "fk_be88aed360", on_delete: :cascade
  add_foreign_key "packages_package_files", "packages_packages", column: "package_id", name: "fk_86f0f182f8", on_delete: :cascade
3232
  add_foreign_key "packages_packages", "projects", on_delete: :cascade
3233
  add_foreign_key "pages_domains", "projects", name: "fk_ea2f6dfc6f", on_delete: :cascade
3234
  add_foreign_key "path_locks", "projects", name: "fk_5265c98f24", on_delete: :cascade
Valery Sizov's avatar
Valery Sizov committed
3235
  add_foreign_key "path_locks", "users"
3236
  add_foreign_key "personal_access_tokens", "users"
3237 3238
  add_foreign_key "project_authorizations", "projects", on_delete: :cascade
  add_foreign_key "project_authorizations", "users", on_delete: :cascade
3239
  add_foreign_key "project_auto_devops", "projects", on_delete: :cascade
3240
  add_foreign_key "project_ci_cd_settings", "projects", name: "fk_24c15d2f2e", on_delete: :cascade
3241
  add_foreign_key "project_custom_attributes", "projects", on_delete: :cascade
3242 3243
  add_foreign_key "project_deploy_tokens", "deploy_tokens", on_delete: :cascade
  add_foreign_key "project_deploy_tokens", "projects", on_delete: :cascade
3244 3245 3246
  add_foreign_key "project_features", "projects", name: "fk_18513d9b92", on_delete: :cascade
  add_foreign_key "project_group_links", "projects", name: "fk_daa8cee94c", on_delete: :cascade
  add_foreign_key "project_import_data", "projects", name: "fk_ffb9ee3a10", on_delete: :cascade
3247
  add_foreign_key "project_mirror_data", "projects", name: "fk_d1aad367d7", on_delete: :cascade
3248
  add_foreign_key "project_repository_states", "projects", on_delete: :cascade
3249
  add_foreign_key "project_statistics", "projects", on_delete: :cascade
3250 3251 3252
  add_foreign_key "prometheus_alerts", "environments", on_delete: :cascade
  add_foreign_key "prometheus_alerts", "projects", on_delete: :cascade
  add_foreign_key "prometheus_alerts", "prometheus_metrics", on_delete: :cascade
3253
  add_foreign_key "prometheus_metrics", "projects", on_delete: :cascade
3254
  add_foreign_key "protected_branch_merge_access_levels", "namespaces", column: "group_id", name: "fk_98f3d044fe", on_delete: :cascade
3255
  add_foreign_key "protected_branch_merge_access_levels", "protected_branches", name: "fk_8a3072ccb3", on_delete: :cascade
3256
  add_foreign_key "protected_branch_merge_access_levels", "users"
3257
  add_foreign_key "protected_branch_push_access_levels", "namespaces", column: "group_id", name: "fk_7111b68cdb", on_delete: :cascade
3258
  add_foreign_key "protected_branch_push_access_levels", "protected_branches", name: "fk_9ffc86a3d9", on_delete: :cascade
3259
  add_foreign_key "protected_branch_push_access_levels", "users"
3260 3261 3262
  add_foreign_key "protected_branch_unprotect_access_levels", "namespaces", column: "group_id", on_delete: :cascade
  add_foreign_key "protected_branch_unprotect_access_levels", "protected_branches", on_delete: :cascade
  add_foreign_key "protected_branch_unprotect_access_levels", "users", on_delete: :cascade
3263
  add_foreign_key "protected_branches", "projects", name: "fk_7a9c6d93e7", on_delete: :cascade
3264 3265 3266 3267
  add_foreign_key "protected_environment_deploy_access_levels", "namespaces", column: "group_id", on_delete: :cascade
  add_foreign_key "protected_environment_deploy_access_levels", "protected_environments", on_delete: :cascade
  add_foreign_key "protected_environment_deploy_access_levels", "users", on_delete: :cascade
  add_foreign_key "protected_environments", "projects", on_delete: :cascade
3268
  add_foreign_key "protected_tag_create_access_levels", "namespaces", column: "group_id", name: "fk_b4eb82fe3c", on_delete: :cascade
3269
  add_foreign_key "protected_tag_create_access_levels", "protected_tags", name: "fk_f7dfda8c51", on_delete: :cascade
3270
  add_foreign_key "protected_tag_create_access_levels", "users"
3271
  add_foreign_key "protected_tags", "projects", name: "fk_8e4af87648", on_delete: :cascade
3272
  add_foreign_key "push_event_payloads", "events", name: "fk_36c74129da", on_delete: :cascade
Rémy Coutable's avatar
Rémy Coutable committed
3273
  add_foreign_key "push_rules", "projects", name: "fk_83b29894de", on_delete: :cascade
3274
  add_foreign_key "releases", "projects", name: "fk_47fe2a0596", on_delete: :cascade
3275
  add_foreign_key "remote_mirrors", "projects", name: "fk_43a9aa4ca8", on_delete: :cascade
3276
  add_foreign_key "repository_languages", "projects", on_delete: :cascade
Jan Provaznik's avatar
Jan Provaznik committed
3277
  add_foreign_key "resource_label_events", "epics", on_delete: :cascade
3278 3279 3280 3281
  add_foreign_key "resource_label_events", "issues", on_delete: :cascade
  add_foreign_key "resource_label_events", "labels", on_delete: :nullify
  add_foreign_key "resource_label_events", "merge_requests", on_delete: :cascade
  add_foreign_key "resource_label_events", "users", on_delete: :nullify
3282
  add_foreign_key "saml_providers", "namespaces", column: "group_id", on_delete: :cascade
3283
  add_foreign_key "services", "projects", name: "fk_71cce407f9", on_delete: :cascade
Valery Sizov's avatar
Valery Sizov committed
3284
  add_foreign_key "slack_integrations", "services", on_delete: :cascade
3285
  add_foreign_key "snippets", "projects", name: "fk_be41fd4bb7", on_delete: :cascade
3286 3287
  add_foreign_key "software_license_policies", "projects", on_delete: :cascade
  add_foreign_key "software_license_policies", "software_licenses", on_delete: :cascade
3288
  add_foreign_key "subscriptions", "projects", on_delete: :cascade
3289
  add_foreign_key "system_note_metadata", "notes", name: "fk_d83a918cb1", on_delete: :cascade
3290 3291
  add_foreign_key "term_agreements", "application_setting_terms", column: "term_id"
  add_foreign_key "term_agreements", "users", on_delete: :cascade
3292 3293
  add_foreign_key "timelogs", "issues", name: "fk_timelogs_issues_issue_id", on_delete: :cascade
  add_foreign_key "timelogs", "merge_requests", name: "fk_timelogs_merge_requests_merge_request_id", on_delete: :cascade
3294
  add_foreign_key "todos", "namespaces", column: "group_id", on_delete: :cascade
3295
  add_foreign_key "todos", "notes", name: "fk_91d1f47b13", on_delete: :cascade
3296
  add_foreign_key "todos", "projects", name: "fk_45054f9c45", on_delete: :cascade
3297 3298
  add_foreign_key "todos", "users", column: "author_id", name: "fk_ccf0373936", on_delete: :cascade
  add_foreign_key "todos", "users", name: "fk_d94154aa95", on_delete: :cascade
3299
  add_foreign_key "trending_projects", "projects", on_delete: :cascade
3300
  add_foreign_key "u2f_registrations", "users"
3301
  add_foreign_key "user_callouts", "users", on_delete: :cascade
3302
  add_foreign_key "user_custom_attributes", "users", on_delete: :cascade
3303 3304
  add_foreign_key "user_interacted_projects", "projects", on_delete: :cascade
  add_foreign_key "user_interacted_projects", "users", on_delete: :cascade
3305
  add_foreign_key "user_statuses", "users", on_delete: :cascade
3306
  add_foreign_key "user_synced_attributes_metadata", "users", on_delete: :cascade
3307
  add_foreign_key "users", "application_setting_terms", column: "accepted_term_id", name: "fk_789cd90b35", on_delete: :cascade
3308
  add_foreign_key "users_star_projects", "projects", name: "fk_22cd27ddfc", on_delete: :cascade
3309 3310 3311 3312
  add_foreign_key "vulnerability_feedback", "ci_pipelines", column: "pipeline_id", on_delete: :nullify
  add_foreign_key "vulnerability_feedback", "issues", on_delete: :nullify
  add_foreign_key "vulnerability_feedback", "projects", on_delete: :cascade
  add_foreign_key "vulnerability_feedback", "users", column: "author_id", on_delete: :cascade
3313 3314 3315 3316 3317 3318 3319
  add_foreign_key "vulnerability_identifiers", "projects", on_delete: :cascade
  add_foreign_key "vulnerability_occurrence_identifiers", "vulnerability_identifiers", column: "identifier_id", on_delete: :cascade
  add_foreign_key "vulnerability_occurrence_identifiers", "vulnerability_occurrences", column: "occurrence_id", on_delete: :cascade
  add_foreign_key "vulnerability_occurrences", "ci_pipelines", column: "pipeline_id", on_delete: :cascade
  add_foreign_key "vulnerability_occurrences", "projects", on_delete: :cascade
  add_foreign_key "vulnerability_occurrences", "vulnerability_scanners", column: "scanner_id", on_delete: :cascade
  add_foreign_key "vulnerability_scanners", "projects", on_delete: :cascade
3320
  add_foreign_key "web_hook_logs", "web_hooks", on_delete: :cascade
3321
  add_foreign_key "web_hooks", "projects", name: "fk_0c8ca6d9d1", on_delete: :cascade
3322
end