schema.rb 253 KB
Newer Older
Andrew8xx8's avatar
Andrew8xx8 committed
1 2 3 4 5 6 7 8 9 10
# 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
11
# It's strongly recommended that you check this file into your version control system.
Andrew8xx8's avatar
Andrew8xx8 committed
12

13
ActiveRecord::Schema.define(version: 2020_01_08_233040) do
Felipe Artur's avatar
Felipe Artur committed
14

15
  # These are extensions that must be enabled in order to support this database
16
  enable_extension "pg_trgm"
Heinrich Lee Yu's avatar
Heinrich Lee Yu committed
17
  enable_extension "plpgsql"
18

Jasper Maes's avatar
Jasper Maes committed
19
  create_table "abuse_reports", id: :serial, force: :cascade do |t|
20 21 22
    t.integer "reporter_id"
    t.integer "user_id"
    t.text "message"
23 24
    t.datetime "created_at"
    t.datetime "updated_at"
25
    t.text "message_html"
26
    t.integer "cached_markdown_version"
27
    t.index ["user_id"], name: "index_abuse_reports_on_user_id"
28 29
  end

30 31 32 33 34 35 36 37 38
  create_table "alerts_service_data", force: :cascade do |t|
    t.integer "service_id", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.string "encrypted_token", limit: 255
    t.string "encrypted_token_iv", limit: 255
    t.index ["service_id"], name: "index_alerts_service_data_on_service_id"
  end

39 40 41 42 43 44 45 46
  create_table "allowed_email_domains", force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "group_id", null: false
    t.string "domain", limit: 255, null: false
    t.index ["group_id"], name: "index_allowed_email_domains_on_group_id"
  end

47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
  create_table "analytics_cycle_analytics_group_stages", force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "relative_position"
    t.integer "start_event_identifier", null: false
    t.integer "end_event_identifier", null: false
    t.bigint "group_id", null: false
    t.bigint "start_event_label_id"
    t.bigint "end_event_label_id"
    t.boolean "hidden", default: false, null: false
    t.boolean "custom", default: true, null: false
    t.string "name", limit: 255, null: false
    t.index ["end_event_label_id"], name: "index_analytics_ca_group_stages_on_end_event_label_id"
    t.index ["group_id", "name"], name: "index_analytics_ca_group_stages_on_group_id_and_name", unique: true
    t.index ["group_id"], name: "index_analytics_ca_group_stages_on_group_id"
    t.index ["relative_position"], name: "index_analytics_ca_group_stages_on_relative_position"
    t.index ["start_event_label_id"], name: "index_analytics_ca_group_stages_on_start_event_label_id"
  end

  create_table "analytics_cycle_analytics_project_stages", force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "relative_position"
    t.integer "start_event_identifier", null: false
    t.integer "end_event_identifier", null: false
    t.bigint "project_id", null: false
    t.bigint "start_event_label_id"
    t.bigint "end_event_label_id"
    t.boolean "hidden", default: false, null: false
    t.boolean "custom", default: true, null: false
    t.string "name", limit: 255, null: false
    t.index ["end_event_label_id"], name: "index_analytics_ca_project_stages_on_end_event_label_id"
    t.index ["project_id", "name"], name: "index_analytics_ca_project_stages_on_project_id_and_name", unique: true
    t.index ["project_id"], name: "index_analytics_ca_project_stages_on_project_id"
    t.index ["relative_position"], name: "index_analytics_ca_project_stages_on_relative_position"
    t.index ["start_event_label_id"], name: "index_analytics_ca_project_stages_on_start_event_label_id"
  end

85 86 87 88 89 90 91 92 93 94 95 96
  create_table "analytics_language_trend_repository_languages", id: false, force: :cascade do |t|
    t.integer "file_count", default: 0, null: false
    t.bigint "programming_language_id", null: false
    t.bigint "project_id", null: false
    t.integer "loc", default: 0, null: false
    t.integer "bytes", default: 0, null: false
    t.integer "percentage", limit: 2, default: 0, null: false
    t.date "snapshot_date", null: false
    t.index ["programming_language_id", "project_id", "snapshot_date"], name: "analytics_repository_languages_unique_index", unique: true
    t.index ["project_id"], name: "analytics_repository_languages_on_project_id"
  end

97
  create_table "analytics_repository_file_commits", force: :cascade do |t|
98
    t.bigint "analytics_repository_file_id", null: false
99
    t.bigint "project_id", null: false
100
    t.date "committed_date", null: false
101 102 103
    t.integer "commit_count", limit: 2, null: false
    t.index ["analytics_repository_file_id"], name: "index_analytics_repository_file_commits_file_id"
    t.index ["project_id", "committed_date", "analytics_repository_file_id"], name: "index_file_commits_on_committed_date_file_id_and_project_id", unique: true
104 105
  end

106 107 108 109 110 111 112 113 114
  create_table "analytics_repository_file_edits", force: :cascade do |t|
    t.bigint "project_id", null: false
    t.bigint "analytics_repository_file_id", null: false
    t.date "committed_date", null: false
    t.integer "num_edits", default: 0, null: false
    t.index ["analytics_repository_file_id", "committed_date", "project_id"], name: "index_file_edits_on_committed_date_file_id_and_project_id", unique: true
    t.index ["project_id"], name: "index_analytics_repository_file_edits_on_project_id"
  end

115 116 117 118 119 120
  create_table "analytics_repository_files", force: :cascade do |t|
    t.bigint "project_id", null: false
    t.string "file_path", limit: 4096, null: false
    t.index ["project_id", "file_path"], name: "index_analytics_repository_files_on_project_id_and_file_path", unique: true
  end

Jasper Maes's avatar
Jasper Maes committed
121
  create_table "appearances", id: :serial, force: :cascade do |t|
122 123
    t.string "title", null: false
    t.text "description", null: false
124 125
    t.string "logo"
    t.integer "updated_by"
126
    t.string "header_logo"
127 128
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
129
    t.text "description_html"
130
    t.integer "cached_markdown_version"
131 132
    t.text "new_project_guidelines"
    t.text "new_project_guidelines_html"
133 134 135 136
    t.text "header_message"
    t.text "header_message_html"
    t.text "footer_message"
    t.text "footer_message_html"
137 138
    t.text "message_background_color"
    t.text "message_font_color"
139
    t.string "favicon"
140
    t.boolean "email_header_and_footer_enabled", default: false, null: false
Valery Sizov's avatar
Valery Sizov committed
141 142
  end

Jasper Maes's avatar
Jasper Maes committed
143
  create_table "application_setting_terms", id: :serial, force: :cascade do |t|
144 145 146 147 148
    t.integer "cached_markdown_version"
    t.text "terms", null: false
    t.text "terms_html"
  end

Jasper Maes's avatar
Jasper Maes committed
149
  create_table "application_settings", id: :serial, force: :cascade do |t|
150 151 152 153
    t.integer "default_projects_limit"
    t.boolean "signup_enabled"
    t.boolean "gravatar_enabled"
    t.text "sign_in_text"
154 155
    t.datetime "created_at"
    t.datetime "updated_at"
156 157 158 159 160 161
    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
162 163
    t.integer "default_project_visibility", default: 0, null: false
    t.integer "default_snippet_visibility", default: 0, null: false
164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
    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.integer "metrics_port", default: 8089
    t.boolean "akismet_enabled", default: false
    t.integer "metrics_sample_interval", default: 15
    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
199
    t.string "repository_storages", default: "default"
200 201 202 203 204 205 206 207
    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.text "sign_in_text_html"
    t.text "help_page_text_html"
    t.text "shared_runners_text_html"
    t.text "after_sign_up_text_html"
208
    t.integer "rsa_key_restriction", default: 0, null: false
209
    t.integer "dsa_key_restriction", default: -1, null: false
210 211
    t.integer "ecdsa_key_restriction", default: 0, null: false
    t.integer "ed25519_key_restriction", default: 0, null: false
212 213 214 215 216
    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
217
    t.boolean "html_emails_enabled", default: true
218 219
    t.string "plantuml_url"
    t.boolean "plantuml_enabled"
220
    t.integer "shared_runners_minutes", default: 0, null: false
221
    t.bigint "repository_size_limit", default: 0
222
    t.integer "terminal_max_session_time", default: 0, null: false
223 224 225
    t.integer "unique_ips_limit_per_user"
    t.integer "unique_ips_limit_time_window"
    t.boolean "unique_ips_limit_enabled", default: false, null: false
226 227 228 229 230
    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"
231
    t.integer "geo_status_timeout", default: 10
232
    t.string "uuid"
233
    t.decimal "polling_interval_multiplier", default: "1.0", null: false
234
    t.boolean "elasticsearch_experimental_indexer"
235
    t.integer "cached_markdown_version"
236
    t.boolean "check_namespace_plan", default: false, null: false
237
    t.integer "mirror_max_delay", default: 300, null: false
238 239
    t.integer "mirror_max_capacity", default: 100, null: false
    t.integer "mirror_capacity_threshold", default: 50, null: false
240
    t.boolean "prometheus_metrics_enabled", default: true, null: false
241
    t.boolean "authorized_keys_enabled", default: true, null: false
242 243
    t.boolean "help_page_hide_commercial_content", default: false
    t.string "help_page_support_url"
Valery Sizov's avatar
Valery Sizov committed
244 245
    t.boolean "slack_app_enabled", default: false
    t.string "slack_app_id"
246
    t.integer "performance_bar_allowed_group_id"
247
    t.boolean "allow_group_owners_to_manage_ldap", default: true, null: false
248
    t.boolean "hashed_storage_enabled", default: true, null: false
249
    t.boolean "project_export_enabled", default: true, null: false
250
    t.boolean "auto_devops_enabled", default: true, null: false
251 252 253 254 255 256 257 258 259
    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
260 261 262
    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
263
    t.boolean "mirror_available", default: true, null: false
264 265
    t.boolean "password_authentication_enabled_for_web"
    t.boolean "password_authentication_enabled_for_git", default: true, null: false
266
    t.string "auto_devops_domain"
267 268 269
    t.boolean "external_authorization_service_enabled", default: false, null: false
    t.string "external_authorization_service_url"
    t.string "external_authorization_service_default_label"
270
    t.boolean "pages_domain_verification_enabled", default: true, null: false
271
    t.string "user_default_internal_regex"
272
    t.float "external_authorization_service_timeout", default: 0.5
273 274 275 276 277
    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"
278
    t.string "email_additional_text"
279
    t.boolean "enforce_terms", default: false
280
    t.integer "file_template_project_id"
281
    t.boolean "pseudonymizer_enabled", default: false, null: false
282
    t.boolean "hide_third_party_offers", default: false, null: false
Imre Farkas's avatar
Imre Farkas committed
283
    t.boolean "snowplow_enabled", default: false, null: false
284
    t.string "snowplow_collector_hostname"
Imre Farkas's avatar
Imre Farkas committed
285
    t.string "snowplow_cookie_domain"
Luke Bennett's avatar
Luke Bennett committed
286
    t.boolean "instance_statistics_visibility_private", default: false, null: false
287
    t.boolean "web_ide_clientside_preview_enabled", default: false, null: false
288
    t.boolean "user_show_add_ssh_key_message", default: true, null: false
Luke Bennett's avatar
Luke Bennett committed
289
    t.integer "custom_project_templates_group_id"
290
    t.integer "usage_stats_set_by_user_id"
291
    t.integer "receive_max_input_size"
292
    t.integer "diff_max_patch_bytes", default: 102400, null: false
293
    t.integer "archive_builds_in_seconds"
294
    t.string "commit_email_hostname"
295
    t.boolean "protected_ci_variables", default: false, null: false
296
    t.string "runners_registration_token_encrypted"
Jan Provaznik's avatar
Jan Provaznik committed
297
    t.integer "local_markdown_version", default: 0, null: false
298
    t.integer "first_day_of_week", default: 0, null: false
299
    t.boolean "elasticsearch_limit_indexing", default: false, null: false
300
    t.integer "default_project_creation", default: 2, null: false
301 302
    t.string "lets_encrypt_notification_email"
    t.boolean "lets_encrypt_terms_of_service_accepted", default: false, null: false
303
    t.string "geo_node_allowed_ips", default: "0.0.0.0/0, ::/0"
304 305
    t.integer "elasticsearch_shards", default: 5, null: false
    t.integer "elasticsearch_replicas", default: 1, null: false
306 307
    t.text "encrypted_lets_encrypt_private_key"
    t.text "encrypted_lets_encrypt_private_key_iv"
308
    t.string "required_instance_ci_template"
309
    t.boolean "dns_rebinding_protection_enabled", default: true, null: false
310
    t.boolean "default_project_deletion_protection", default: false, null: false
311
    t.boolean "grafana_enabled", default: false, null: false
312
    t.boolean "lock_memberships_to_ldap", default: false, null: false
313
    t.boolean "time_tracking_limit_to_hours", default: false, null: false
314
    t.string "grafana_url", default: "/-/grafana", null: false
315
    t.boolean "login_recaptcha_protection_enabled", default: false, null: false
316
    t.string "outbound_local_requests_whitelist", limit: 255, default: [], null: false, array: true
317
    t.integer "raw_blob_request_limit", default: 300, null: false
318
    t.boolean "allow_local_requests_from_web_hooks_and_services", default: false, null: false
319
    t.boolean "allow_local_requests_from_system_hooks", default: true, null: false
320
    t.bigint "instance_administration_project_id"
321 322 323 324 325
    t.boolean "asset_proxy_enabled", default: false, null: false
    t.string "asset_proxy_url"
    t.text "asset_proxy_whitelist"
    t.text "encrypted_asset_proxy_secret_key"
    t.string "encrypted_asset_proxy_secret_key_iv"
326 327
    t.string "static_objects_external_storage_url", limit: 255
    t.string "static_objects_external_storage_auth_token", limit: 255
328
    t.integer "max_personal_access_token_lifetime"
329
    t.boolean "throttle_protected_paths_enabled", default: false, null: false
330 331
    t.integer "throttle_protected_paths_requests_per_period", default: 10, null: false
    t.integer "throttle_protected_paths_period_in_seconds", default: 60, null: false
332
    t.string "protected_paths", limit: 255, default: ["/users/password", "/users/sign_in", "/api/v3/session.json", "/api/v3/session", "/api/v4/session.json", "/api/v4/session", "/users", "/users/confirmation", "/unsubscribes/", "/import/github/personal_access_token", "/admin/session"], array: true
Sean Arnold's avatar
Sean Arnold committed
333 334 335
    t.boolean "throttle_incident_management_notification_enabled", default: false, null: false
    t.integer "throttle_incident_management_notification_period_in_seconds", default: 3600
    t.integer "throttle_incident_management_notification_per_period", default: 3600
336
    t.string "snowplow_iglu_registry_url", limit: 255
337
    t.integer "push_event_hooks_limit", default: 3, null: false
338
    t.integer "push_event_activities_limit", default: 3, null: false
339
    t.string "custom_http_clone_url_root", limit: 511
340
    t.integer "deletion_adjourned_period", default: 7, null: false
341
    t.date "license_trial_ends_on"
342 343 344 345 346
    t.boolean "eks_integration_enabled", default: false, null: false
    t.string "eks_account_id", limit: 128
    t.string "eks_access_key_id", limit: 128
    t.string "encrypted_eks_secret_access_key_iv", limit: 255
    t.text "encrypted_eks_secret_access_key"
347
    t.string "snowplow_app_id"
348
    t.datetime_with_timezone "productivity_analytics_start_date"
349
    t.string "default_ci_config_path", limit: 255
Felix Becker's avatar
Felix Becker committed
350 351
    t.boolean "sourcegraph_enabled", default: false, null: false
    t.string "sourcegraph_url", limit: 255
352
    t.boolean "sourcegraph_public_only", default: true, null: false
353
    t.bigint "snippet_size_limit", default: 52428800, null: false
354
    t.integer "minimum_password_length", default: 8, null: false
355 356 357 358 359 360 361 362 363 364 365 366
    t.text "encrypted_akismet_api_key"
    t.string "encrypted_akismet_api_key_iv", limit: 255
    t.text "encrypted_elasticsearch_aws_secret_access_key"
    t.string "encrypted_elasticsearch_aws_secret_access_key_iv", limit: 255
    t.text "encrypted_recaptcha_private_key"
    t.string "encrypted_recaptcha_private_key_iv", limit: 255
    t.text "encrypted_recaptcha_site_key"
    t.string "encrypted_recaptcha_site_key_iv", limit: 255
    t.text "encrypted_slack_app_secret"
    t.string "encrypted_slack_app_secret_iv", limit: 255
    t.text "encrypted_slack_app_verification_token"
    t.string "encrypted_slack_app_verification_token_iv", limit: 255
367 368
    t.index ["custom_project_templates_group_id"], name: "index_application_settings_on_custom_project_templates_group_id"
    t.index ["file_template_project_id"], name: "index_application_settings_on_file_template_project_id"
369
    t.index ["instance_administration_project_id"], name: "index_applicationsettings_on_instance_administration_project_id"
370
    t.index ["usage_stats_set_by_user_id"], name: "index_application_settings_on_usage_stats_set_by_user_id"
Valery Sizov's avatar
Valery Sizov committed
371 372
  end

Jasper Maes's avatar
Jasper Maes committed
373
  create_table "approval_merge_request_rule_sources", force: :cascade do |t|
374 375
    t.bigint "approval_merge_request_rule_id", null: false
    t.bigint "approval_project_rule_id", null: false
376 377
    t.index ["approval_merge_request_rule_id"], name: "index_approval_merge_request_rule_sources_1", unique: true
    t.index ["approval_project_rule_id"], name: "index_approval_merge_request_rule_sources_2"
378 379
  end

Jasper Maes's avatar
Jasper Maes committed
380
  create_table "approval_merge_request_rules", force: :cascade do |t|
381 382 383 384 385 386
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "merge_request_id", null: false
    t.integer "approvals_required", limit: 2, default: 0, null: false
    t.boolean "code_owner", default: false, null: false
    t.string "name", null: false
387
    t.integer "rule_type", limit: 2, default: 1, null: false
388
    t.integer "report_type", limit: 2
389 390
    t.index ["merge_request_id", "code_owner", "name"], name: "approval_rule_name_index_for_code_owners", unique: true, where: "(code_owner = true)"
    t.index ["merge_request_id", "code_owner"], name: "index_approval_merge_request_rules_1"
391 392 393
    t.index ["merge_request_id", "name"], name: "index_approval_rule_name_for_code_owners_rule_type", unique: true, where: "(rule_type = 2)"
    t.index ["merge_request_id", "rule_type"], name: "any_approver_merge_request_rule_type_unique_index", unique: true, where: "(rule_type = 4)"
    t.index ["merge_request_id"], name: "index_approval_rules_code_owners_rule_type", where: "(rule_type = 2)"
394 395
  end

Jasper Maes's avatar
Jasper Maes committed
396
  create_table "approval_merge_request_rules_approved_approvers", force: :cascade do |t|
397
    t.bigint "approval_merge_request_rule_id", null: false
398
    t.integer "user_id", null: false
399 400
    t.index ["approval_merge_request_rule_id", "user_id"], name: "index_approval_merge_request_rules_approved_approvers_1", unique: true
    t.index ["user_id"], name: "index_approval_merge_request_rules_approved_approvers_2"
401 402
  end

Jasper Maes's avatar
Jasper Maes committed
403
  create_table "approval_merge_request_rules_groups", force: :cascade do |t|
404 405
    t.bigint "approval_merge_request_rule_id", null: false
    t.integer "group_id", null: false
406 407
    t.index ["approval_merge_request_rule_id", "group_id"], name: "index_approval_merge_request_rules_groups_1", unique: true
    t.index ["group_id"], name: "index_approval_merge_request_rules_groups_2"
408 409
  end

Jasper Maes's avatar
Jasper Maes committed
410
  create_table "approval_merge_request_rules_users", force: :cascade do |t|
411 412
    t.bigint "approval_merge_request_rule_id", null: false
    t.integer "user_id", null: false
413 414
    t.index ["approval_merge_request_rule_id", "user_id"], name: "index_approval_merge_request_rules_users_1", unique: true
    t.index ["user_id"], name: "index_approval_merge_request_rules_users_2"
415 416
  end

Jasper Maes's avatar
Jasper Maes committed
417
  create_table "approval_project_rules", force: :cascade do |t|
418 419 420 421 422
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "project_id", null: false
    t.integer "approvals_required", limit: 2, default: 0, null: false
    t.string "name", null: false
423
    t.integer "rule_type", limit: 2, default: 0, null: false
424
    t.index ["project_id"], name: "any_approver_project_rule_type_unique_index", unique: true, where: "(rule_type = 3)"
425 426
    t.index ["project_id"], name: "index_approval_project_rules_on_project_id"
    t.index ["rule_type"], name: "index_approval_project_rules_on_rule_type"
427 428
  end

Jasper Maes's avatar
Jasper Maes committed
429
  create_table "approval_project_rules_groups", force: :cascade do |t|
430 431
    t.bigint "approval_project_rule_id", null: false
    t.integer "group_id", null: false
432 433
    t.index ["approval_project_rule_id", "group_id"], name: "index_approval_project_rules_groups_1", unique: true
    t.index ["group_id"], name: "index_approval_project_rules_groups_2"
434 435
  end

Jasper Maes's avatar
Jasper Maes committed
436
  create_table "approval_project_rules_users", force: :cascade do |t|
437 438
    t.bigint "approval_project_rule_id", null: false
    t.integer "user_id", null: false
439 440
    t.index ["approval_project_rule_id", "user_id"], name: "index_approval_project_rules_users_1", unique: true
    t.index ["user_id"], name: "index_approval_project_rules_users_2"
441 442
  end

Jasper Maes's avatar
Jasper Maes committed
443
  create_table "approvals", id: :serial, force: :cascade do |t|
444 445
    t.integer "merge_request_id", null: false
    t.integer "user_id", null: false
Valery Sizov's avatar
Valery Sizov committed
446 447
    t.datetime "created_at"
    t.datetime "updated_at"
448 449
    t.index ["merge_request_id"], name: "index_approvals_on_merge_request_id"
    t.index ["user_id", "merge_request_id"], name: "index_approvals_on_user_id_and_merge_request_id", unique: true
450 451
  end

Jasper Maes's avatar
Jasper Maes committed
452
  create_table "approver_groups", id: :serial, force: :cascade do |t|
453 454 455
    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
456 457
    t.datetime "created_at"
    t.datetime "updated_at"
458 459
    t.index ["group_id"], name: "index_approver_groups_on_group_id"
    t.index ["target_id", "target_type"], name: "index_approver_groups_on_target_id_and_target_type"
Valery Sizov's avatar
Valery Sizov committed
460 461
  end

Jasper Maes's avatar
Jasper Maes committed
462
  create_table "approvers", id: :serial, force: :cascade do |t|
463 464 465
    t.integer "target_id", null: false
    t.string "target_type"
    t.integer "user_id", null: false
Valery Sizov's avatar
Valery Sizov committed
466 467
    t.datetime "created_at"
    t.datetime "updated_at"
468 469
    t.index ["target_id", "target_type"], name: "index_approvers_on_target_id_and_target_type"
    t.index ["user_id"], name: "index_approvers_on_user_id"
Valery Sizov's avatar
Valery Sizov committed
470 471
  end

Jasper Maes's avatar
Jasper Maes committed
472
  create_table "audit_events", id: :serial, force: :cascade do |t|
473 474 475 476 477
    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
478 479
    t.datetime "created_at"
    t.datetime "updated_at"
480 481
    t.index ["created_at", "author_id"], name: "analytics_index_audit_events_on_created_at_and_author_id"
    t.index ["entity_id", "entity_type"], name: "index_audit_events_on_entity_id_and_entity_type"
Marin Jankovski's avatar
Marin Jankovski committed
482 483
  end

Jasper Maes's avatar
Jasper Maes committed
484
  create_table "award_emoji", id: :serial, force: :cascade do |t|
485 486 487 488
    t.string "name"
    t.integer "user_id"
    t.integer "awardable_id"
    t.string "awardable_type"
489 490
    t.datetime "created_at"
    t.datetime "updated_at"
491 492
    t.index ["awardable_type", "awardable_id"], name: "index_award_emoji_on_awardable_type_and_awardable_id"
    t.index ["user_id", "name"], name: "index_award_emoji_on_user_id_and_name"
493 494
  end

Tiger's avatar
Tiger committed
495 496 497 498 499 500 501 502 503
  create_table "aws_roles", primary_key: "user_id", id: :integer, default: nil, force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.string "role_arn", limit: 2048, null: false
    t.string "role_external_id", limit: 64, null: false
    t.index ["role_external_id"], name: "index_aws_roles_on_role_external_id", unique: true
    t.index ["user_id"], name: "index_aws_roles_on_user_id", unique: true
  end

Jasper Maes's avatar
Jasper Maes committed
504
  create_table "badges", id: :serial, force: :cascade do |t|
505 506 507 508 509
    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
Lee Tickett's avatar
Lee Tickett committed
510
    t.string "name", limit: 255
511 512
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
513 514
    t.index ["group_id"], name: "index_badges_on_group_id"
    t.index ["project_id"], name: "index_badges_on_project_id"
515 516
  end

Jasper Maes's avatar
Jasper Maes committed
517
  create_table "board_assignees", id: :serial, force: :cascade do |t|
518 519
    t.integer "board_id", null: false
    t.integer "assignee_id", null: false
520 521
    t.index ["assignee_id"], name: "index_board_assignees_on_assignee_id"
    t.index ["board_id", "assignee_id"], name: "index_board_assignees_on_board_id_and_assignee_id", unique: true
522 523
  end

Jasper Maes's avatar
Jasper Maes committed
524
  create_table "board_group_recent_visits", force: :cascade do |t|
525 526 527 528 529
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "user_id"
    t.integer "board_id"
    t.integer "group_id"
530 531 532 533
    t.index ["board_id"], name: "index_board_group_recent_visits_on_board_id"
    t.index ["group_id"], name: "index_board_group_recent_visits_on_group_id"
    t.index ["user_id", "group_id", "board_id"], name: "index_board_group_recent_visits_on_user_group_and_board", unique: true
    t.index ["user_id"], name: "index_board_group_recent_visits_on_user_id"
534 535
  end

Jasper Maes's avatar
Jasper Maes committed
536
  create_table "board_labels", id: :serial, force: :cascade do |t|
537
    t.integer "board_id", null: false
Oswaldo Ferreira's avatar
Oswaldo Ferreira committed
538
    t.integer "label_id", null: false
539 540
    t.index ["board_id", "label_id"], name: "index_board_labels_on_board_id_and_label_id", unique: true
    t.index ["label_id"], name: "index_board_labels_on_label_id"
Oswaldo Ferreira's avatar
Oswaldo Ferreira committed
541 542
  end

Jasper Maes's avatar
Jasper Maes committed
543
  create_table "board_project_recent_visits", force: :cascade do |t|
544 545 546 547 548
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "user_id"
    t.integer "project_id"
    t.integer "board_id"
549 550 551 552
    t.index ["board_id"], name: "index_board_project_recent_visits_on_board_id"
    t.index ["project_id"], name: "index_board_project_recent_visits_on_project_id"
    t.index ["user_id", "project_id", "board_id"], name: "index_board_project_recent_visits_on_user_project_and_board", unique: true
    t.index ["user_id"], name: "index_board_project_recent_visits_on_user_id"
553 554
  end

Jasper Maes's avatar
Jasper Maes committed
555
  create_table "boards", id: :serial, force: :cascade do |t|
556
    t.integer "project_id"
557 558
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
559
    t.string "name", default: "Development", null: false
560
    t.integer "milestone_id"
Felipe Artur's avatar
Felipe Artur committed
561
    t.integer "group_id"
562
    t.integer "weight"
563 564 565
    t.index ["group_id"], name: "index_boards_on_group_id"
    t.index ["milestone_id"], name: "index_boards_on_milestone_id"
    t.index ["project_id"], name: "index_boards_on_project_id"
566 567
  end

Jasper Maes's avatar
Jasper Maes committed
568
  create_table "broadcast_messages", id: :serial, force: :cascade do |t|
569
    t.text "message", null: false
570 571 572 573
    t.datetime "starts_at", null: false
    t.datetime "ends_at", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
574 575
    t.string "color"
    t.string "font"
576
    t.text "message_html", null: false
577
    t.integer "cached_markdown_version"
578
    t.string "target_path", limit: 255
579
    t.integer "broadcast_type", limit: 2, default: 1, null: false
580
    t.index ["starts_at", "ends_at", "id"], name: "index_broadcast_messages_on_starts_at_and_ends_at_and_id"
581
  end
582

Jasper Maes's avatar
Jasper Maes committed
583
  create_table "chat_names", id: :serial, force: :cascade do |t|
584 585
    t.integer "user_id", null: false
    t.integer "service_id", null: false
586
    t.string "team_id", null: false
587
    t.string "team_domain"
588
    t.string "chat_id", null: false
589
    t.string "chat_name"
590
    t.datetime "last_used_at"
591 592
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
593 594
    t.index ["service_id", "team_id", "chat_id"], name: "index_chat_names_on_service_id_and_team_id_and_chat_id", unique: true
    t.index ["user_id", "service_id"], name: "index_chat_names_on_user_id_and_service_id", unique: true
595 596
  end

Jasper Maes's avatar
Jasper Maes committed
597
  create_table "chat_teams", id: :serial, force: :cascade do |t|
598
    t.integer "namespace_id", null: false
599 600 601 602
    t.string "team_id"
    t.string "name"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
603
    t.index ["namespace_id"], name: "index_chat_teams_on_namespace_id", unique: true
604 605
  end

Kamil Trzciński's avatar
Kamil Trzciński committed
606 607 608
  create_table "ci_build_needs", id: :serial, force: :cascade do |t|
    t.integer "build_id", null: false
    t.text "name", null: false
609
    t.boolean "artifacts", default: true, null: false
Kamil Trzciński's avatar
Kamil Trzciński committed
610 611 612
    t.index ["build_id", "name"], name: "index_ci_build_needs_on_build_id_and_name", unique: true
  end

Jasper Maes's avatar
Jasper Maes committed
613
  create_table "ci_build_trace_chunks", force: :cascade do |t|
614 615 616 617
    t.integer "build_id", null: false
    t.integer "chunk_index", null: false
    t.integer "data_store", null: false
    t.binary "raw_data"
618
    t.index ["build_id", "chunk_index"], name: "index_ci_build_trace_chunks_on_build_id_and_chunk_index", unique: true
619 620
  end

Jasper Maes's avatar
Jasper Maes committed
621
  create_table "ci_build_trace_section_names", id: :serial, force: :cascade do |t|
622 623
    t.integer "project_id", null: false
    t.string "name", null: false
624
    t.index ["project_id", "name"], name: "index_ci_build_trace_section_names_on_project_id_and_name", unique: true
625 626
  end

627
  create_table "ci_build_trace_sections", id: false, force: :cascade do |t|
628
    t.integer "project_id", null: false
629 630
    t.datetime "date_start", null: false
    t.datetime "date_end", null: false
631 632
    t.bigint "byte_start", null: false
    t.bigint "byte_end", null: false
633 634
    t.integer "build_id", null: false
    t.integer "section_name_id", null: false
635 636 637
    t.index ["build_id", "section_name_id"], name: "index_ci_build_trace_sections_on_build_id_and_section_name_id", unique: true
    t.index ["project_id"], name: "index_ci_build_trace_sections_on_project_id"
    t.index ["section_name_id"], name: "index_ci_build_trace_sections_on_section_name_id"
638 639
  end

Jasper Maes's avatar
Jasper Maes committed
640
  create_table "ci_builds", id: :serial, force: :cascade do |t|
641
    t.string "status"
642
    t.datetime "finished_at"
643
    t.text "trace"
644 645 646
    t.datetime "created_at"
    t.datetime "updated_at"
    t.datetime "started_at"
647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663
    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"
664
    t.integer "project_id"
665 666
    t.text "artifacts_metadata"
    t.integer "erased_by_id"
667
    t.datetime "erased_at"
668
    t.datetime "artifacts_expire_at"
669
    t.string "environment"
670
    t.bigint "artifacts_size"
671 672
    t.string "when"
    t.text "yaml_variables"
673
    t.datetime "queued_at"
674
    t.string "token"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
675
    t.integer "lock_version"
676
    t.string "coverage_regex"
677
    t.integer "auto_canceled_by_id"
678
    t.boolean "retried"
679
    t.integer "stage_id"
Rémy Coutable's avatar
Rémy Coutable committed
680 681
    t.integer "artifacts_file_store"
    t.integer "artifacts_metadata_store"
682
    t.boolean "protected"
683
    t.integer "failure_reason"
Shinya Maeda's avatar
Shinya Maeda committed
684
    t.datetime_with_timezone "scheduled_at"
685
    t.string "token_encrypted"
686
    t.integer "upstream_pipeline_id"
687 688
    t.bigint "resource_group_id"
    t.datetime_with_timezone "waiting_for_resource_at"
689 690 691 692 693 694 695 696 697
    t.index ["artifacts_expire_at"], name: "index_ci_builds_on_artifacts_expire_at", where: "(artifacts_file <> ''::text)"
    t.index ["auto_canceled_by_id"], name: "index_ci_builds_on_auto_canceled_by_id"
    t.index ["commit_id", "artifacts_expire_at", "id"], name: "index_ci_builds_on_commit_id_and_artifacts_expireatandidpartial", where: "(((type)::text = 'Ci::Build'::text) AND ((retried = false) OR (retried IS NULL)) AND ((name)::text = ANY (ARRAY[('sast'::character varying)::text, ('dependency_scanning'::character varying)::text, ('sast:container'::character varying)::text, ('container_scanning'::character varying)::text, ('dast'::character varying)::text])))"
    t.index ["commit_id", "stage_idx", "created_at"], name: "index_ci_builds_on_commit_id_and_stage_idx_and_created_at"
    t.index ["commit_id", "status", "type"], name: "index_ci_builds_on_commit_id_and_status_and_type"
    t.index ["commit_id", "type", "name", "ref"], name: "index_ci_builds_on_commit_id_and_type_and_name_and_ref"
    t.index ["commit_id", "type", "ref"], name: "index_ci_builds_on_commit_id_and_type_and_ref"
    t.index ["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]))"
    t.index ["project_id", "id"], name: "index_ci_builds_on_project_id_and_id"
698
    t.index ["project_id", "name", "ref"], name: "index_ci_builds_on_project_id_and_name_and_ref", where: "(((type)::text = 'Ci::Build'::text) AND ((status)::text = 'success'::text) AND ((retried = false) OR (retried IS NULL)))"
699
    t.index ["project_id", "status"], name: "index_ci_builds_project_id_and_status_for_live_jobs_partial2", where: "(((type)::text = 'Ci::Build'::text) AND ((status)::text = ANY (ARRAY[('running'::character varying)::text, ('pending'::character varying)::text, ('created'::character varying)::text])))"
700
    t.index ["project_id"], name: "index_ci_builds_on_project_id_for_successfull_pages_deploy", where: "(((type)::text = 'GenericCommitStatus'::text) AND ((stage)::text = 'deploy'::text) AND ((name)::text = 'pages:deploy'::text) AND ((status)::text = 'success'::text))"
701 702
    t.index ["protected"], name: "index_ci_builds_on_protected"
    t.index ["queued_at"], name: "index_ci_builds_on_queued_at"
703
    t.index ["resource_group_id", "id"], name: "index_for_resource_group", where: "(resource_group_id IS NOT NULL)"
704 705 706 707
    t.index ["runner_id"], name: "index_ci_builds_on_runner_id"
    t.index ["scheduled_at"], name: "partial_index_ci_builds_on_scheduled_at_with_scheduled_jobs", where: "((scheduled_at IS NOT NULL) AND ((type)::text = 'Ci::Build'::text) AND ((status)::text = 'scheduled'::text))"
    t.index ["stage_id", "stage_idx"], name: "tmp_build_stage_position_index", where: "(stage_idx IS NOT NULL)"
    t.index ["stage_id"], name: "index_ci_builds_on_stage_id"
708
    t.index ["status", "created_at", "project_id"], name: "ci_builds_gitlab_monitor_metrics", where: "((type)::text = 'Ci::Build'::text)"
709 710 711 712 713 714
    t.index ["status", "type", "runner_id"], name: "index_ci_builds_on_status_and_type_and_runner_id"
    t.index ["token"], name: "index_ci_builds_on_token", unique: true
    t.index ["token_encrypted"], name: "index_ci_builds_on_token_encrypted", unique: true, where: "(token_encrypted IS NOT NULL)"
    t.index ["updated_at"], name: "index_ci_builds_on_updated_at"
    t.index ["upstream_pipeline_id"], name: "index_ci_builds_on_upstream_pipeline_id", where: "(upstream_pipeline_id IS NOT NULL)"
    t.index ["user_id"], name: "index_ci_builds_on_user_id"
715 716
  end

Jasper Maes's avatar
Jasper Maes committed
717
  create_table "ci_builds_metadata", id: :serial, force: :cascade do |t|
718 719 720 721
    t.integer "build_id", null: false
    t.integer "project_id", null: false
    t.integer "timeout"
    t.integer "timeout_source", default: 1, null: false
722
    t.boolean "interruptible"
723 724
    t.jsonb "config_options"
    t.jsonb "config_variables"
725
    t.boolean "has_exposed_artifacts"
726
    t.string "environment_auto_stop_in", limit: 255
727
    t.index ["build_id"], name: "index_ci_builds_metadata_on_build_id", unique: true
728
    t.index ["build_id"], name: "index_ci_builds_metadata_on_build_id_and_has_exposed_artifacts", where: "(has_exposed_artifacts IS TRUE)"
729
    t.index ["build_id"], name: "index_ci_builds_metadata_on_build_id_and_interruptible", where: "(interruptible = true)"
730
    t.index ["project_id"], name: "index_ci_builds_metadata_on_project_id"
731 732
  end

Jasper Maes's avatar
Jasper Maes committed
733
  create_table "ci_builds_runner_session", force: :cascade do |t|
734 735 736 737
    t.integer "build_id", null: false
    t.string "url", null: false
    t.string "certificate"
    t.string "authorization"
738
    t.index ["build_id"], name: "index_ci_builds_runner_session_on_build_id", unique: true
739 740
  end

Jasper Maes's avatar
Jasper Maes committed
741
  create_table "ci_group_variables", id: :serial, force: :cascade do |t|
742 743 744 745 746
    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
747 748
    t.integer "group_id", null: false
    t.boolean "protected", default: false, null: false
749 750
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
Matija Čupić's avatar
Matija Čupić committed
751
    t.boolean "masked", default: false, null: false
752
    t.integer "variable_type", limit: 2, default: 1, null: false
753
    t.index ["group_id", "key"], name: "index_ci_group_variables_on_group_id_and_key", unique: true
754 755
  end

Jasper Maes's avatar
Jasper Maes committed
756
  create_table "ci_job_artifacts", id: :serial, force: :cascade do |t|
757
    t.integer "project_id", null: false
758
    t.integer "job_id", null: false
759
    t.integer "file_type", null: false
760
    t.bigint "size"
761 762
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
763
    t.datetime_with_timezone "expire_at"
764
    t.string "file"
765
    t.integer "file_store"
766
    t.binary "file_sha256"
767
    t.integer "file_format", limit: 2
768
    t.integer "file_location", limit: 2
769 770 771 772
    t.index ["expire_at", "job_id"], name: "index_ci_job_artifacts_on_expire_at_and_job_id"
    t.index ["file_store"], name: "index_ci_job_artifacts_on_file_store"
    t.index ["job_id", "file_type"], name: "index_ci_job_artifacts_on_job_id_and_file_type", unique: true
    t.index ["project_id"], name: "index_ci_job_artifacts_on_project_id"
773
    t.index ["project_id"], name: "index_ci_job_artifacts_on_project_id_for_security_reports", where: "(file_type = ANY (ARRAY[5, 6, 7, 8]))"
774 775
  end

Matija Čupić's avatar
Matija Čupić committed
776 777 778 779 780 781 782 783 784 785
  create_table "ci_job_variables", force: :cascade do |t|
    t.string "key", null: false
    t.text "encrypted_value"
    t.string "encrypted_value_iv"
    t.bigint "job_id", null: false
    t.integer "variable_type", limit: 2, default: 1, null: false
    t.index ["job_id"], name: "index_ci_job_variables_on_job_id"
    t.index ["key", "job_id"], name: "index_ci_job_variables_on_key_and_job_id", unique: true
  end

Jasper Maes's avatar
Jasper Maes committed
786
  create_table "ci_pipeline_chat_data", force: :cascade do |t|
787 788 789
    t.integer "pipeline_id", null: false
    t.integer "chat_name_id", null: false
    t.text "response_url", null: false
790 791
    t.index ["chat_name_id"], name: "index_ci_pipeline_chat_data_on_chat_name_id"
    t.index ["pipeline_id"], name: "index_ci_pipeline_chat_data_on_pipeline_id", unique: true
792 793
  end

Jasper Maes's avatar
Jasper Maes committed
794
  create_table "ci_pipeline_schedule_variables", id: :serial, force: :cascade do |t|
Shinya Maeda's avatar
Shinya Maeda committed
795 796 797 798 799
    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
800
    t.integer "pipeline_schedule_id", null: false
801 802
    t.datetime_with_timezone "created_at"
    t.datetime_with_timezone "updated_at"
803
    t.integer "variable_type", limit: 2, default: 1, null: false
804
    t.index ["pipeline_schedule_id", "key"], name: "index_ci_pipeline_schedule_variables_on_schedule_id_and_key", unique: true
Shinya Maeda's avatar
Shinya Maeda committed
805 806
  end

Jasper Maes's avatar
Jasper Maes committed
807
  create_table "ci_pipeline_schedules", id: :serial, force: :cascade do |t|
808 809 810 811 812 813 814 815 816 817
    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"
818 819 820
    t.index ["next_run_at", "active"], name: "index_ci_pipeline_schedules_on_next_run_at_and_active"
    t.index ["owner_id"], name: "index_ci_pipeline_schedules_on_owner_id"
    t.index ["project_id"], name: "index_ci_pipeline_schedules_on_project_id"
821 822
  end

Jasper Maes's avatar
Jasper Maes committed
823
  create_table "ci_pipeline_variables", id: :serial, force: :cascade do |t|
824 825 826 827 828 829
    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
830
    t.integer "variable_type", limit: 2, default: 1, null: false
831
    t.index ["pipeline_id", "key"], name: "index_ci_pipeline_variables_on_pipeline_id_and_key", unique: true
832
    t.index ["pipeline_id"], name: "index_ci_pipeline_variables_on_pipeline_id", where: "((key)::text = 'AUTO_DEVOPS_MODSECURITY_SEC_RULE_ENGINE'::text)"
833 834
  end

Jasper Maes's avatar
Jasper Maes committed
835
  create_table "ci_pipelines", id: :serial, force: :cascade do |t|
836 837 838
    t.string "ref"
    t.string "sha"
    t.string "before_sha"
839 840
    t.datetime "created_at"
    t.datetime "updated_at"
841 842
    t.boolean "tag", default: false
    t.text "yaml_errors"
843
    t.datetime "committed_at"
844
    t.integer "project_id"
845
    t.string "status"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
846 847
    t.datetime "started_at"
    t.datetime "finished_at"
848 849
    t.integer "duration"
    t.integer "user_id"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
850
    t.integer "lock_version"
851
    t.integer "auto_canceled_by_id"
852
    t.integer "pipeline_schedule_id"
853
    t.integer "source"
854
    t.integer "config_source"
855
    t.boolean "protected"
856
    t.integer "failure_reason"
Micaël Bergeron's avatar
Micaël Bergeron committed
857
    t.integer "iid"
Shinya Maeda's avatar
Shinya Maeda committed
858
    t.integer "merge_request_id"
859 860
    t.binary "source_sha"
    t.binary "target_sha"
861
    t.bigint "external_pull_request_id"
862
    t.index ["auto_canceled_by_id"], name: "index_ci_pipelines_on_auto_canceled_by_id"
863
    t.index ["external_pull_request_id"], name: "index_ci_pipelines_on_external_pull_request_id", where: "(external_pull_request_id IS NOT NULL)"
864 865
    t.index ["merge_request_id"], name: "index_ci_pipelines_on_merge_request_id", where: "(merge_request_id IS NOT NULL)"
    t.index ["pipeline_schedule_id"], name: "index_ci_pipelines_on_pipeline_schedule_id"
866
    t.index ["project_id", "id"], name: "index_ci_pipelines_on_project_id_and_id_desc", order: { id: :desc }
867 868 869 870 871 872
    t.index ["project_id", "iid"], name: "index_ci_pipelines_on_project_id_and_iid", unique: true, where: "(iid IS NOT NULL)"
    t.index ["project_id", "ref", "id"], name: "index_ci_pipelines_on_project_idandrefandiddesc", order: { id: :desc }
    t.index ["project_id", "ref", "status", "id"], name: "index_ci_pipelines_on_project_id_and_ref_and_status_and_id"
    t.index ["project_id", "sha"], name: "index_ci_pipelines_on_project_id_and_sha"
    t.index ["project_id", "source"], name: "index_ci_pipelines_on_project_id_and_source"
    t.index ["project_id", "status", "config_source"], name: "index_ci_pipelines_on_project_id_and_status_and_config_source"
873
    t.index ["project_id", "status", "updated_at"], name: "index_ci_pipelines_on_project_id_and_status_and_updated_at"
874 875
    t.index ["status"], name: "index_ci_pipelines_on_status"
    t.index ["user_id"], name: "index_ci_pipelines_on_user_id"
876 877
  end

878 879 880 881 882
  create_table "ci_pipelines_config", primary_key: "pipeline_id", force: :cascade do |t|
    t.text "content", null: false
    t.index ["pipeline_id"], name: "index_ci_pipelines_config_on_pipeline_id"
  end

883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899
  create_table "ci_resource_groups", force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.bigint "project_id", null: false
    t.string "key", limit: 255, null: false
    t.index ["project_id", "key"], name: "index_ci_resource_groups_on_project_id_and_key", unique: true
  end

  create_table "ci_resources", force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.bigint "resource_group_id", null: false
    t.bigint "build_id"
    t.index ["build_id"], name: "index_ci_resources_on_build_id"
    t.index ["resource_group_id", "build_id"], name: "index_ci_resources_on_resource_group_id_and_build_id", unique: true
  end

Jasper Maes's avatar
Jasper Maes committed
900
  create_table "ci_runner_namespaces", id: :serial, force: :cascade do |t|
901
    t.integer "runner_id"
902
    t.integer "namespace_id"
903 904
    t.index ["namespace_id"], name: "index_ci_runner_namespaces_on_namespace_id"
    t.index ["runner_id", "namespace_id"], name: "index_ci_runner_namespaces_on_runner_id_and_namespace_id", unique: true
905 906
  end

Jasper Maes's avatar
Jasper Maes committed
907
  create_table "ci_runner_projects", id: :serial, force: :cascade do |t|
908
    t.integer "runner_id", null: false
909 910
    t.datetime "created_at"
    t.datetime "updated_at"
911
    t.integer "project_id"
912 913
    t.index ["project_id"], name: "index_ci_runner_projects_on_project_id"
    t.index ["runner_id"], name: "index_ci_runner_projects_on_runner_id"
914 915
  end

Jasper Maes's avatar
Jasper Maes committed
916
  create_table "ci_runners", id: :serial, force: :cascade do |t|
917
    t.string "token"
918 919
    t.datetime "created_at"
    t.datetime "updated_at"
920
    t.string "description"
921
    t.datetime "contacted_at"
922 923 924 925 926 927 928 929 930
    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
931
    t.integer "access_level", default: 0, null: false
932
    t.string "ip_address"
933
    t.integer "maximum_timeout"
934
    t.integer "runner_type", limit: 2, null: false
935
    t.string "token_encrypted"
936 937 938 939 940 941
    t.index ["contacted_at"], name: "index_ci_runners_on_contacted_at"
    t.index ["is_shared"], name: "index_ci_runners_on_is_shared"
    t.index ["locked"], name: "index_ci_runners_on_locked"
    t.index ["runner_type"], name: "index_ci_runners_on_runner_type"
    t.index ["token"], name: "index_ci_runners_on_token"
    t.index ["token_encrypted"], name: "index_ci_runners_on_token_encrypted"
942 943
  end

Jasper Maes's avatar
Jasper Maes committed
944
  create_table "ci_sources_pipelines", id: :serial, force: :cascade do |t|
Kamil Trzcinski's avatar
Kamil Trzcinski committed
945 946 947 948 949
    t.integer "project_id"
    t.integer "pipeline_id"
    t.integer "source_project_id"
    t.integer "source_job_id"
    t.integer "source_pipeline_id"
950 951 952 953 954
    t.index ["pipeline_id"], name: "index_ci_sources_pipelines_on_pipeline_id"
    t.index ["project_id"], name: "index_ci_sources_pipelines_on_project_id"
    t.index ["source_job_id"], name: "index_ci_sources_pipelines_on_source_job_id"
    t.index ["source_pipeline_id"], name: "index_ci_sources_pipelines_on_source_pipeline_id"
    t.index ["source_project_id"], name: "index_ci_sources_pipelines_on_source_project_id"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
955 956
  end

Jasper Maes's avatar
Jasper Maes committed
957
  create_table "ci_stages", id: :serial, force: :cascade do |t|
958 959 960 961
    t.integer "project_id"
    t.integer "pipeline_id"
    t.datetime "created_at"
    t.datetime "updated_at"
962
    t.string "name"
963
    t.integer "status"
964
    t.integer "lock_version"
965
    t.integer "position"
966 967 968 969
    t.index ["pipeline_id", "name"], name: "index_ci_stages_on_pipeline_id_and_name", unique: true
    t.index ["pipeline_id", "position"], name: "index_ci_stages_on_pipeline_id_and_position"
    t.index ["pipeline_id"], name: "index_ci_stages_on_pipeline_id"
    t.index ["project_id"], name: "index_ci_stages_on_project_id"
970 971
  end

972 973 974 975 976 977 978
  create_table "ci_subscriptions_projects", force: :cascade do |t|
    t.bigint "downstream_project_id", null: false
    t.bigint "upstream_project_id", null: false
    t.index ["downstream_project_id", "upstream_project_id"], name: "index_ci_subscriptions_projects_unique_subscription", unique: true
    t.index ["upstream_project_id"], name: "index_ci_subscriptions_projects_on_upstream_project_id"
  end

Jasper Maes's avatar
Jasper Maes committed
979
  create_table "ci_trigger_requests", id: :serial, force: :cascade do |t|
980 981
    t.integer "trigger_id", null: false
    t.text "variables"
982 983
    t.datetime "created_at"
    t.datetime "updated_at"
984
    t.integer "commit_id"
985
    t.index ["commit_id"], name: "index_ci_trigger_requests_on_commit_id"
986
    t.index ["trigger_id", "id"], name: "index_ci_trigger_requests_on_trigger_id_and_id", order: { id: :desc }
987 988
  end

Jasper Maes's avatar
Jasper Maes committed
989
  create_table "ci_triggers", id: :serial, force: :cascade do |t|
990
    t.string "token"
991 992
    t.datetime "created_at"
    t.datetime "updated_at"
993
    t.integer "project_id"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
994 995
    t.integer "owner_id"
    t.string "description"
Shinya Maeda's avatar
Shinya Maeda committed
996
    t.string "ref"
997 998
    t.index ["owner_id"], name: "index_ci_triggers_on_owner_id"
    t.index ["project_id"], name: "index_ci_triggers_on_project_id"
999 1000
  end

Jasper Maes's avatar
Jasper Maes committed
1001
  create_table "ci_variables", id: :serial, force: :cascade do |t|
1002
    t.string "key", null: false
1003 1004 1005 1006
    t.text "value"
    t.text "encrypted_value"
    t.string "encrypted_value_salt"
    t.string "encrypted_value_iv"
1007
    t.integer "project_id", null: false
1008
    t.boolean "protected", default: false, null: false
1009
    t.string "environment_scope", default: "*", null: false
Matija Čupić's avatar
Matija Čupić committed
1010
    t.boolean "masked", default: false, null: false
1011
    t.integer "variable_type", limit: 2, default: 1, null: false
1012
    t.index ["project_id", "key", "environment_scope"], name: "index_ci_variables_on_project_id_and_key_and_environment_scope", unique: true
1013
    t.index ["project_id"], name: "index_ci_variables_on_project_id", where: "((key)::text = 'AUTO_DEVOPS_MODSECURITY_SEC_RULE_ENGINE'::text)"
1014 1015
  end

Jasper Maes's avatar
Jasper Maes committed
1016
  create_table "cluster_groups", id: :serial, force: :cascade do |t|
1017 1018
    t.integer "cluster_id", null: false
    t.integer "group_id", null: false
1019 1020
    t.index ["cluster_id", "group_id"], name: "index_cluster_groups_on_cluster_id_and_group_id", unique: true
    t.index ["group_id"], name: "index_cluster_groups_on_group_id"
1021 1022
  end

Jasper Maes's avatar
Jasper Maes committed
1023
  create_table "cluster_platforms_kubernetes", id: :serial, force: :cascade do |t|
Shinya Maeda's avatar
Shinya Maeda committed
1024
    t.integer "cluster_id", null: false
1025 1026
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
Kamil Trzcinski's avatar
Kamil Trzcinski committed
1027
    t.text "api_url"
Shinya Maeda's avatar
Shinya Maeda committed
1028 1029 1030 1031 1032 1033 1034
    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"
1035
    t.integer "authorization_type", limit: 2
1036
    t.index ["cluster_id"], name: "index_cluster_platforms_kubernetes_on_cluster_id", unique: true
Shinya Maeda's avatar
Shinya Maeda committed
1037 1038
  end

Jasper Maes's avatar
Jasper Maes committed
1039
  create_table "cluster_projects", id: :serial, force: :cascade do |t|
Shinya Maeda's avatar
Shinya Maeda committed
1040 1041
    t.integer "project_id", null: false
    t.integer "cluster_id", null: false
1042 1043
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
1044 1045
    t.index ["cluster_id"], name: "index_cluster_projects_on_cluster_id"
    t.index ["project_id"], name: "index_cluster_projects_on_project_id"
Shinya Maeda's avatar
Shinya Maeda committed
1046 1047
  end

Tiger's avatar
Tiger committed
1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071
  create_table "cluster_providers_aws", force: :cascade do |t|
    t.bigint "cluster_id", null: false
    t.integer "created_by_user_id"
    t.integer "num_nodes", null: false
    t.integer "status", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.string "key_name", limit: 255, null: false
    t.string "role_arn", limit: 2048, null: false
    t.string "region", limit: 255, null: false
    t.string "vpc_id", limit: 255, null: false
    t.string "subnet_ids", limit: 255, default: [], null: false, array: true
    t.string "security_group_id", limit: 255, null: false
    t.string "instance_type", limit: 255, null: false
    t.string "access_key_id", limit: 255
    t.string "encrypted_secret_access_key_iv", limit: 255
    t.text "encrypted_secret_access_key"
    t.text "session_token"
    t.text "status_reason"
    t.index ["cluster_id", "status"], name: "index_cluster_providers_aws_on_cluster_id_and_status"
    t.index ["cluster_id"], name: "index_cluster_providers_aws_on_cluster_id", unique: true
    t.index ["created_by_user_id"], name: "index_cluster_providers_aws_on_created_by_user_id"
  end

Jasper Maes's avatar
Jasper Maes committed
1072
  create_table "cluster_providers_gcp", id: :serial, force: :cascade do |t|
Shinya Maeda's avatar
Shinya Maeda committed
1073 1074
    t.integer "cluster_id", null: false
    t.integer "status"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
1075
    t.integer "num_nodes", null: false
1076 1077
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
Shinya Maeda's avatar
Shinya Maeda committed
1078 1079 1080 1081 1082 1083 1084 1085
    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"
1086
    t.boolean "legacy_abac", default: false, null: false
1087 1088
    t.boolean "cloud_run", default: false, null: false
    t.index ["cloud_run"], name: "index_cluster_providers_gcp_on_cloud_run"
1089
    t.index ["cluster_id"], name: "index_cluster_providers_gcp_on_cluster_id", unique: true
Shinya Maeda's avatar
Shinya Maeda committed
1090 1091
  end

Jasper Maes's avatar
Jasper Maes committed
1092
  create_table "clusters", id: :serial, force: :cascade do |t|
1093
    t.integer "user_id"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
1094 1095
    t.integer "provider_type"
    t.integer "platform_type"
1096 1097
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
1098 1099
    t.boolean "enabled", default: true
    t.string "name", null: false
1100
    t.string "environment_scope", default: "*", null: false
1101
    t.integer "cluster_type", limit: 2, default: 3, null: false
1102
    t.string "domain"
1103
    t.boolean "managed", default: true, null: false
1104
    t.boolean "namespace_per_environment", default: true, null: false
1105
    t.integer "management_project_id"
1106 1107
    t.integer "cleanup_status", limit: 2, default: 1, null: false
    t.text "cleanup_status_reason"
1108
    t.index ["enabled"], name: "index_clusters_on_enabled"
1109
    t.index ["management_project_id"], name: "index_clusters_on_management_project_id", where: "(management_project_id IS NOT NULL)"
1110
    t.index ["user_id"], name: "index_clusters_on_user_id"
Shinya Maeda's avatar
Shinya Maeda committed
1111 1112
  end

Jasper Maes's avatar
Jasper Maes committed
1113
  create_table "clusters_applications_cert_managers", id: :serial, force: :cascade do |t|
1114 1115 1116 1117 1118 1119 1120
    t.integer "cluster_id", null: false
    t.integer "status", null: false
    t.string "version", null: false
    t.string "email", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.text "status_reason"
1121
    t.index ["cluster_id"], name: "index_clusters_applications_cert_managers_on_cluster_id", unique: true
1122 1123
  end

1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134
  create_table "clusters_applications_crossplane", id: :serial, force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.bigint "cluster_id", null: false
    t.integer "status", null: false
    t.string "version", limit: 255, null: false
    t.string "stack", limit: 255, null: false
    t.text "status_reason"
    t.index ["cluster_id"], name: "index_clusters_applications_crossplane_on_cluster_id", unique: true
  end

1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145
  create_table "clusters_applications_elastic_stacks", force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.bigint "cluster_id", null: false
    t.integer "status", null: false
    t.string "version", limit: 255, null: false
    t.string "kibana_hostname", limit: 255
    t.text "status_reason"
    t.index ["cluster_id"], name: "index_clusters_applications_elastic_stacks_on_cluster_id", unique: true
  end

Jasper Maes's avatar
Jasper Maes committed
1146
  create_table "clusters_applications_helm", id: :serial, force: :cascade do |t|
1147
    t.integer "cluster_id", null: false
1148 1149
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
1150 1151 1152
    t.integer "status", null: false
    t.string "version", null: false
    t.text "status_reason"
1153 1154 1155
    t.text "encrypted_ca_key"
    t.text "encrypted_ca_key_iv"
    t.text "ca_cert"
1156
    t.index ["cluster_id"], name: "index_clusters_applications_helm_on_cluster_id", unique: true
1157
  end
1158

Jasper Maes's avatar
Jasper Maes committed
1159
  create_table "clusters_applications_ingress", id: :serial, force: :cascade do |t|
Kamil Trzcinski's avatar
Kamil Trzcinski committed
1160
    t.integer "cluster_id", null: false
1161 1162
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
Kamil Trzcinski's avatar
Kamil Trzcinski committed
1163 1164 1165 1166 1167
    t.integer "status", null: false
    t.integer "ingress_type", null: false
    t.string "version", null: false
    t.string "cluster_ip"
    t.text "status_reason"
1168
    t.string "external_ip"
1169
    t.string "external_hostname"
1170
    t.boolean "modsecurity_enabled"
1171
    t.index ["cluster_id"], name: "index_clusters_applications_ingress_on_cluster_id", unique: true
Kamil Trzcinski's avatar
Kamil Trzcinski committed
1172 1173
  end

Jasper Maes's avatar
Jasper Maes committed
1174
  create_table "clusters_applications_jupyter", id: :serial, force: :cascade do |t|
1175
    t.integer "cluster_id", null: false
1176
    t.integer "oauth_application_id"
1177 1178 1179 1180 1181
    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
1182
    t.text "status_reason"
1183 1184
    t.index ["cluster_id"], name: "index_clusters_applications_jupyter_on_cluster_id", unique: true
    t.index ["oauth_application_id"], name: "index_clusters_applications_jupyter_on_oauth_application_id"
1185 1186
  end

Jasper Maes's avatar
Jasper Maes committed
1187
  create_table "clusters_applications_knative", id: :serial, force: :cascade do |t|
Chris Baumbauer's avatar
Chris Baumbauer committed
1188 1189 1190 1191 1192
    t.integer "cluster_id", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "status", null: false
    t.string "version", null: false
1193
    t.string "hostname"
Chris Baumbauer's avatar
Chris Baumbauer committed
1194
    t.text "status_reason"
1195
    t.string "external_ip"
1196
    t.string "external_hostname"
1197
    t.index ["cluster_id"], name: "index_clusters_applications_knative_on_cluster_id", unique: true
Chris Baumbauer's avatar
Chris Baumbauer committed
1198 1199
  end

Jasper Maes's avatar
Jasper Maes committed
1200
  create_table "clusters_applications_prometheus", id: :serial, force: :cascade do |t|
1201 1202 1203 1204 1205 1206
    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
1207
    t.datetime_with_timezone "last_update_started_at"
1208 1209
    t.string "encrypted_alert_manager_token"
    t.string "encrypted_alert_manager_token_iv"
1210
    t.index ["cluster_id"], name: "index_clusters_applications_prometheus_on_cluster_id", unique: true
1211 1212
  end

Jasper Maes's avatar
Jasper Maes committed
1213
  create_table "clusters_applications_runners", id: :serial, force: :cascade do |t|
1214 1215 1216 1217 1218 1219 1220
    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"
1221
    t.boolean "privileged", default: true, null: false
1222 1223
    t.index ["cluster_id"], name: "index_clusters_applications_runners_on_cluster_id", unique: true
    t.index ["runner_id"], name: "index_clusters_applications_runners_on_runner_id"
1224 1225
  end

Jasper Maes's avatar
Jasper Maes committed
1226
  create_table "clusters_kubernetes_namespaces", force: :cascade do |t|
1227 1228 1229 1230 1231 1232 1233 1234 1235
    t.integer "cluster_id", null: false
    t.integer "project_id"
    t.integer "cluster_project_id"
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.text "encrypted_service_account_token"
    t.string "encrypted_service_account_token_iv"
    t.string "namespace", null: false
    t.string "service_account_name"
1236
    t.bigint "environment_id"
1237
    t.index ["cluster_id", "namespace"], name: "kubernetes_namespaces_cluster_and_namespace", unique: true
1238
    t.index ["cluster_id", "project_id", "environment_id"], name: "index_kubernetes_namespaces_on_cluster_project_environment_id", unique: true
1239 1240
    t.index ["cluster_id"], name: "index_clusters_kubernetes_namespaces_on_cluster_id"
    t.index ["cluster_project_id"], name: "index_clusters_kubernetes_namespaces_on_cluster_project_id"
1241
    t.index ["environment_id"], name: "index_clusters_kubernetes_namespaces_on_environment_id"
1242
    t.index ["project_id"], name: "index_clusters_kubernetes_namespaces_on_project_id"
1243 1244
  end

1245 1246 1247 1248 1249
  create_table "commit_user_mentions", force: :cascade do |t|
    t.integer "note_id", null: false
    t.integer "mentioned_users_ids", array: true
    t.integer "mentioned_projects_ids", array: true
    t.integer "mentioned_groups_ids", array: true
1250 1251
    t.string "commit_id", null: false
    t.index ["commit_id", "note_id"], name: "commit_id_and_note_id_index"
1252 1253 1254
    t.index ["note_id"], name: "index_commit_user_mentions_on_note_id", unique: true
  end

1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266
  create_table "container_expiration_policies", primary_key: "project_id", id: :bigint, default: nil, force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.datetime_with_timezone "next_run_at"
    t.string "name_regex", limit: 255
    t.string "cadence", limit: 12, default: "7d", null: false
    t.string "older_than", limit: 12
    t.integer "keep_n"
    t.boolean "enabled", default: false, null: false
    t.index ["next_run_at", "enabled"], name: "index_container_expiration_policies_on_next_run_at_and_enabled"
  end

Jasper Maes's avatar
Jasper Maes committed
1267
  create_table "container_repositories", id: :serial, force: :cascade do |t|
1268 1269 1270 1271
    t.integer "project_id", null: false
    t.string "name", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
1272 1273
    t.index ["project_id", "name"], name: "index_container_repositories_on_project_id_and_name", unique: true
    t.index ["project_id"], name: "index_container_repositories_on_project_id"
1274 1275
  end

Jasper Maes's avatar
Jasper Maes committed
1276
  create_table "conversational_development_index_metrics", id: :serial, force: :cascade do |t|
1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298
    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
1299 1300 1301 1302 1303 1304 1305 1306 1307 1308
    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
1309 1310
  end

Jasper Maes's avatar
Jasper Maes committed
1311
  create_table "dependency_proxy_blobs", id: :serial, force: :cascade do |t|
1312 1313 1314 1315 1316 1317 1318
    t.integer "group_id", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.bigint "size"
    t.integer "file_store"
    t.string "file_name", null: false
    t.text "file", null: false
1319
    t.index ["group_id", "file_name"], name: "index_dependency_proxy_blobs_on_group_id_and_file_name"
1320 1321
  end

Jasper Maes's avatar
Jasper Maes committed
1322
  create_table "dependency_proxy_group_settings", id: :serial, force: :cascade do |t|
1323 1324 1325 1326
    t.integer "group_id", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.boolean "enabled", default: false, null: false
1327
    t.index ["group_id"], name: "index_dependency_proxy_group_settings_on_group_id"
1328 1329
  end

Jasper Maes's avatar
Jasper Maes committed
1330
  create_table "deploy_keys_projects", id: :serial, force: :cascade do |t|
1331 1332
    t.integer "deploy_key_id", null: false
    t.integer "project_id", null: false
Kamil Trzcinski's avatar
Kamil Trzcinski committed
1333 1334
    t.datetime "created_at"
    t.datetime "updated_at"
1335
    t.boolean "can_push", default: false, null: false
1336
    t.index ["deploy_key_id"], name: "index_deploy_keys_projects_on_deploy_key_id"
1337
    t.index ["project_id"], name: "index_deploy_keys_projects_on_project_id"
1338
  end
1339

Jasper Maes's avatar
Jasper Maes committed
1340
  create_table "deploy_tokens", id: :serial, force: :cascade do |t|
1341
    t.boolean "revoked", default: false
1342 1343
    t.boolean "read_repository", default: false, null: false
    t.boolean "read_registry", default: false, null: false
1344
    t.datetime_with_timezone "expires_at", null: false
1345
    t.datetime_with_timezone "created_at", null: false
1346
    t.string "name", null: false
1347
    t.string "token"
1348
    t.string "username"
1349
    t.string "token_encrypted", limit: 255
1350 1351
    t.index ["token", "expires_at", "id"], name: "index_deploy_tokens_on_token_and_expires_at_and_id", where: "(revoked IS FALSE)"
    t.index ["token"], name: "index_deploy_tokens_on_token", unique: true
1352
    t.index ["token_encrypted"], name: "index_deploy_tokens_on_token_encrypted", unique: true
1353 1354
  end

1355 1356 1357 1358 1359 1360 1361
  create_table "deployment_merge_requests", id: false, force: :cascade do |t|
    t.integer "deployment_id", null: false
    t.integer "merge_request_id", null: false
    t.index ["deployment_id", "merge_request_id"], name: "idx_deployment_merge_requests_unique_index", unique: true
    t.index ["merge_request_id"], name: "index_deployment_merge_requests_on_merge_request_id"
  end

Jasper Maes's avatar
Jasper Maes committed
1362
  create_table "deployments", id: :serial, force: :cascade do |t|
1363 1364 1365 1366 1367 1368 1369 1370 1371
    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"
1372 1373
    t.datetime "created_at"
    t.datetime "updated_at"
1374
    t.string "on_stop"
1375
    t.integer "status", limit: 2, null: false
1376
    t.datetime_with_timezone "finished_at"
1377
    t.integer "cluster_id"
1378
    t.index ["cluster_id", "status"], name: "index_deployments_on_cluster_id_and_status"
1379 1380 1381 1382 1383 1384
    t.index ["created_at"], name: "index_deployments_on_created_at"
    t.index ["deployable_type", "deployable_id"], name: "index_deployments_on_deployable_type_and_deployable_id"
    t.index ["environment_id", "id"], name: "index_deployments_on_environment_id_and_id"
    t.index ["environment_id", "iid", "project_id"], name: "index_deployments_on_environment_id_and_iid_and_project_id"
    t.index ["environment_id", "status"], name: "index_deployments_on_environment_id_and_status"
    t.index ["id"], name: "partial_index_deployments_for_legacy_successful_deployments", where: "((finished_at IS NULL) AND (status = 2))"
1385
    t.index ["project_id", "id"], name: "index_deployments_on_project_id_and_id", order: { id: :desc }
1386
    t.index ["project_id", "iid"], name: "index_deployments_on_project_id_and_iid", unique: true
1387
    t.index ["project_id", "ref"], name: "index_deployments_on_project_id_and_ref"
1388 1389
    t.index ["project_id", "status", "created_at"], name: "index_deployments_on_project_id_and_status_and_created_at"
    t.index ["project_id", "status"], name: "index_deployments_on_project_id_and_status"
1390
    t.index ["project_id", "updated_at", "id"], name: "index_deployments_on_project_id_and_updated_at_and_id", order: { updated_at: :desc, id: :desc }
1391
    t.index ["project_id"], name: "partial_index_deployments_for_project_id_and_tag", where: "(tag IS TRUE)"
1392 1393
  end

1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405
  create_table "description_versions", force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "issue_id"
    t.integer "merge_request_id"
    t.integer "epic_id"
    t.text "description"
    t.index ["epic_id"], name: "index_description_versions_on_epic_id", where: "(epic_id IS NOT NULL)"
    t.index ["issue_id"], name: "index_description_versions_on_issue_id", where: "(issue_id IS NOT NULL)"
    t.index ["merge_request_id"], name: "index_description_versions_on_merge_request_id", where: "(merge_request_id IS NOT NULL)"
  end

Jasper Maes's avatar
Jasper Maes committed
1406
  create_table "design_management_designs", force: :cascade do |t|
1407
    t.integer "project_id", null: false
1408
    t.integer "issue_id"
1409
    t.string "filename", null: false
1410 1411
    t.index ["issue_id", "filename"], name: "index_design_management_designs_on_issue_id_and_filename", unique: true
    t.index ["project_id"], name: "index_design_management_designs_on_project_id"
1412 1413
  end

1414 1415 1416
  create_table "design_management_designs_versions", id: false, force: :cascade do |t|
    t.bigint "design_id", null: false
    t.bigint "version_id", null: false
1417
    t.integer "event", limit: 2, default: 0, null: false
1418 1419
    t.index ["design_id", "version_id"], name: "design_management_designs_versions_uniqueness", unique: true
    t.index ["design_id"], name: "index_design_management_designs_versions_on_design_id"
1420
    t.index ["event"], name: "index_design_management_designs_versions_on_event"
1421
    t.index ["version_id"], name: "index_design_management_designs_versions_on_version_id"
1422 1423
  end

Jasper Maes's avatar
Jasper Maes committed
1424
  create_table "design_management_versions", force: :cascade do |t|
1425
    t.binary "sha", null: false
1426
    t.bigint "issue_id"
1427
    t.datetime_with_timezone "created_at"
1428 1429
    t.integer "author_id"
    t.index ["author_id"], name: "index_design_management_versions_on_author_id", where: "(author_id IS NOT NULL)"
1430 1431
    t.index ["issue_id"], name: "index_design_management_versions_on_issue_id"
    t.index ["sha", "issue_id"], name: "index_design_management_versions_on_sha_and_issue_id", unique: true
1432 1433
  end

1434 1435 1436 1437 1438 1439 1440 1441 1442 1443
  create_table "design_user_mentions", force: :cascade do |t|
    t.integer "design_id", null: false
    t.integer "note_id", null: false
    t.integer "mentioned_users_ids", array: true
    t.integer "mentioned_projects_ids", array: true
    t.integer "mentioned_groups_ids", array: true
    t.index ["design_id", "note_id"], name: "design_user_mentions_on_design_id_and_note_id_index"
    t.index ["note_id"], name: "index_design_user_mentions_on_note_id", unique: true
  end

Jasper Maes's avatar
Jasper Maes committed
1444
  create_table "draft_notes", force: :cascade do |t|
1445 1446 1447 1448 1449 1450 1451 1452
    t.integer "merge_request_id", null: false
    t.integer "author_id", null: false
    t.boolean "resolve_discussion", default: false, null: false
    t.string "discussion_id"
    t.text "note", null: false
    t.text "position"
    t.text "original_position"
    t.text "change_position"
1453
    t.binary "commit_id"
1454 1455 1456
    t.index ["author_id"], name: "index_draft_notes_on_author_id"
    t.index ["discussion_id"], name: "index_draft_notes_on_discussion_id"
    t.index ["merge_request_id"], name: "index_draft_notes_on_merge_request_id"
1457 1458
  end

1459 1460 1461 1462
  create_table "elasticsearch_indexed_namespaces", id: false, force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "namespace_id"
1463
    t.index ["created_at"], name: "index_elasticsearch_indexed_namespaces_on_created_at"
1464
    t.index ["namespace_id"], name: "index_elasticsearch_indexed_namespaces_on_namespace_id", unique: true
1465 1466 1467 1468 1469 1470
  end

  create_table "elasticsearch_indexed_projects", id: false, force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "project_id"
1471
    t.index ["project_id"], name: "index_elasticsearch_indexed_projects_on_project_id", unique: true
1472 1473
  end

Jasper Maes's avatar
Jasper Maes committed
1474
  create_table "emails", id: :serial, force: :cascade do |t|
1475 1476
    t.integer "user_id", null: false
    t.string "email", null: false
1477 1478
    t.datetime "created_at"
    t.datetime "updated_at"
1479
    t.string "confirmation_token"
1480 1481
    t.datetime "confirmed_at"
    t.datetime "confirmation_sent_at"
1482 1483 1484
    t.index ["confirmation_token"], name: "index_emails_on_confirmation_token", unique: true
    t.index ["email"], name: "index_emails_on_email", unique: true
    t.index ["user_id"], name: "index_emails_on_user_id"
1485 1486
  end

Jasper Maes's avatar
Jasper Maes committed
1487
  create_table "environments", id: :serial, force: :cascade do |t|
1488
    t.integer "project_id", null: false
1489
    t.string "name", null: false
1490 1491
    t.datetime "created_at"
    t.datetime "updated_at"
1492 1493
    t.string "external_url"
    t.string "environment_type"
1494
    t.string "state", default: "available", null: false
Nick Thomas's avatar
Nick Thomas committed
1495
    t.string "slug", null: false
1496
    t.datetime_with_timezone "auto_stop_at"
1497 1498 1499
    t.index ["name"], name: "index_environments_on_name_varchar_pattern_ops", opclass: :varchar_pattern_ops
    t.index ["project_id", "name"], name: "index_environments_on_project_id_and_name", unique: true
    t.index ["project_id", "slug"], name: "index_environments_on_project_id_and_slug", unique: true
1500
    t.index ["project_id", "state", "environment_type"], name: "index_environments_on_project_id_state_environment_type"
1501 1502
  end

Jasper Maes's avatar
Jasper Maes committed
1503
  create_table "epic_issues", id: :serial, force: :cascade do |t|
1504 1505
    t.integer "epic_id", null: false
    t.integer "issue_id", null: false
1506
    t.integer "relative_position"
1507 1508
    t.index ["epic_id"], name: "index_epic_issues_on_epic_id"
    t.index ["issue_id"], name: "index_epic_issues_on_issue_id", unique: true
1509 1510
  end

Jasper Maes's avatar
Jasper Maes committed
1511
  create_table "epic_metrics", id: :serial, force: :cascade do |t|
Clement Ho's avatar
Clement Ho committed
1512
    t.integer "epic_id", null: false
1513 1514
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
1515
    t.index ["epic_id"], name: "index_epic_metrics"
Clement Ho's avatar
Clement Ho committed
1516 1517
  end

1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528
  create_table "epic_user_mentions", force: :cascade do |t|
    t.integer "epic_id", null: false
    t.integer "note_id"
    t.integer "mentioned_users_ids", array: true
    t.integer "mentioned_projects_ids", array: true
    t.integer "mentioned_groups_ids", array: true
    t.index ["epic_id", "note_id"], name: "epic_user_mentions_on_epic_id_and_note_id_index", unique: true
    t.index ["epic_id"], name: "epic_user_mentions_on_epic_id_index", unique: true, where: "(note_id IS NULL)"
    t.index ["note_id"], name: "index_epic_user_mentions_on_note_id", unique: true, where: "(note_id IS NOT NULL)"
  end

Jasper Maes's avatar
Jasper Maes committed
1529
  create_table "epics", id: :serial, force: :cascade do |t|
Clement Ho's avatar
Clement Ho committed
1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540
    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"
1541 1542 1543
    t.datetime "last_edited_at"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
Clement Ho's avatar
Clement Ho committed
1544 1545 1546 1547
    t.string "title", null: false
    t.string "title_html", null: false
    t.text "description"
    t.text "description_html"
1548 1549
    t.integer "start_date_sourcing_milestone_id"
    t.integer "due_date_sourcing_milestone_id"
Mark Chao's avatar
Mark Chao committed
1550 1551 1552 1553
    t.date "start_date_fixed"
    t.date "due_date_fixed"
    t.boolean "start_date_is_fixed"
    t.boolean "due_date_is_fixed"
1554 1555
    t.integer "closed_by_id"
    t.datetime "closed_at"
Jarka Košanová's avatar
Jarka Košanová committed
1556
    t.integer "parent_id"
1557
    t.integer "relative_position"
1558
    t.integer "state_id", limit: 2, default: 1, null: false
1559 1560
    t.integer "start_date_sourcing_epic_id"
    t.integer "due_date_sourcing_epic_id"
1561 1562 1563
    t.index ["assignee_id"], name: "index_epics_on_assignee_id"
    t.index ["author_id"], name: "index_epics_on_author_id"
    t.index ["closed_by_id"], name: "index_epics_on_closed_by_id"
1564
    t.index ["due_date_sourcing_epic_id"], name: "index_epics_on_due_date_sourcing_epic_id", where: "(due_date_sourcing_epic_id IS NOT NULL)"
1565 1566 1567 1568 1569 1570
    t.index ["end_date"], name: "index_epics_on_end_date"
    t.index ["group_id"], name: "index_epics_on_group_id"
    t.index ["iid"], name: "index_epics_on_iid"
    t.index ["milestone_id"], name: "index_milestone"
    t.index ["parent_id"], name: "index_epics_on_parent_id"
    t.index ["start_date"], name: "index_epics_on_start_date"
1571
    t.index ["start_date_sourcing_epic_id"], name: "index_epics_on_start_date_sourcing_epic_id", where: "(start_date_sourcing_epic_id IS NOT NULL)"
Clement Ho's avatar
Clement Ho committed
1572 1573
  end

Jasper Maes's avatar
Jasper Maes committed
1574
  create_table "events", id: :serial, force: :cascade do |t|
1575 1576 1577
    t.integer "project_id"
    t.integer "author_id", null: false
    t.integer "target_id"
1578 1579
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
1580 1581
    t.integer "action", limit: 2, null: false
    t.string "target_type"
1582
    t.bigint "group_id"
1583 1584 1585
    t.index ["action"], name: "index_events_on_action"
    t.index ["author_id", "project_id"], name: "index_events_on_author_id_and_project_id"
    t.index ["created_at", "author_id"], name: "analytics_index_events_on_created_at_and_author_id"
1586
    t.index ["group_id"], name: "index_events_on_group_id_partial", where: "(group_id IS NOT NULL)"
1587 1588 1589
    t.index ["project_id", "created_at"], name: "index_events_on_project_id_and_created_at"
    t.index ["project_id", "id"], name: "index_events_on_project_id_and_id"
    t.index ["target_type", "target_id"], name: "index_events_on_target_type_and_target_id"
1590 1591
  end

1592 1593 1594 1595 1596 1597 1598 1599 1600
  create_table "evidences", force: :cascade do |t|
    t.bigint "release_id", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.binary "summary_sha"
    t.jsonb "summary", default: {}, null: false
    t.index ["release_id"], name: "index_evidences_on_release_id"
  end

1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615
  create_table "external_pull_requests", force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.bigint "project_id", null: false
    t.integer "pull_request_iid", null: false
    t.integer "status", limit: 2, null: false
    t.string "source_branch", limit: 255, null: false
    t.string "target_branch", limit: 255, null: false
    t.string "source_repository", limit: 255, null: false
    t.string "target_repository", limit: 255, null: false
    t.binary "source_sha", null: false
    t.binary "target_sha", null: false
    t.index ["project_id", "source_branch", "target_branch"], name: "index_external_pull_requests_on_project_and_branches", unique: true
  end

Jasper Maes's avatar
Jasper Maes committed
1616
  create_table "feature_gates", id: :serial, force: :cascade do |t|
1617 1618 1619 1620 1621
    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
1622
    t.index ["feature_key", "key", "value"], name: "index_feature_gates_on_feature_key_and_key_and_value", unique: true
1623 1624
  end

Jasper Maes's avatar
Jasper Maes committed
1625
  create_table "features", id: :serial, force: :cascade do |t|
1626 1627 1628
    t.string "key", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
1629
    t.index ["key"], name: "index_features_on_key", unique: true
1630 1631
  end

Jasper Maes's avatar
Jasper Maes committed
1632
  create_table "fork_network_members", id: :serial, force: :cascade do |t|
1633 1634 1635
    t.integer "fork_network_id", null: false
    t.integer "project_id", null: false
    t.integer "forked_from_project_id"
1636 1637 1638
    t.index ["fork_network_id"], name: "index_fork_network_members_on_fork_network_id"
    t.index ["forked_from_project_id"], name: "index_fork_network_members_on_forked_from_project_id"
    t.index ["project_id"], name: "index_fork_network_members_on_project_id", unique: true
1639 1640
  end

Jasper Maes's avatar
Jasper Maes committed
1641
  create_table "fork_networks", id: :serial, force: :cascade do |t|
1642 1643
    t.integer "root_project_id"
    t.string "deleted_root_project_name"
1644
    t.index ["root_project_id"], name: "index_fork_networks_on_root_project_id", unique: true
1645 1646
  end

Jasper Maes's avatar
Jasper Maes committed
1647
  create_table "forked_project_links", id: :serial, force: :cascade do |t|
1648 1649
    t.integer "forked_to_project_id", null: false
    t.integer "forked_from_project_id", null: false
Kamil Trzcinski's avatar
Kamil Trzcinski committed
1650 1651
    t.datetime "created_at"
    t.datetime "updated_at"
1652
    t.index ["forked_to_project_id"], name: "index_forked_project_links_on_forked_to_project_id", unique: true
1653 1654
  end

Jasper Maes's avatar
Jasper Maes committed
1655
  create_table "geo_cache_invalidation_events", force: :cascade do |t|
1656 1657 1658
    t.string "key", null: false
  end

1659 1660 1661 1662 1663
  create_table "geo_container_repository_updated_events", force: :cascade do |t|
    t.integer "container_repository_id", null: false
    t.index ["container_repository_id"], name: "idx_geo_con_rep_updated_events_on_container_repository_id"
  end

Jasper Maes's avatar
Jasper Maes committed
1664
  create_table "geo_event_log", force: :cascade do |t|
1665
    t.datetime "created_at", null: false
1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677
    t.bigint "repository_updated_event_id"
    t.bigint "repository_deleted_event_id"
    t.bigint "repository_renamed_event_id"
    t.bigint "repositories_changed_event_id"
    t.bigint "repository_created_event_id"
    t.bigint "hashed_storage_migrated_event_id"
    t.bigint "lfs_object_deleted_event_id"
    t.bigint "hashed_storage_attachments_event_id"
    t.bigint "upload_deleted_event_id"
    t.bigint "job_artifact_deleted_event_id"
    t.bigint "reset_checksum_event_id"
    t.bigint "cache_invalidation_event_id"
1678
    t.bigint "container_repository_updated_event_id"
1679
    t.index ["cache_invalidation_event_id"], name: "index_geo_event_log_on_cache_invalidation_event_id", where: "(cache_invalidation_event_id IS NOT NULL)"
1680
    t.index ["container_repository_updated_event_id"], name: "index_geo_event_log_on_container_repository_updated_event_id"
1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691
    t.index ["hashed_storage_attachments_event_id"], name: "index_geo_event_log_on_hashed_storage_attachments_event_id", where: "(hashed_storage_attachments_event_id IS NOT NULL)"
    t.index ["hashed_storage_migrated_event_id"], name: "index_geo_event_log_on_hashed_storage_migrated_event_id", where: "(hashed_storage_migrated_event_id IS NOT NULL)"
    t.index ["job_artifact_deleted_event_id"], name: "index_geo_event_log_on_job_artifact_deleted_event_id", where: "(job_artifact_deleted_event_id IS NOT NULL)"
    t.index ["lfs_object_deleted_event_id"], name: "index_geo_event_log_on_lfs_object_deleted_event_id", where: "(lfs_object_deleted_event_id IS NOT NULL)"
    t.index ["repositories_changed_event_id"], name: "index_geo_event_log_on_repositories_changed_event_id", where: "(repositories_changed_event_id IS NOT NULL)"
    t.index ["repository_created_event_id"], name: "index_geo_event_log_on_repository_created_event_id", where: "(repository_created_event_id IS NOT NULL)"
    t.index ["repository_deleted_event_id"], name: "index_geo_event_log_on_repository_deleted_event_id", where: "(repository_deleted_event_id IS NOT NULL)"
    t.index ["repository_renamed_event_id"], name: "index_geo_event_log_on_repository_renamed_event_id", where: "(repository_renamed_event_id IS NOT NULL)"
    t.index ["repository_updated_event_id"], name: "index_geo_event_log_on_repository_updated_event_id", where: "(repository_updated_event_id IS NOT NULL)"
    t.index ["reset_checksum_event_id"], name: "index_geo_event_log_on_reset_checksum_event_id", where: "(reset_checksum_event_id IS NOT NULL)"
    t.index ["upload_deleted_event_id"], name: "index_geo_event_log_on_upload_deleted_event_id", where: "(upload_deleted_event_id IS NOT NULL)"
1692
  end
1693

Jasper Maes's avatar
Jasper Maes committed
1694
  create_table "geo_hashed_storage_attachments_events", force: :cascade do |t|
1695 1696 1697
    t.integer "project_id", null: false
    t.text "old_attachments_path", null: false
    t.text "new_attachments_path", null: false
1698
    t.index ["project_id"], name: "index_geo_hashed_storage_attachments_events_on_project_id"
1699 1700
  end

Jasper Maes's avatar
Jasper Maes committed
1701
  create_table "geo_hashed_storage_migrated_events", force: :cascade do |t|
1702 1703 1704 1705 1706 1707 1708 1709
    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
1710 1711
    t.text "old_design_disk_path"
    t.text "new_design_disk_path"
1712
    t.index ["project_id"], name: "index_geo_hashed_storage_migrated_events_on_project_id"
1713 1714
  end

Jasper Maes's avatar
Jasper Maes committed
1715
  create_table "geo_job_artifact_deleted_events", force: :cascade do |t|
1716 1717
    t.integer "job_artifact_id", null: false
    t.string "file_path", null: false
1718
    t.index ["job_artifact_id"], name: "index_geo_job_artifact_deleted_events_on_job_artifact_id"
1719 1720
  end

Jasper Maes's avatar
Jasper Maes committed
1721
  create_table "geo_lfs_object_deleted_events", force: :cascade do |t|
1722 1723 1724
    t.integer "lfs_object_id", null: false
    t.string "oid", null: false
    t.string "file_path", null: false
1725
    t.index ["lfs_object_id"], name: "index_geo_lfs_object_deleted_events_on_lfs_object_id"
1726 1727
  end

Jasper Maes's avatar
Jasper Maes committed
1728
  create_table "geo_node_namespace_links", id: :serial, force: :cascade do |t|
1729
    t.integer "geo_node_id", null: false
1730
    t.integer "namespace_id", null: false
1731 1732
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
1733 1734 1735
    t.index ["geo_node_id", "namespace_id"], name: "index_geo_node_namespace_links_on_geo_node_id_and_namespace_id", unique: true
    t.index ["geo_node_id"], name: "index_geo_node_namespace_links_on_geo_node_id"
    t.index ["namespace_id"], name: "index_geo_node_namespace_links_on_namespace_id"
1736 1737
  end

Jasper Maes's avatar
Jasper Maes committed
1738
  create_table "geo_node_statuses", id: :serial, force: :cascade do |t|
1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749
    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"
1750
    t.datetime "last_event_date"
1751
    t.integer "cursor_last_event_id"
1752 1753 1754 1755
    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"
1756
    t.string "status_message"
1757 1758
    t.integer "replication_slots_count"
    t.integer "replication_slots_used_count"
1759
    t.bigint "replication_slots_max_retained_wal_bytes"
1760 1761
    t.integer "wikis_synced_count"
    t.integer "wikis_failed_count"
1762 1763 1764
    t.integer "job_artifacts_count"
    t.integer "job_artifacts_synced_count"
    t.integer "job_artifacts_failed_count"
1765 1766
    t.string "version"
    t.string "revision"
1767 1768 1769 1770
    t.integer "repositories_verified_count"
    t.integer "repositories_verification_failed_count"
    t.integer "wikis_verified_count"
    t.integer "wikis_verification_failed_count"
1771 1772 1773
    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"
1774 1775 1776 1777 1778 1779
    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"
1780
    t.binary "storage_configuration_digest"
1781 1782
    t.integer "repositories_retrying_verification_count"
    t.integer "wikis_retrying_verification_count"
1783
    t.integer "projects_count"
1784 1785 1786 1787
    t.integer "container_repositories_count"
    t.integer "container_repositories_synced_count"
    t.integer "container_repositories_failed_count"
    t.integer "container_repositories_registry_count"
1788 1789 1790 1791
    t.integer "design_repositories_count"
    t.integer "design_repositories_synced_count"
    t.integer "design_repositories_failed_count"
    t.integer "design_repositories_registry_count"
1792
    t.index ["geo_node_id"], name: "index_geo_node_statuses_on_geo_node_id", unique: true
1793 1794
  end

Jasper Maes's avatar
Jasper Maes committed
1795
  create_table "geo_nodes", id: :serial, force: :cascade do |t|
1796
    t.boolean "primary", default: false, null: false
1797
    t.integer "oauth_application_id"
1798
    t.boolean "enabled", default: true, null: false
1799 1800 1801
    t.string "access_key"
    t.string "encrypted_secret_access_key"
    t.string "encrypted_secret_access_key_iv"
1802
    t.string "clone_url_prefix"
1803 1804
    t.integer "files_max_capacity", default: 10, null: false
    t.integer "repos_max_capacity", default: 25, null: false
1805
    t.string "url", null: false
1806 1807
    t.string "selective_sync_type"
    t.text "selective_sync_shards"
1808
    t.integer "verification_max_capacity", default: 100, null: false
1809
    t.integer "minimum_reverification_interval", default: 7, null: false
1810
    t.string "internal_url"
1811
    t.string "name", null: false
1812
    t.integer "container_repositories_max_capacity", default: 10, null: false
1813 1814
    t.datetime_with_timezone "created_at"
    t.datetime_with_timezone "updated_at"
1815
    t.boolean "sync_object_storage", default: false, null: false
1816 1817 1818
    t.index ["access_key"], name: "index_geo_nodes_on_access_key"
    t.index ["name"], name: "index_geo_nodes_on_name", unique: true
    t.index ["primary"], name: "index_geo_nodes_on_primary"
1819 1820
  end

Jasper Maes's avatar
Jasper Maes committed
1821
  create_table "geo_repositories_changed_events", force: :cascade do |t|
1822
    t.integer "geo_node_id", null: false
1823
    t.index ["geo_node_id"], name: "index_geo_repositories_changed_events_on_geo_node_id"
1824 1825
  end

Jasper Maes's avatar
Jasper Maes committed
1826
  create_table "geo_repository_created_events", force: :cascade do |t|
1827 1828 1829 1830 1831
    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
1832
    t.index ["project_id"], name: "index_geo_repository_created_events_on_project_id"
1833 1834
  end

Jasper Maes's avatar
Jasper Maes committed
1835
  create_table "geo_repository_deleted_events", force: :cascade do |t|
Stan Hu's avatar
Stan Hu committed
1836
    t.integer "project_id", null: false
1837
    t.text "repository_storage_name", null: false
Stan Hu's avatar
Stan Hu committed
1838 1839 1840
    t.text "deleted_path", null: false
    t.text "deleted_wiki_path"
    t.text "deleted_project_name", null: false
1841
    t.index ["project_id"], name: "index_geo_repository_deleted_events_on_project_id"
Stan Hu's avatar
Stan Hu committed
1842 1843
  end

Jasper Maes's avatar
Jasper Maes committed
1844
  create_table "geo_repository_renamed_events", force: :cascade do |t|
1845 1846
    t.integer "project_id", null: false
    t.text "repository_storage_name", null: false
1847 1848
    t.text "old_path_with_namespace", null: false
    t.text "new_path_with_namespace", null: false
1849 1850
    t.text "old_wiki_path_with_namespace", null: false
    t.text "new_wiki_path_with_namespace", null: false
1851 1852
    t.text "old_path", null: false
    t.text "new_path", null: false
1853
    t.index ["project_id"], name: "index_geo_repository_renamed_events_on_project_id"
1854 1855
  end

Jasper Maes's avatar
Jasper Maes committed
1856
  create_table "geo_repository_updated_events", force: :cascade do |t|
1857 1858
    t.integer "branches_affected", null: false
    t.integer "tags_affected", null: false
1859
    t.integer "project_id", null: false
1860
    t.integer "source", limit: 2, null: false
1861 1862
    t.boolean "new_branch", default: false, null: false
    t.boolean "remove_branch", default: false, null: false
1863
    t.text "ref"
1864 1865
    t.index ["project_id"], name: "index_geo_repository_updated_events_on_project_id"
    t.index ["source"], name: "index_geo_repository_updated_events_on_source"
1866 1867
  end

Jasper Maes's avatar
Jasper Maes committed
1868
  create_table "geo_reset_checksum_events", force: :cascade do |t|
1869
    t.integer "project_id", null: false
1870
    t.index ["project_id"], name: "index_geo_reset_checksum_events_on_project_id"
1871 1872
  end

Jasper Maes's avatar
Jasper Maes committed
1873
  create_table "geo_upload_deleted_events", force: :cascade do |t|
1874 1875 1876 1877 1878
    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
1879
    t.index ["upload_id"], name: "index_geo_upload_deleted_events_on_upload_id"
1880 1881
  end

1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895
  create_table "gitlab_subscription_histories", force: :cascade do |t|
    t.datetime_with_timezone "gitlab_subscription_created_at"
    t.datetime_with_timezone "gitlab_subscription_updated_at"
    t.date "start_date"
    t.date "end_date"
    t.date "trial_ends_on"
    t.integer "namespace_id"
    t.integer "hosted_plan_id"
    t.integer "max_seats_used"
    t.integer "seats"
    t.boolean "trial"
    t.integer "change_type", limit: 2
    t.bigint "gitlab_subscription_id", null: false
    t.datetime_with_timezone "created_at"
1896
    t.date "trial_starts_on"
1897 1898 1899
    t.index ["gitlab_subscription_id"], name: "index_gitlab_subscription_histories_on_gitlab_subscription_id"
  end

Jasper Maes's avatar
Jasper Maes committed
1900
  create_table "gitlab_subscriptions", force: :cascade do |t|
1901 1902 1903 1904 1905 1906 1907 1908 1909 1910
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.date "start_date"
    t.date "end_date"
    t.date "trial_ends_on"
    t.integer "namespace_id"
    t.integer "hosted_plan_id"
    t.integer "max_seats_used", default: 0
    t.integer "seats", default: 0
    t.boolean "trial", default: false
1911
    t.date "trial_starts_on"
1912 1913
    t.index ["hosted_plan_id"], name: "index_gitlab_subscriptions_on_hosted_plan_id"
    t.index ["namespace_id"], name: "index_gitlab_subscriptions_on_namespace_id", unique: true
1914 1915
  end

Jasper Maes's avatar
Jasper Maes committed
1916
  create_table "gpg_key_subkeys", id: :serial, force: :cascade do |t|
1917
    t.integer "gpg_key_id", null: false
1918 1919
    t.binary "keyid"
    t.binary "fingerprint"
1920 1921 1922
    t.index ["fingerprint"], name: "index_gpg_key_subkeys_on_fingerprint", unique: true
    t.index ["gpg_key_id"], name: "index_gpg_key_subkeys_on_gpg_key_id"
    t.index ["keyid"], name: "index_gpg_key_subkeys_on_keyid", unique: true
1923 1924
  end

Jasper Maes's avatar
Jasper Maes committed
1925
  create_table "gpg_keys", id: :serial, force: :cascade do |t|
1926 1927
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
1928
    t.integer "user_id"
1929 1930
    t.binary "primary_keyid"
    t.binary "fingerprint"
1931
    t.text "key"
1932 1933 1934
    t.index ["fingerprint"], name: "index_gpg_keys_on_fingerprint", unique: true
    t.index ["primary_keyid"], name: "index_gpg_keys_on_primary_keyid", unique: true
    t.index ["user_id"], name: "index_gpg_keys_on_user_id"
Alexis Reigel's avatar
Alexis Reigel committed
1935 1936
  end

Jasper Maes's avatar
Jasper Maes committed
1937
  create_table "gpg_signatures", id: :serial, force: :cascade do |t|
1938 1939
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
1940 1941
    t.integer "project_id"
    t.integer "gpg_key_id"
1942 1943
    t.binary "commit_sha"
    t.binary "gpg_key_primary_keyid"
1944 1945
    t.text "gpg_key_user_name"
    t.text "gpg_key_user_email"
1946
    t.integer "verification_status", limit: 2, default: 0, null: false
1947
    t.integer "gpg_key_subkey_id"
1948 1949 1950 1951 1952
    t.index ["commit_sha"], name: "index_gpg_signatures_on_commit_sha", unique: true
    t.index ["gpg_key_id"], name: "index_gpg_signatures_on_gpg_key_id"
    t.index ["gpg_key_primary_keyid"], name: "index_gpg_signatures_on_gpg_key_primary_keyid"
    t.index ["gpg_key_subkey_id"], name: "index_gpg_signatures_on_gpg_key_subkey_id"
    t.index ["project_id"], name: "index_gpg_signatures_on_project_id"
1953 1954
  end

1955 1956 1957 1958 1959 1960 1961
  create_table "grafana_integrations", force: :cascade do |t|
    t.bigint "project_id", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.string "encrypted_token", limit: 255, null: false
    t.string "encrypted_token_iv", limit: 255, null: false
    t.string "grafana_url", limit: 1024, null: false
1962
    t.boolean "enabled", default: false, null: false
1963
    t.index ["enabled"], name: "index_grafana_integrations_on_enabled", where: "(enabled IS TRUE)"
1964 1965 1966
    t.index ["project_id"], name: "index_grafana_integrations_on_project_id"
  end

Jasper Maes's avatar
Jasper Maes committed
1967
  create_table "group_custom_attributes", id: :serial, force: :cascade do |t|
1968 1969
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
1970 1971 1972
    t.integer "group_id", null: false
    t.string "key", null: false
    t.string "value", null: false
1973 1974
    t.index ["group_id", "key"], name: "index_group_custom_attributes_on_group_id_and_key", unique: true
    t.index ["key", "value"], name: "index_group_custom_attributes_on_key_and_value"
1975 1976
  end

1977 1978 1979 1980 1981 1982 1983
  create_table "group_deletion_schedules", primary_key: "group_id", id: :bigint, default: nil, force: :cascade do |t|
    t.bigint "user_id", null: false
    t.date "marked_for_deletion_on", null: false
    t.index ["marked_for_deletion_on"], name: "index_group_deletion_schedules_on_marked_for_deletion_on"
    t.index ["user_id"], name: "index_group_deletion_schedules_on_user_id"
  end

1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994
  create_table "group_group_links", force: :cascade do |t|
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.bigint "shared_group_id", null: false
    t.bigint "shared_with_group_id", null: false
    t.date "expires_at"
    t.integer "group_access", limit: 2, default: 30, null: false
    t.index ["shared_group_id", "shared_with_group_id"], name: "index_group_group_links_on_shared_group_and_shared_with_group", unique: true
    t.index ["shared_with_group_id"], name: "index_group_group_links_on_shared_with_group_id"
  end

Jasper Maes's avatar
Jasper Maes committed
1995
  create_table "historical_data", id: :serial, force: :cascade do |t|
1996 1997 1998 1999 2000 2001
    t.date "date", null: false
    t.integer "active_user_count"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

Jasper Maes's avatar
Jasper Maes committed
2002
  create_table "identities", id: :serial, force: :cascade do |t|
2003 2004 2005
    t.string "extern_uid"
    t.string "provider"
    t.integer "user_id"
2006 2007
    t.datetime "created_at"
    t.datetime "updated_at"
2008
    t.string "secondary_extern_uid"
2009
    t.integer "saml_provider_id"
2010
    t.index "lower((extern_uid)::text), provider", name: "index_on_identities_lower_extern_uid_and_provider"
2011 2012
    t.index ["saml_provider_id"], name: "index_identities_on_saml_provider_id", where: "(saml_provider_id IS NOT NULL)"
    t.index ["user_id"], name: "index_identities_on_user_id"
2013 2014
  end

Jasper Maes's avatar
Jasper Maes committed
2015
  create_table "import_export_uploads", id: :serial, force: :cascade do |t|
2016 2017 2018 2019
    t.datetime_with_timezone "updated_at", null: false
    t.integer "project_id"
    t.text "import_file"
    t.text "export_file"
George Koltsov's avatar
George Koltsov committed
2020 2021
    t.bigint "group_id"
    t.index ["group_id"], name: "index_import_export_uploads_on_group_id", unique: true, where: "(group_id IS NOT NULL)"
2022 2023
    t.index ["project_id"], name: "index_import_export_uploads_on_project_id"
    t.index ["updated_at"], name: "index_import_export_uploads_on_updated_at"
2024 2025
  end

2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037
  create_table "import_failures", force: :cascade do |t|
    t.integer "relation_index"
    t.bigint "project_id", null: false
    t.datetime_with_timezone "created_at", null: false
    t.string "relation_key", limit: 64
    t.string "exception_class", limit: 128
    t.string "correlation_id_value", limit: 128
    t.string "exception_message", limit: 255
    t.index ["correlation_id_value"], name: "index_import_failures_on_correlation_id_value"
    t.index ["project_id"], name: "index_import_failures_on_project_id"
  end

Jasper Maes's avatar
Jasper Maes committed
2038
  create_table "index_statuses", id: :serial, force: :cascade do |t|
2039
    t.integer "project_id", null: false
Valery Sizov's avatar
Valery Sizov committed
2040
    t.datetime "indexed_at"
2041 2042 2043 2044
    t.text "note"
    t.string "last_commit"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
2045 2046
    t.binary "last_wiki_commit"
    t.datetime_with_timezone "wiki_indexed_at"
2047
    t.index ["project_id"], name: "index_index_statuses_on_project_id", unique: true
Valery Sizov's avatar
Valery Sizov committed
2048 2049
  end

Jasper Maes's avatar
Jasper Maes committed
2050
  create_table "insights", id: :serial, force: :cascade do |t|
2051 2052
    t.integer "namespace_id", null: false
    t.integer "project_id", null: false
2053 2054
    t.index ["namespace_id"], name: "index_insights_on_namespace_id"
    t.index ["project_id"], name: "index_insights_on_project_id"
2055 2056
  end

Jasper Maes's avatar
Jasper Maes committed
2057
  create_table "internal_ids", force: :cascade do |t|
2058
    t.integer "project_id"
2059 2060
    t.integer "usage", null: false
    t.integer "last_value", null: false
2061
    t.integer "namespace_id"
2062 2063 2064 2065
    t.index ["namespace_id"], name: "index_internal_ids_on_namespace_id"
    t.index ["project_id"], name: "index_internal_ids_on_project_id"
    t.index ["usage", "namespace_id"], name: "index_internal_ids_on_usage_and_namespace_id", unique: true, where: "(namespace_id IS NOT NULL)"
    t.index ["usage", "project_id"], name: "index_internal_ids_on_usage_and_project_id", unique: true, where: "(project_id IS NOT NULL)"
2066 2067
  end

2068 2069 2070
  create_table "ip_restrictions", force: :cascade do |t|
    t.integer "group_id", null: false
    t.string "range", null: false
2071
    t.index ["group_id"], name: "index_ip_restrictions_on_group_id"
2072 2073
  end

2074
  create_table "issue_assignees", id: false, force: :cascade do |t|
2075 2076
    t.integer "user_id", null: false
    t.integer "issue_id", null: false
2077 2078
    t.index ["issue_id", "user_id"], name: "index_issue_assignees_on_issue_id_and_user_id", unique: true
    t.index ["user_id"], name: "index_issue_assignees_on_user_id"
2079 2080
  end

Jasper Maes's avatar
Jasper Maes committed
2081
  create_table "issue_links", id: :serial, force: :cascade do |t|
2082 2083 2084 2085
    t.integer "source_id", null: false
    t.integer "target_id", null: false
    t.datetime "created_at"
    t.datetime "updated_at"
Jan Provaznik's avatar
Jan Provaznik committed
2086
    t.integer "link_type", limit: 2, default: 0, null: false
2087 2088 2089
    t.index ["source_id", "target_id"], name: "index_issue_links_on_source_id_and_target_id", unique: true
    t.index ["source_id"], name: "index_issue_links_on_source_id"
    t.index ["target_id"], name: "index_issue_links_on_target_id"
2090 2091
  end

Jasper Maes's avatar
Jasper Maes committed
2092
  create_table "issue_metrics", id: :serial, force: :cascade do |t|
2093
    t.integer "issue_id", null: false
2094
    t.datetime "first_mentioned_in_commit_at"
2095 2096
    t.datetime "first_associated_with_milestone_at"
    t.datetime "first_added_to_board_at"
2097 2098
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
2099
    t.index ["issue_id", "first_mentioned_in_commit_at", "first_associated_with_milestone_at", "first_added_to_board_at"], name: "index_issue_metrics_on_issue_id_and_timestamps"
2100
    t.index ["issue_id"], name: "index_issue_metrics"
2101 2102
  end

2103 2104 2105 2106 2107 2108 2109 2110
  create_table "issue_milestones", id: false, force: :cascade do |t|
    t.bigint "issue_id", null: false
    t.bigint "milestone_id", null: false
    t.index ["issue_id", "milestone_id"], name: "index_issue_milestones_on_issue_id_and_milestone_id", unique: true
    t.index ["issue_id"], name: "index_issue_milestones_on_issue_id", unique: true
    t.index ["milestone_id"], name: "index_issue_milestones_on_milestone_id"
  end

2111 2112 2113 2114 2115 2116 2117 2118 2119 2120
  create_table "issue_tracker_data", force: :cascade do |t|
    t.integer "service_id", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.string "encrypted_project_url"
    t.string "encrypted_project_url_iv"
    t.string "encrypted_issues_url"
    t.string "encrypted_issues_url_iv"
    t.string "encrypted_new_issue_url"
    t.string "encrypted_new_issue_url_iv"
2121
    t.index ["service_id"], name: "index_issue_tracker_data_on_service_id"
2122 2123
  end

2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134
  create_table "issue_user_mentions", force: :cascade do |t|
    t.integer "issue_id", null: false
    t.integer "note_id"
    t.integer "mentioned_users_ids", array: true
    t.integer "mentioned_projects_ids", array: true
    t.integer "mentioned_groups_ids", array: true
    t.index ["issue_id", "note_id"], name: "issue_user_mentions_on_issue_id_and_note_id_index", unique: true
    t.index ["issue_id"], name: "issue_user_mentions_on_issue_id_index", unique: true, where: "(note_id IS NULL)"
    t.index ["note_id"], name: "index_issue_user_mentions_on_note_id", unique: true, where: "(note_id IS NOT NULL)"
  end

Jasper Maes's avatar
Jasper Maes committed
2135
  create_table "issues", id: :serial, force: :cascade do |t|
2136 2137 2138
    t.string "title"
    t.integer "author_id"
    t.integer "project_id"
2139 2140
    t.datetime "created_at"
    t.datetime "updated_at"
2141 2142 2143 2144 2145 2146
    t.text "description"
    t.integer "milestone_id"
    t.string "state"
    t.integer "iid"
    t.integer "updated_by_id"
    t.integer "weight"
2147
    t.boolean "confidential", default: false, null: false
2148 2149 2150 2151 2152
    t.date "due_date"
    t.integer "moved_to_id"
    t.integer "lock_version"
    t.text "title_html"
    t.text "description_html"
2153
    t.integer "time_estimate"
2154
    t.integer "relative_position"
2155
    t.string "service_desk_reply_to"
2156
    t.integer "cached_markdown_version"
2157 2158
    t.datetime "last_edited_at"
    t.integer "last_edited_by_id"
2159
    t.boolean "discussion_locked"
2160
    t.datetime_with_timezone "closed_at"
haseeb's avatar
haseeb committed
2161
    t.integer "closed_by_id"
2162
    t.integer "state_id", limit: 2, default: 1, null: false
2163
    t.integer "duplicated_to_id"
2164
    t.integer "promoted_to_epic_id"
2165 2166 2167 2168
    t.index ["author_id"], name: "index_issues_on_author_id"
    t.index ["closed_by_id"], name: "index_issues_on_closed_by_id"
    t.index ["confidential"], name: "index_issues_on_confidential"
    t.index ["description"], name: "index_issues_on_description_trigram", opclass: :gin_trgm_ops, using: :gin
2169
    t.index ["duplicated_to_id"], name: "index_issues_on_duplicated_to_id", where: "(duplicated_to_id IS NOT NULL)"
2170 2171 2172
    t.index ["milestone_id"], name: "index_issues_on_milestone_id"
    t.index ["moved_to_id"], name: "index_issues_on_moved_to_id", where: "(moved_to_id IS NOT NULL)"
    t.index ["project_id", "created_at", "id", "state"], name: "index_issues_on_project_id_and_created_at_and_id_and_state"
2173
    t.index ["project_id", "created_at", "id", "state_id"], name: "idx_issues_on_project_id_and_created_at_and_id_and_state_id"
2174
    t.index ["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)"
2175
    t.index ["project_id", "due_date", "id", "state_id"], name: "idx_issues_on_project_id_and_due_date_and_id_and_state_id", where: "(due_date IS NOT NULL)"
2176
    t.index ["project_id", "iid"], name: "index_issues_on_project_id_and_iid", unique: true
2177
    t.index ["project_id", "relative_position", "state", "id"], name: "index_issues_on_project_id_and_rel_position_and_state_and_id", order: { id: :desc }
2178
    t.index ["project_id", "relative_position", "state_id", "id"], name: "idx_issues_on_project_id_and_rel_position_and_state_id_and_id", order: { id: :desc }
2179
    t.index ["project_id", "updated_at", "id", "state"], name: "index_issues_on_project_id_and_updated_at_and_id_and_state"
2180
    t.index ["project_id", "updated_at", "id", "state_id"], name: "idx_issues_on_project_id_and_updated_at_and_id_and_state_id"
2181
    t.index ["promoted_to_epic_id"], name: "index_issues_on_promoted_to_epic_id", where: "(promoted_to_epic_id IS NOT NULL)"
2182 2183
    t.index ["relative_position"], name: "index_issues_on_relative_position"
    t.index ["state"], name: "index_issues_on_state"
2184
    t.index ["state_id"], name: "idx_issues_on_state_id"
2185 2186 2187
    t.index ["title"], name: "index_issues_on_title_trigram", opclass: :gin_trgm_ops, using: :gin
    t.index ["updated_at"], name: "index_issues_on_updated_at"
    t.index ["updated_by_id"], name: "index_issues_on_updated_by_id", where: "(updated_by_id IS NOT NULL)"
Andrew8xx8's avatar
Andrew8xx8 committed
2188 2189
  end

2190 2191 2192 2193 2194 2195 2196 2197 2198
  create_table "issues_prometheus_alert_events", id: false, force: :cascade do |t|
    t.bigint "issue_id", null: false
    t.bigint "prometheus_alert_event_id", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.index ["issue_id", "prometheus_alert_event_id"], name: "issue_id_prometheus_alert_event_id_index", unique: true
    t.index ["prometheus_alert_event_id"], name: "issue_id_issues_prometheus_alert_events_index"
  end

2199 2200 2201 2202 2203 2204 2205 2206 2207
  create_table "issues_self_managed_prometheus_alert_events", id: false, force: :cascade do |t|
    t.bigint "issue_id", null: false
    t.bigint "self_managed_prometheus_alert_event_id", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.index ["issue_id", "self_managed_prometheus_alert_event_id"], name: "issue_id_self_managed_prometheus_alert_event_id_index", unique: true
    t.index ["self_managed_prometheus_alert_event_id"], name: "issue_id_issues_self_managed_rometheus_alert_events_index"
  end

Jasper Maes's avatar
Jasper Maes committed
2208
  create_table "jira_connect_installations", force: :cascade do |t|
2209 2210 2211 2212
    t.string "client_key"
    t.string "encrypted_shared_secret"
    t.string "encrypted_shared_secret_iv"
    t.string "base_url"
2213
    t.index ["client_key"], name: "index_jira_connect_installations_on_client_key", unique: true
2214 2215
  end

2216 2217 2218 2219 2220
  create_table "jira_connect_subscriptions", force: :cascade do |t|
    t.bigint "jira_connect_installation_id", null: false
    t.integer "namespace_id", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
2221 2222 2223
    t.index ["jira_connect_installation_id", "namespace_id"], name: "idx_jira_connect_subscriptions_on_installation_id_namespace_id", unique: true
    t.index ["jira_connect_installation_id"], name: "idx_jira_connect_subscriptions_on_installation_id"
    t.index ["namespace_id"], name: "index_jira_connect_subscriptions_on_namespace_id"
2224 2225
  end

2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238
  create_table "jira_tracker_data", force: :cascade do |t|
    t.integer "service_id", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.string "encrypted_url"
    t.string "encrypted_url_iv"
    t.string "encrypted_api_url"
    t.string "encrypted_api_url_iv"
    t.string "encrypted_username"
    t.string "encrypted_username_iv"
    t.string "encrypted_password"
    t.string "encrypted_password_iv"
    t.string "jira_issue_transition_id"
2239
    t.index ["service_id"], name: "index_jira_tracker_data_on_service_id"
2240 2241
  end

Jasper Maes's avatar
Jasper Maes committed
2242
  create_table "keys", id: :serial, force: :cascade do |t|
2243
    t.integer "user_id"
2244 2245
    t.datetime "created_at"
    t.datetime "updated_at"
2246 2247 2248 2249 2250
    t.text "key"
    t.string "title"
    t.string "type"
    t.string "fingerprint"
    t.boolean "public", default: false, null: false
2251
    t.datetime "last_used_at"
2252
    t.binary "fingerprint_sha256"
2253
    t.index ["fingerprint"], name: "index_keys_on_fingerprint", unique: true
2254
    t.index ["fingerprint_sha256"], name: "index_keys_on_fingerprint_sha256"
2255
    t.index ["id", "type"], name: "index_on_deploy_keys_id_and_type_and_public", unique: true, where: "(public = true)"
2256
    t.index ["last_used_at"], name: "index_keys_on_last_used_at", order: "DESC NULLS LAST"
2257
    t.index ["user_id"], name: "index_keys_on_user_id"
Andrew8xx8's avatar
Andrew8xx8 committed
2258 2259
  end

Jasper Maes's avatar
Jasper Maes committed
2260
  create_table "label_links", id: :serial, force: :cascade do |t|
2261 2262 2263
    t.integer "label_id"
    t.integer "target_id"
    t.string "target_type"
2264 2265
    t.datetime "created_at"
    t.datetime "updated_at"
2266 2267
    t.index ["label_id"], name: "index_label_links_on_label_id"
    t.index ["target_id", "target_type"], name: "index_label_links_on_target_id_and_target_type"
2268 2269
  end

Jasper Maes's avatar
Jasper Maes committed
2270
  create_table "label_priorities", id: :serial, force: :cascade do |t|
2271 2272 2273 2274 2275
    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
2276 2277 2278
    t.index ["label_id"], name: "index_label_priorities_on_label_id"
    t.index ["priority"], name: "index_label_priorities_on_priority"
    t.index ["project_id", "label_id"], name: "index_label_priorities_on_project_id_and_label_id", unique: true
2279 2280
  end

Jasper Maes's avatar
Jasper Maes committed
2281
  create_table "labels", id: :serial, force: :cascade do |t|
2282 2283 2284
    t.string "title"
    t.string "color"
    t.integer "project_id"
2285 2286
    t.datetime "created_at"
    t.datetime "updated_at"
2287 2288 2289
    t.boolean "template", default: false
    t.string "description"
    t.text "description_html"
2290 2291
    t.string "type"
    t.integer "group_id"
2292
    t.integer "cached_markdown_version"
2293
    t.index ["group_id", "project_id", "title"], name: "index_labels_on_group_id_and_project_id_and_title", unique: true
charlie ablett's avatar
charlie ablett committed
2294 2295
    t.index ["group_id", "title"], name: "index_labels_on_group_id_and_title", where: "(project_id = NULL::integer)"
    t.index ["project_id", "title"], name: "index_labels_on_project_id_and_title", where: "(group_id = NULL::integer)"
2296 2297 2298 2299
    t.index ["project_id"], name: "index_labels_on_project_id"
    t.index ["template"], name: "index_labels_on_template", where: "template"
    t.index ["title"], name: "index_labels_on_title"
    t.index ["type", "project_id"], name: "index_labels_on_type_and_project_id"
2300 2301
  end

Jasper Maes's avatar
Jasper Maes committed
2302
  create_table "ldap_group_links", id: :serial, force: :cascade do |t|
2303
    t.string "cn"
2304 2305
    t.integer "group_access", null: false
    t.integer "group_id", null: false
Valery Sizov's avatar
Valery Sizov committed
2306 2307
    t.datetime "created_at"
    t.datetime "updated_at"
2308
    t.string "provider"
2309
    t.string "filter"
Valery Sizov's avatar
Valery Sizov committed
2310 2311
  end

Jasper Maes's avatar
Jasper Maes committed
2312
  create_table "lfs_file_locks", id: :serial, force: :cascade do |t|
2313 2314 2315
    t.integer "project_id", null: false
    t.integer "user_id", null: false
    t.datetime "created_at", null: false
2316
    t.string "path", limit: 511
2317 2318
    t.index ["project_id", "path"], name: "index_lfs_file_locks_on_project_id_and_path", unique: true
    t.index ["user_id"], name: "index_lfs_file_locks_on_user_id"
2319 2320
  end

Jasper Maes's avatar
Jasper Maes committed
2321
  create_table "lfs_objects", id: :serial, force: :cascade do |t|
2322
    t.string "oid", null: false
2323
    t.bigint "size", null: false
Marin Jankovski's avatar
Marin Jankovski committed
2324 2325
    t.datetime "created_at"
    t.datetime "updated_at"
2326
    t.string "file"
2327
    t.integer "file_store"
2328 2329
    t.index ["file_store"], name: "index_lfs_objects_on_file_store"
    t.index ["oid"], name: "index_lfs_objects_on_oid", unique: true
Marin Jankovski's avatar
Marin Jankovski committed
2330 2331
  end

Jasper Maes's avatar
Jasper Maes committed
2332
  create_table "lfs_objects_projects", id: :serial, force: :cascade do |t|
2333 2334
    t.integer "lfs_object_id", null: false
    t.integer "project_id", null: false
Marin Jankovski's avatar
Marin Jankovski committed
2335 2336
    t.datetime "created_at"
    t.datetime "updated_at"
2337
    t.integer "repository_type", limit: 2
2338 2339
    t.index ["lfs_object_id"], name: "index_lfs_objects_projects_on_lfs_object_id"
    t.index ["project_id"], name: "index_lfs_objects_projects_on_project_id"
Marin Jankovski's avatar
Marin Jankovski committed
2340 2341
  end

Jasper Maes's avatar
Jasper Maes committed
2342
  create_table "licenses", id: :serial, force: :cascade do |t|
2343
    t.text "data", null: false
Valery Sizov's avatar
Valery Sizov committed
2344 2345 2346 2347
    t.datetime "created_at"
    t.datetime "updated_at"
  end

2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358
  create_table "list_user_preferences", force: :cascade do |t|
    t.bigint "user_id", null: false
    t.bigint "list_id", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.boolean "collapsed"
    t.index ["list_id"], name: "index_list_user_preferences_on_list_id"
    t.index ["user_id", "list_id"], name: "index_list_user_preferences_on_user_id_and_list_id", unique: true
    t.index ["user_id"], name: "index_list_user_preferences_on_user_id"
  end

Jasper Maes's avatar
Jasper Maes committed
2359
  create_table "lists", id: :serial, force: :cascade do |t|
2360 2361 2362 2363 2364 2365
    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
2366
    t.integer "user_id"
2367
    t.integer "milestone_id"
2368
    t.integer "max_issue_count", default: 0, null: false
2369
    t.integer "max_issue_weight", default: 0, null: false
2370 2371 2372 2373 2374
    t.index ["board_id", "label_id"], name: "index_lists_on_board_id_and_label_id", unique: true
    t.index ["label_id"], name: "index_lists_on_label_id"
    t.index ["list_type"], name: "index_lists_on_list_type"
    t.index ["milestone_id"], name: "index_lists_on_milestone_id"
    t.index ["user_id"], name: "index_lists_on_user_id"
2375 2376
  end

Jasper Maes's avatar
Jasper Maes committed
2377
  create_table "members", id: :serial, force: :cascade do |t|
2378 2379 2380 2381 2382 2383
    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"
2384 2385
    t.datetime "created_at"
    t.datetime "updated_at"
2386 2387 2388
    t.integer "created_by_id"
    t.string "invite_email"
    t.string "invite_token"
Douwe Maan's avatar
Douwe Maan committed
2389
    t.datetime "invite_accepted_at"
2390
    t.datetime "requested_at"
2391 2392 2393
    t.date "expires_at"
    t.boolean "ldap", default: false, null: false
    t.boolean "override", default: false, null: false
2394
    t.index ["access_level"], name: "index_members_on_access_level"
2395
    t.index ["expires_at"], name: "index_members_on_expires_at"
2396 2397 2398 2399 2400
    t.index ["invite_email"], name: "index_members_on_invite_email"
    t.index ["invite_token"], name: "index_members_on_invite_token", unique: true
    t.index ["requested_at"], name: "index_members_on_requested_at"
    t.index ["source_id", "source_type"], name: "index_members_on_source_id_and_source_type"
    t.index ["user_id"], name: "index_members_on_user_id"
2401 2402
  end

2403 2404 2405
  create_table "merge_request_assignees", force: :cascade do |t|
    t.integer "user_id", null: false
    t.integer "merge_request_id", null: false
2406 2407 2408
    t.index ["merge_request_id", "user_id"], name: "index_merge_request_assignees_on_merge_request_id_and_user_id", unique: true
    t.index ["merge_request_id"], name: "index_merge_request_assignees_on_merge_request_id"
    t.index ["user_id"], name: "index_merge_request_assignees_on_user_id"
2409 2410
  end

2411 2412 2413 2414 2415
  create_table "merge_request_blocks", force: :cascade do |t|
    t.integer "blocking_merge_request_id", null: false
    t.integer "blocked_merge_request_id", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
2416 2417
    t.index ["blocked_merge_request_id"], name: "index_merge_request_blocks_on_blocked_merge_request_id"
    t.index ["blocking_merge_request_id", "blocked_merge_request_id"], name: "index_mr_blocks_on_blocking_and_blocked_mr_ids", unique: true
2418 2419
  end

2420
  create_table "merge_request_diff_commits", id: false, force: :cascade do |t|
2421 2422
    t.datetime "authored_date"
    t.datetime "committed_date"
2423 2424 2425 2426 2427 2428 2429 2430
    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"
2431 2432
    t.index ["merge_request_diff_id", "relative_order"], name: "index_merge_request_diff_commits_on_mr_diff_id_and_order", unique: true
    t.index ["sha"], name: "index_merge_request_diff_commits_on_sha"
2433 2434
  end

2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445
  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
2446
    t.text "diff"
2447
    t.boolean "binary"
2448 2449
    t.integer "external_diff_offset"
    t.integer "external_diff_size"
2450
    t.index ["merge_request_diff_id", "relative_order"], name: "index_merge_request_diff_files_on_mr_diff_id_and_order", unique: true
2451 2452
  end

Jasper Maes's avatar
Jasper Maes committed
2453
  create_table "merge_request_diffs", id: :serial, force: :cascade do |t|
2454 2455
    t.string "state"
    t.integer "merge_request_id", null: false
2456 2457
    t.datetime "created_at"
    t.datetime "updated_at"
2458 2459 2460 2461
    t.string "base_commit_sha"
    t.string "real_size"
    t.string "head_commit_sha"
    t.string "start_commit_sha"
2462
    t.integer "commits_count"
2463 2464 2465
    t.string "external_diff"
    t.integer "external_diff_store"
    t.boolean "stored_externally"
2466 2467
    t.index ["merge_request_id", "id"], name: "index_merge_request_diffs_on_merge_request_id_and_id"
    t.index ["merge_request_id", "id"], name: "index_merge_request_diffs_on_merge_request_id_and_id_partial", where: "((NOT stored_externally) OR (stored_externally IS NULL))"
2468 2469
  end

Jasper Maes's avatar
Jasper Maes committed
2470
  create_table "merge_request_metrics", id: :serial, force: :cascade do |t|
2471
    t.integer "merge_request_id", null: false
2472 2473 2474 2475
    t.datetime "latest_build_started_at"
    t.datetime "latest_build_finished_at"
    t.datetime "first_deployed_to_production_at"
    t.datetime "merged_at"
2476 2477
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
2478
    t.integer "pipeline_id"
2479 2480 2481
    t.integer "merged_by_id"
    t.integer "latest_closed_by_id"
    t.datetime_with_timezone "latest_closed_at"
2482 2483 2484 2485 2486 2487
    t.datetime_with_timezone "first_comment_at"
    t.datetime_with_timezone "first_commit_at"
    t.datetime_with_timezone "last_commit_at"
    t.integer "diff_size"
    t.integer "modified_paths_size"
    t.integer "commits_count"
2488 2489 2490 2491 2492
    t.index ["first_deployed_to_production_at"], name: "index_merge_request_metrics_on_first_deployed_to_production_at"
    t.index ["latest_closed_at"], name: "index_merge_request_metrics_on_latest_closed_at", where: "(latest_closed_at IS NOT NULL)"
    t.index ["latest_closed_by_id"], name: "index_merge_request_metrics_on_latest_closed_by_id"
    t.index ["merge_request_id", "merged_at"], name: "index_merge_request_metrics_on_merge_request_id_and_merged_at", where: "(merged_at IS NOT NULL)"
    t.index ["merge_request_id"], name: "index_merge_request_metrics"
2493
    t.index ["merged_at"], name: "index_merge_request_metrics_on_merged_at"
2494 2495
    t.index ["merged_by_id"], name: "index_merge_request_metrics_on_merged_by_id"
    t.index ["pipeline_id"], name: "index_merge_request_metrics_on_pipeline_id"
2496 2497
  end

2498 2499 2500 2501 2502 2503 2504 2505
  create_table "merge_request_milestones", id: false, force: :cascade do |t|
    t.bigint "merge_request_id", null: false
    t.bigint "milestone_id", null: false
    t.index ["merge_request_id", "milestone_id"], name: "index_mrs_milestones_on_mr_id_and_milestone_id", unique: true
    t.index ["merge_request_id"], name: "index_merge_request_milestones_on_merge_request_id", unique: true
    t.index ["milestone_id"], name: "index_merge_request_milestones_on_milestone_id"
  end

2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516
  create_table "merge_request_user_mentions", force: :cascade do |t|
    t.integer "merge_request_id", null: false
    t.integer "note_id"
    t.integer "mentioned_users_ids", array: true
    t.integer "mentioned_projects_ids", array: true
    t.integer "mentioned_groups_ids", array: true
    t.index ["merge_request_id", "note_id"], name: "merge_request_user_mentions_on_mr_id_and_note_id_index", unique: true
    t.index ["merge_request_id"], name: "merge_request_user_mentions_on_mr_id_index", unique: true, where: "(note_id IS NULL)"
    t.index ["note_id"], name: "index_merge_request_user_mentions_on_note_id", unique: true, where: "(note_id IS NOT NULL)"
  end

Jasper Maes's avatar
Jasper Maes committed
2517
  create_table "merge_requests", id: :serial, force: :cascade do |t|
2518 2519
    t.string "target_branch", null: false
    t.string "source_branch", null: false
2520
    t.integer "source_project_id"
2521 2522 2523
    t.integer "author_id"
    t.integer "assignee_id"
    t.string "title"
2524 2525
    t.datetime "created_at"
    t.datetime "updated_at"
2526
    t.integer "milestone_id"
2527 2528
    t.string "state", default: "opened", null: false
    t.string "merge_status", default: "unchecked", null: false
2529 2530 2531 2532 2533 2534
    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"
2535
    t.boolean "merge_when_pipeline_succeeds", default: false, null: false
2536 2537 2538 2539 2540 2541 2542 2543
    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"
2544
    t.integer "time_estimate"
2545
    t.boolean "squash", default: false, null: false
2546
    t.integer "cached_markdown_version"
2547 2548
    t.datetime "last_edited_at"
    t.integer "last_edited_by_id"
2549
    t.integer "head_pipeline_id"
2550
    t.string "merge_jid"
2551
    t.boolean "discussion_locked"
2552
    t.integer "latest_merge_request_diff_id"
2553
    t.boolean "allow_maintainer_to_push"
2554
    t.integer "state_id", limit: 2, default: 1, null: false
2555
    t.string "rebase_jid"
2556
    t.binary "squash_commit_sha"
2557 2558 2559 2560 2561
    t.index ["assignee_id"], name: "index_merge_requests_on_assignee_id"
    t.index ["author_id"], name: "index_merge_requests_on_author_id"
    t.index ["created_at"], name: "index_merge_requests_on_created_at"
    t.index ["description"], name: "index_merge_requests_on_description_trigram", opclass: :gin_trgm_ops, using: :gin
    t.index ["head_pipeline_id"], name: "index_merge_requests_on_head_pipeline_id"
2562
    t.index ["id", "merge_jid"], name: "idx_merge_requests_on_id_and_merge_jid", where: "((merge_jid IS NOT NULL) AND (state_id = 4))"
2563 2564 2565 2566 2567
    t.index ["id", "merge_jid"], name: "index_merge_requests_on_id_and_merge_jid", where: "((merge_jid IS NOT NULL) AND ((state)::text = 'locked'::text))"
    t.index ["latest_merge_request_diff_id"], name: "index_merge_requests_on_latest_merge_request_diff_id"
    t.index ["merge_user_id"], name: "index_merge_requests_on_merge_user_id", where: "(merge_user_id IS NOT NULL)"
    t.index ["milestone_id"], name: "index_merge_requests_on_milestone_id"
    t.index ["source_branch"], name: "index_merge_requests_on_source_branch"
2568
    t.index ["source_project_id", "source_branch"], name: "idx_merge_requests_on_source_project_and_branch_state_opened", where: "(state_id = 1)"
2569 2570 2571
    t.index ["source_project_id", "source_branch"], name: "index_merge_requests_on_source_project_and_branch_state_opened", where: "((state)::text = 'opened'::text)"
    t.index ["source_project_id", "source_branch"], name: "index_merge_requests_on_source_project_id_and_source_branch"
    t.index ["state", "merge_status"], name: "index_merge_requests_on_state_and_merge_status", where: "(((state)::text = 'opened'::text) AND ((merge_status)::text = 'can_be_merged'::text))"
2572
    t.index ["state_id", "merge_status"], name: "idx_merge_requests_on_state_id_and_merge_status", where: "((state_id = 1) AND ((merge_status)::text = 'can_be_merged'::text))"
2573
    t.index ["target_branch"], name: "index_merge_requests_on_target_branch"
2574
    t.index ["target_project_id", "created_at"], name: "index_merge_requests_target_project_id_created_at"
2575
    t.index ["target_project_id", "iid"], name: "idx_merge_requests_on_target_project_id_and_iid_opened", where: "(state_id = 1)"
2576 2577 2578
    t.index ["target_project_id", "iid"], name: "index_merge_requests_on_target_project_id_and_iid", unique: true
    t.index ["target_project_id", "iid"], name: "index_merge_requests_on_target_project_id_and_iid_opened", where: "((state)::text = 'opened'::text)"
    t.index ["target_project_id", "merge_commit_sha", "id"], name: "index_merge_requests_on_tp_id_and_merge_commit_sha_and_id"
2579
    t.index ["target_project_id", "target_branch"], name: "index_merge_requests_on_target_project_id_and_target_branch", where: "((state_id = 1) AND (merge_when_pipeline_succeeds = true))"
2580 2581 2582
    t.index ["title"], name: "index_merge_requests_on_title"
    t.index ["title"], name: "index_merge_requests_on_title_trigram", opclass: :gin_trgm_ops, using: :gin
    t.index ["updated_by_id"], name: "index_merge_requests_on_updated_by_id", where: "(updated_by_id IS NOT NULL)"
Andrew8xx8's avatar
Andrew8xx8 committed
2583 2584
  end

Jasper Maes's avatar
Jasper Maes committed
2585
  create_table "merge_requests_closing_issues", id: :serial, force: :cascade do |t|
2586 2587 2588 2589
    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
2590 2591
    t.index ["issue_id"], name: "index_merge_requests_closing_issues_on_issue_id"
    t.index ["merge_request_id"], name: "index_merge_requests_closing_issues_on_merge_request_id"
2592 2593
  end

2594 2595 2596 2597 2598 2599
  create_table "merge_trains", force: :cascade do |t|
    t.integer "merge_request_id", null: false
    t.integer "user_id", null: false
    t.integer "pipeline_id"
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
2600 2601
    t.integer "target_project_id", null: false
    t.text "target_branch", null: false
2602
    t.integer "status", limit: 2, default: 0, null: false
2603 2604
    t.index ["merge_request_id"], name: "index_merge_trains_on_merge_request_id", unique: true
    t.index ["pipeline_id"], name: "index_merge_trains_on_pipeline_id"
2605
    t.index ["target_project_id", "target_branch", "status"], name: "index_for_status_per_branch_per_project"
2606
    t.index ["user_id"], name: "index_merge_trains_on_user_id"
2607 2608
  end

2609
  create_table "milestone_releases", id: false, force: :cascade do |t|
2610 2611 2612 2613 2614 2615
    t.bigint "milestone_id", null: false
    t.bigint "release_id", null: false
    t.index ["milestone_id", "release_id"], name: "index_miletone_releases_on_milestone_and_release", unique: true
    t.index ["release_id"], name: "index_milestone_releases_on_release_id"
  end

Jasper Maes's avatar
Jasper Maes committed
2616
  create_table "milestones", id: :serial, force: :cascade do |t|
2617
    t.string "title", null: false
Felipe Artur's avatar
Felipe Artur committed
2618
    t.integer "project_id"
2619 2620
    t.text "description"
    t.date "due_date"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
2621 2622
    t.datetime "created_at"
    t.datetime "updated_at"
2623 2624 2625 2626
    t.string "state"
    t.integer "iid"
    t.text "title_html"
    t.text "description_html"
2627
    t.date "start_date"
2628
    t.integer "cached_markdown_version"
Felipe Artur's avatar
Felipe Artur committed
2629
    t.integer "group_id"
2630 2631 2632 2633 2634 2635
    t.index ["description"], name: "index_milestones_on_description_trigram", opclass: :gin_trgm_ops, using: :gin
    t.index ["due_date"], name: "index_milestones_on_due_date"
    t.index ["group_id"], name: "index_milestones_on_group_id"
    t.index ["project_id", "iid"], name: "index_milestones_on_project_id_and_iid", unique: true
    t.index ["title"], name: "index_milestones_on_title"
    t.index ["title"], name: "index_milestones_on_title_trigram", opclass: :gin_trgm_ops, using: :gin
Andrew8xx8's avatar
Andrew8xx8 committed
2636 2637
  end

2638
  create_table "namespace_aggregation_schedules", primary_key: "namespace_id", id: :integer, default: nil, force: :cascade do |t|
2639
    t.index ["namespace_id"], name: "index_namespace_aggregation_schedules_on_namespace_id", unique: true
2640 2641 2642 2643 2644 2645 2646 2647 2648 2649
  end

  create_table "namespace_root_storage_statistics", primary_key: "namespace_id", id: :integer, default: nil, force: :cascade do |t|
    t.datetime_with_timezone "updated_at", null: false
    t.bigint "repository_size", default: 0, null: false
    t.bigint "lfs_objects_size", default: 0, null: false
    t.bigint "wiki_size", default: 0, null: false
    t.bigint "build_artifacts_size", default: 0, null: false
    t.bigint "storage_size", default: 0, null: false
    t.bigint "packages_size", default: 0, null: false
2650
    t.index ["namespace_id"], name: "index_namespace_root_storage_statistics_on_namespace_id", unique: true
2651 2652
  end

Jasper Maes's avatar
Jasper Maes committed
2653
  create_table "namespace_statistics", id: :serial, force: :cascade do |t|
2654
    t.integer "namespace_id", null: false
2655 2656
    t.integer "shared_runners_seconds", default: 0, null: false
    t.datetime "shared_runners_seconds_last_reset"
2657
    t.index ["namespace_id"], name: "index_namespace_statistics_on_namespace_id", unique: true
2658 2659
  end

Jasper Maes's avatar
Jasper Maes committed
2660
  create_table "namespaces", id: :serial, force: :cascade do |t|
2661 2662 2663
    t.string "name", null: false
    t.string "path", null: false
    t.integer "owner_id"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
2664 2665
    t.datetime "created_at"
    t.datetime "updated_at"
2666 2667 2668 2669 2670 2671
    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
2672
    t.boolean "request_access_enabled", default: true, null: false
2673 2674
    t.string "ldap_sync_status", default: "ready", null: false
    t.string "ldap_sync_error"
2675 2676 2677
    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
2678
    t.text "description_html"
2679
    t.boolean "lfs_enabled"
2680
    t.integer "parent_id"
2681
    t.integer "shared_runners_minutes_limit"
2682
    t.bigint "repository_size_limit"
2683 2684
    t.boolean "require_two_factor_authentication", default: false, null: false
    t.integer "two_factor_grace_period", default: 48, null: false
2685
    t.integer "cached_markdown_version"
2686
    t.integer "plan_id"
2687
    t.integer "project_creation_level"
2688
    t.string "runners_token"
2689
    t.datetime_with_timezone "trial_ends_on"
Nick Thomas's avatar
Nick Thomas committed
2690
    t.integer "file_template_project_id"
2691
    t.string "saml_discovery_token"
2692
    t.string "runners_token_encrypted"
2693
    t.integer "custom_project_templates_group_id"
2694
    t.boolean "auto_devops_enabled"
2695
    t.integer "extra_shared_runners_minutes_limit"
2696
    t.datetime_with_timezone "last_ci_minutes_notification_at"
2697 2698
    t.integer "last_ci_minutes_usage_notification_level"
    t.integer "subgroup_creation_level", default: 1
2699
    t.boolean "emails_disabled"
2700 2701
    t.integer "max_pages_size"
    t.integer "max_artifacts_size"
2702
    t.boolean "mentions_disabled"
2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719
    t.index ["created_at"], name: "index_namespaces_on_created_at"
    t.index ["custom_project_templates_group_id", "type"], name: "index_namespaces_on_custom_project_templates_group_id_and_type", where: "(custom_project_templates_group_id IS NOT NULL)"
    t.index ["file_template_project_id"], name: "index_namespaces_on_file_template_project_id"
    t.index ["ldap_sync_last_successful_update_at"], name: "index_namespaces_on_ldap_sync_last_successful_update_at"
    t.index ["ldap_sync_last_update_at"], name: "index_namespaces_on_ldap_sync_last_update_at"
    t.index ["name", "parent_id"], name: "index_namespaces_on_name_and_parent_id", unique: true
    t.index ["name"], name: "index_namespaces_on_name_trigram", opclass: :gin_trgm_ops, using: :gin
    t.index ["owner_id"], name: "index_namespaces_on_owner_id"
    t.index ["parent_id", "id"], name: "index_namespaces_on_parent_id_and_id", unique: true
    t.index ["path"], name: "index_namespaces_on_path"
    t.index ["path"], name: "index_namespaces_on_path_trigram", opclass: :gin_trgm_ops, using: :gin
    t.index ["plan_id"], name: "index_namespaces_on_plan_id"
    t.index ["require_two_factor_authentication"], name: "index_namespaces_on_require_two_factor_authentication"
    t.index ["runners_token"], name: "index_namespaces_on_runners_token", unique: true
    t.index ["runners_token_encrypted"], name: "index_namespaces_on_runners_token_encrypted", unique: true
    t.index ["shared_runners_minutes_limit", "extra_shared_runners_minutes_limit"], name: "index_namespaces_on_shared_and_extra_runners_minutes_limit"
    t.index ["trial_ends_on"], name: "index_namespaces_on_trial_ends_on", where: "(trial_ends_on IS NOT NULL)"
2720
    t.index ["type"], name: "index_namespaces_on_type_partial", where: "(type IS NOT NULL)"
Andrew8xx8's avatar
Andrew8xx8 committed
2721 2722
  end

Jasper Maes's avatar
Jasper Maes committed
2723
  create_table "note_diff_files", id: :serial, force: :cascade do |t|
2724 2725 2726 2727 2728 2729 2730 2731 2732
    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
2733
    t.index ["diff_note_id"], name: "index_note_diff_files_on_diff_note_id", unique: true
2734 2735
  end

Jasper Maes's avatar
Jasper Maes committed
2736
  create_table "notes", id: :serial, force: :cascade do |t|
2737 2738 2739
    t.text "note"
    t.string "noteable_type"
    t.integer "author_id"
2740 2741
    t.datetime "created_at"
    t.datetime "updated_at"
2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752
    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"
2753
    t.datetime "resolved_at"
2754 2755 2756
    t.integer "resolved_by_id"
    t.string "discussion_id"
    t.text "note_html"
2757
    t.integer "cached_markdown_version"
2758
    t.text "change_position"
2759
    t.boolean "resolved_by_push"
2760
    t.bigint "review_id"
2761 2762 2763 2764 2765 2766 2767
    t.index ["author_id"], name: "index_notes_on_author_id"
    t.index ["commit_id"], name: "index_notes_on_commit_id"
    t.index ["created_at"], name: "index_notes_on_created_at"
    t.index ["discussion_id"], name: "index_notes_on_discussion_id"
    t.index ["line_code"], name: "index_notes_on_line_code"
    t.index ["note"], name: "index_notes_on_note_trigram", opclass: :gin_trgm_ops, using: :gin
    t.index ["noteable_id", "noteable_type"], name: "index_notes_on_noteable_id_and_noteable_type"
2768
    t.index ["project_id", "id"], name: "index_notes_on_project_id_and_id_and_system_false", where: "(NOT system)"
2769 2770
    t.index ["project_id", "noteable_type"], name: "index_notes_on_project_id_and_noteable_type"
    t.index ["review_id"], name: "index_notes_on_review_id"
Andrew8xx8's avatar
Andrew8xx8 committed
2771 2772
  end

Jasper Maes's avatar
Jasper Maes committed
2773
  create_table "notification_settings", id: :serial, force: :cascade do |t|
2774 2775 2776 2777 2778 2779
    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
2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791
    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"
2792
    t.boolean "push_to_merge_request"
2793
    t.boolean "issue_due"
2794
    t.boolean "new_epic"
2795
    t.string "notification_email"
2796
    t.boolean "new_release"
2797 2798 2799
    t.index ["source_id", "source_type"], name: "index_notification_settings_on_source_id_and_source_type"
    t.index ["user_id", "source_id", "source_type"], name: "index_notifications_on_user_id_and_source_id_and_source_type", unique: true
    t.index ["user_id"], name: "index_notification_settings_on_user_id"
2800 2801
  end

Jasper Maes's avatar
Jasper Maes committed
2802
  create_table "oauth_access_grants", id: :serial, force: :cascade do |t|
2803 2804 2805 2806 2807 2808
    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
2809
    t.datetime "revoked_at"
2810
    t.string "scopes"
2811
    t.index ["token"], name: "index_oauth_access_grants_on_token", unique: true
Valery Sizov's avatar
Valery Sizov committed
2812 2813
  end

Jasper Maes's avatar
Jasper Maes committed
2814
  create_table "oauth_access_tokens", id: :serial, force: :cascade do |t|
2815 2816 2817 2818 2819
    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
2820
    t.datetime "revoked_at"
2821 2822
    t.datetime "created_at", null: false
    t.string "scopes"
2823
    t.index ["application_id"], name: "index_oauth_access_tokens_on_application_id"
2824 2825 2826
    t.index ["refresh_token"], name: "index_oauth_access_tokens_on_refresh_token", unique: true
    t.index ["resource_owner_id"], name: "index_oauth_access_tokens_on_resource_owner_id"
    t.index ["token"], name: "index_oauth_access_tokens_on_token", unique: true
Valery Sizov's avatar
Valery Sizov committed
2827 2828
  end

Jasper Maes's avatar
Jasper Maes committed
2829
  create_table "oauth_applications", id: :serial, force: :cascade do |t|
2830 2831 2832 2833 2834
    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
2835 2836
    t.datetime "created_at"
    t.datetime "updated_at"
2837 2838
    t.integer "owner_id"
    t.string "owner_type"
2839
    t.boolean "trusted", default: false, null: false
2840 2841
    t.index ["owner_id", "owner_type"], name: "index_oauth_applications_on_owner_id_and_owner_type"
    t.index ["uid"], name: "index_oauth_applications_on_uid", unique: true
Valery Sizov's avatar
Valery Sizov committed
2842 2843
  end

Jasper Maes's avatar
Jasper Maes committed
2844
  create_table "oauth_openid_requests", id: :serial, force: :cascade do |t|
2845 2846
    t.integer "access_grant_id", null: false
    t.string "nonce", null: false
2847
    t.index ["access_grant_id"], name: "index_oauth_openid_requests_on_access_grant_id"
2848 2849
  end

Jasper Maes's avatar
Jasper Maes committed
2850
  create_table "operations_feature_flag_scopes", force: :cascade do |t|
2851 2852 2853 2854 2855
    t.bigint "feature_flag_id", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.boolean "active", null: false
    t.string "environment_scope", default: "*", null: false
2856
    t.jsonb "strategies", default: [{"name"=>"default", "parameters"=>{}}], null: false
2857
    t.index ["feature_flag_id", "environment_scope"], name: "index_feature_flag_scopes_on_flag_id_and_environment_scope", unique: true
2858 2859
  end

Jasper Maes's avatar
Jasper Maes committed
2860
  create_table "operations_feature_flags", force: :cascade do |t|
2861
    t.integer "project_id", null: false
2862
    t.boolean "active", null: false
2863 2864 2865 2866
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.string "name", null: false
    t.text "description"
2867
    t.index ["project_id", "name"], name: "index_operations_feature_flags_on_project_id_and_name", unique: true
2868 2869
  end

Jasper Maes's avatar
Jasper Maes committed
2870
  create_table "operations_feature_flags_clients", force: :cascade do |t|
2871
    t.integer "project_id", null: false
2872
    t.string "token_encrypted"
2873
    t.index ["project_id", "token_encrypted"], name: "index_feature_flags_clients_on_project_id_and_token_encrypted", unique: true
2874 2875
  end

2876 2877 2878 2879 2880 2881 2882
  create_table "packages_build_infos", force: :cascade do |t|
    t.integer "package_id", null: false
    t.integer "pipeline_id"
    t.index ["package_id"], name: "index_packages_build_infos_on_package_id", unique: true
    t.index ["pipeline_id"], name: "index_packages_build_infos_on_pipeline_id"
  end

2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902
  create_table "packages_conan_file_metadata", force: :cascade do |t|
    t.bigint "package_file_id", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.string "recipe_revision", limit: 255, default: "0", null: false
    t.string "package_revision", limit: 255
    t.string "conan_package_reference", limit: 255
    t.integer "conan_file_type", limit: 2, null: false
    t.index ["package_file_id"], name: "index_packages_conan_file_metadata_on_package_file_id", unique: true
  end

  create_table "packages_conan_metadata", force: :cascade do |t|
    t.bigint "package_id", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.string "package_username", limit: 255, null: false
    t.string "package_channel", limit: 255, null: false
    t.index ["package_id"], name: "index_packages_conan_metadata_on_package_id", unique: true
  end

2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916
  create_table "packages_dependencies", force: :cascade do |t|
    t.string "name", limit: 255, null: false
    t.string "version_pattern", limit: 255, null: false
    t.index ["name", "version_pattern"], name: "index_packages_dependencies_on_name_and_version_pattern", unique: true
  end

  create_table "packages_dependency_links", force: :cascade do |t|
    t.bigint "package_id", null: false
    t.bigint "dependency_id", null: false
    t.integer "dependency_type", limit: 2, null: false
    t.index ["dependency_id"], name: "index_packages_dependency_links_on_dependency_id"
    t.index ["package_id", "dependency_id", "dependency_type"], name: "idx_pkgs_dep_links_on_pkg_id_dependency_id_dependency_type", unique: true
  end

Jasper Maes's avatar
Jasper Maes committed
2917
  create_table "packages_maven_metadata", force: :cascade do |t|
2918
    t.bigint "package_id", null: false
2919 2920
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
2921 2922
    t.string "app_group", null: false
    t.string "app_name", null: false
2923
    t.string "app_version"
2924
    t.string "path", limit: 512, null: false
2925
    t.index ["package_id", "path"], name: "index_packages_maven_metadata_on_package_id_and_path"
2926 2927
  end

Jasper Maes's avatar
Jasper Maes committed
2928
  create_table "packages_package_files", force: :cascade do |t|
2929
    t.bigint "package_id", null: false
2930 2931
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
2932
    t.bigint "size"
2933 2934 2935 2936
    t.integer "file_type"
    t.integer "file_store"
    t.binary "file_md5"
    t.binary "file_sha1"
2937
    t.string "file_name", null: false
2938
    t.text "file", null: false
2939
    t.index ["package_id", "file_name"], name: "index_packages_package_files_on_package_id_and_file_name"
2940 2941
  end

Jasper Maes's avatar
Jasper Maes committed
2942
  create_table "packages_packages", force: :cascade do |t|
2943
    t.integer "project_id", null: false
2944 2945
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
2946
    t.string "name", null: false
2947
    t.string "version"
2948
    t.integer "package_type", limit: 2, null: false
2949
    t.index ["name"], name: "index_packages_packages_on_name_trigram", opclass: :gin_trgm_ops, using: :gin
2950
    t.index ["project_id", "name", "version", "package_type"], name: "idx_packages_packages_on_project_id_name_version_package_type"
2951
    t.index ["project_id"], name: "index_packages_packages_on_project_id"
2952 2953
  end

2954 2955 2956 2957 2958 2959 2960 2961 2962
  create_table "packages_tags", force: :cascade do |t|
    t.integer "package_id", null: false
    t.string "name", limit: 255, null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.index ["package_id", "updated_at"], name: "index_packages_tags_on_package_id_and_updated_at", order: { updated_at: :desc }
    t.index ["package_id"], name: "index_packages_tags_on_package_id"
  end

2963 2964 2965 2966 2967 2968 2969 2970 2971 2972
  create_table "pages_domain_acme_orders", force: :cascade do |t|
    t.integer "pages_domain_id", null: false
    t.datetime_with_timezone "expires_at", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.string "url", null: false
    t.string "challenge_token", null: false
    t.text "challenge_file_content", null: false
    t.text "encrypted_private_key", null: false
    t.text "encrypted_private_key_iv", null: false
2973 2974
    t.index ["challenge_token"], name: "index_pages_domain_acme_orders_on_challenge_token"
    t.index ["pages_domain_id"], name: "index_pages_domain_acme_orders_on_pages_domain_id"
2975 2976
  end

Jasper Maes's avatar
Jasper Maes committed
2977
  create_table "pages_domains", id: :serial, force: :cascade do |t|
Kamil Trzcinski's avatar
Kamil Trzcinski committed
2978
    t.integer "project_id"
2979 2980 2981 2982 2983
    t.text "certificate"
    t.text "encrypted_key"
    t.string "encrypted_key_iv"
    t.string "encrypted_key_salt"
    t.string "domain"
2984 2985 2986
    t.datetime_with_timezone "verified_at"
    t.string "verification_code", null: false
    t.datetime_with_timezone "enabled_until"
2987
    t.datetime_with_timezone "remove_at"
2988
    t.boolean "auto_ssl_enabled", default: false, null: false
2989 2990
    t.datetime_with_timezone "certificate_valid_not_before"
    t.datetime_with_timezone "certificate_valid_not_after"
2991
    t.integer "certificate_source", limit: 2, default: 0, null: false
2992 2993
    t.boolean "wildcard", default: false, null: false
    t.integer "domain_type", limit: 2, default: 2, null: false
2994 2995
    t.index ["certificate_source", "certificate_valid_not_after"], name: "index_pages_domains_need_auto_ssl_renewal", where: "(auto_ssl_enabled = true)"
    t.index ["domain"], name: "index_pages_domains_on_domain", unique: true
2996
    t.index ["domain_type"], name: "index_pages_domains_on_domain_type"
2997 2998 2999 3000 3001
    t.index ["project_id", "enabled_until"], name: "index_pages_domains_on_project_id_and_enabled_until"
    t.index ["project_id"], name: "index_pages_domains_on_project_id"
    t.index ["remove_at"], name: "index_pages_domains_on_remove_at"
    t.index ["verified_at", "enabled_until"], name: "index_pages_domains_on_verified_at_and_enabled_until"
    t.index ["verified_at"], name: "index_pages_domains_on_verified_at"
3002
    t.index ["wildcard"], name: "index_pages_domains_on_wildcard"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
3003 3004
  end

Jasper Maes's avatar
Jasper Maes committed
3005
  create_table "path_locks", id: :serial, force: :cascade do |t|
3006 3007 3008
    t.string "path", null: false
    t.integer "project_id"
    t.integer "user_id"
Valery Sizov's avatar
Valery Sizov committed
3009 3010
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
3011 3012 3013
    t.index ["path"], name: "index_path_locks_on_path"
    t.index ["project_id"], name: "index_path_locks_on_project_id"
    t.index ["user_id"], name: "index_path_locks_on_user_id"
Valery Sizov's avatar
Valery Sizov committed
3014 3015
  end

Jasper Maes's avatar
Jasper Maes committed
3016
  create_table "personal_access_tokens", id: :serial, force: :cascade do |t|
3017 3018 3019
    t.integer "user_id", null: false
    t.string "name", null: false
    t.boolean "revoked", default: false
3020
    t.date "expires_at"
3021 3022
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
3023
    t.string "scopes", default: "--- []\n", null: false
Simon Vocella's avatar
Simon Vocella committed
3024
    t.boolean "impersonation", default: false, null: false
3025
    t.string "token_digest"
3026
    t.boolean "expire_notification_delivered", default: false, null: false
3027
    t.index ["token_digest"], name: "index_personal_access_tokens_on_token_digest", unique: true
3028
    t.index ["user_id", "expires_at"], name: "index_pat_on_user_id_and_expires_at"
3029
    t.index ["user_id"], name: "index_personal_access_tokens_on_user_id"
3030 3031
  end

Fabio Pitino's avatar
Fabio Pitino committed
3032 3033 3034 3035 3036
  create_table "plan_limits", force: :cascade do |t|
    t.bigint "plan_id", null: false
    t.integer "ci_active_pipelines", default: 0, null: false
    t.integer "ci_pipeline_size", default: 0, null: false
    t.integer "ci_active_jobs", default: 0, null: false
3037
    t.integer "project_hooks", default: 0, null: false
Fabio Pitino's avatar
Fabio Pitino committed
3038 3039 3040
    t.index ["plan_id"], name: "index_plan_limits_on_plan_id", unique: true
  end

Jasper Maes's avatar
Jasper Maes committed
3041
  create_table "plans", id: :serial, force: :cascade do |t|
3042 3043
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
3044 3045
    t.string "name"
    t.string "title"
3046
    t.index ["name"], name: "index_plans_on_name"
3047 3048
  end

Jasper Maes's avatar
Jasper Maes committed
3049
  create_table "pool_repositories", force: :cascade do |t|
3050 3051
    t.integer "shard_id", null: false
    t.string "disk_path"
3052 3053
    t.string "state"
    t.integer "source_project_id"
3054 3055
    t.index ["disk_path"], name: "index_pool_repositories_on_disk_path", unique: true
    t.index ["shard_id"], name: "index_pool_repositories_on_shard_id"
3056
    t.index ["source_project_id", "shard_id"], name: "index_pool_repositories_on_source_project_id_and_shard_id", unique: true
3057 3058
  end

Jasper Maes's avatar
Jasper Maes committed
3059
  create_table "programming_languages", id: :serial, force: :cascade do |t|
3060 3061 3062
    t.string "name", null: false
    t.string "color", null: false
    t.datetime_with_timezone "created_at", null: false
3063
    t.index ["name"], name: "index_programming_languages_on_name", unique: true
3064 3065
  end

Jasper Maes's avatar
Jasper Maes committed
3066
  create_table "project_alerting_settings", primary_key: "project_id", id: :integer, default: nil, force: :cascade do |t|
3067 3068 3069 3070
    t.string "encrypted_token", null: false
    t.string "encrypted_token_iv", null: false
  end

3071 3072 3073 3074 3075
  create_table "project_aliases", force: :cascade do |t|
    t.integer "project_id", null: false
    t.string "name", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
3076 3077
    t.index ["name"], name: "index_project_aliases_on_name", unique: true
    t.index ["project_id"], name: "index_project_aliases_on_project_id"
3078 3079
  end

3080
  create_table "project_authorizations", id: false, force: :cascade do |t|
3081 3082 3083
    t.integer "user_id", null: false
    t.integer "project_id", null: false
    t.integer "access_level", null: false
3084 3085
    t.index ["project_id"], name: "index_project_authorizations_on_project_id"
    t.index ["user_id", "project_id", "access_level"], name: "index_project_authorizations_on_user_id_project_id_access_level", unique: true
3086 3087
  end

Jasper Maes's avatar
Jasper Maes committed
3088
  create_table "project_auto_devops", id: :serial, force: :cascade do |t|
Zeger-Jan van de Weg's avatar
Zeger-Jan van de Weg committed
3089
    t.integer "project_id", null: false
3090 3091
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
3092
    t.boolean "enabled"
3093
    t.integer "deploy_strategy", default: 0, null: false
3094
    t.index ["project_id"], name: "index_project_auto_devops_on_project_id", unique: true
3095 3096
  end

Jasper Maes's avatar
Jasper Maes committed
3097
  create_table "project_ci_cd_settings", id: :serial, force: :cascade do |t|
3098 3099
    t.integer "project_id", null: false
    t.boolean "group_runners_enabled", default: true, null: false
3100
    t.boolean "merge_pipelines_enabled"
3101
    t.integer "default_git_depth"
3102
    t.index ["project_id"], name: "index_project_ci_cd_settings_on_project_id", unique: true
3103 3104
  end

Jasper Maes's avatar
Jasper Maes committed
3105
  create_table "project_custom_attributes", id: :serial, force: :cascade do |t|
3106 3107
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
3108 3109 3110
    t.integer "project_id", null: false
    t.string "key", null: false
    t.string "value", null: false
3111 3112
    t.index ["key", "value"], name: "index_project_custom_attributes_on_key_and_value"
    t.index ["project_id", "key"], name: "index_project_custom_attributes_on_project_id_and_key", unique: true
3113 3114
  end

Jasper Maes's avatar
Jasper Maes committed
3115
  create_table "project_daily_statistics", force: :cascade do |t|
3116 3117 3118
    t.integer "project_id", null: false
    t.integer "fetch_count", null: false
    t.date "date"
3119
    t.index ["project_id", "date"], name: "index_project_daily_statistics_on_project_id_and_date", unique: true, order: { date: :desc }
3120 3121
  end

Jasper Maes's avatar
Jasper Maes committed
3122
  create_table "project_deploy_tokens", id: :serial, force: :cascade do |t|
3123 3124
    t.integer "project_id", null: false
    t.integer "deploy_token_id", null: false
3125
    t.datetime_with_timezone "created_at", null: false
3126 3127
    t.index ["deploy_token_id"], name: "index_project_deploy_tokens_on_deploy_token_id"
    t.index ["project_id", "deploy_token_id"], name: "index_project_deploy_tokens_on_project_id_and_deploy_token_id", unique: true
3128 3129
  end

Jasper Maes's avatar
Jasper Maes committed
3130
  create_table "project_error_tracking_settings", primary_key: "project_id", id: :integer, default: nil, force: :cascade do |t|
3131 3132
    t.boolean "enabled", default: false, null: false
    t.string "api_url"
3133 3134
    t.string "encrypted_token"
    t.string "encrypted_token_iv"
3135 3136
    t.string "project_name"
    t.string "organization_name"
3137 3138
  end

Jasper Maes's avatar
Jasper Maes committed
3139
  create_table "project_feature_usages", primary_key: "project_id", id: :integer, default: nil, force: :cascade do |t|
3140 3141
    t.datetime "jira_dvcs_cloud_last_sync_at"
    t.datetime "jira_dvcs_server_last_sync_at"
3142 3143 3144
    t.index ["jira_dvcs_cloud_last_sync_at", "project_id"], name: "idx_proj_feat_usg_on_jira_dvcs_cloud_last_sync_at_and_proj_id", where: "(jira_dvcs_cloud_last_sync_at IS NOT NULL)"
    t.index ["jira_dvcs_server_last_sync_at", "project_id"], name: "idx_proj_feat_usg_on_jira_dvcs_server_last_sync_at_and_proj_id", where: "(jira_dvcs_server_last_sync_at IS NOT NULL)"
    t.index ["project_id"], name: "index_project_feature_usages_on_project_id"
3145 3146
  end

Jasper Maes's avatar
Jasper Maes committed
3147
  create_table "project_features", id: :serial, force: :cascade do |t|
3148
    t.integer "project_id", null: false
3149 3150 3151
    t.integer "merge_requests_access_level"
    t.integer "issues_access_level"
    t.integer "wiki_access_level"
3152
    t.integer "snippets_access_level", default: 20, null: false
3153
    t.integer "builds_access_level"
3154 3155
    t.datetime "created_at"
    t.datetime "updated_at"
3156
    t.integer "repository_access_level", default: 20, null: false
3157
    t.integer "pages_access_level", null: false
3158
    t.index ["project_id"], name: "index_project_features_on_project_id", unique: true
3159 3160
  end

Jasper Maes's avatar
Jasper Maes committed
3161
  create_table "project_group_links", id: :serial, force: :cascade do |t|
3162 3163
    t.integer "project_id", null: false
    t.integer "group_id", null: false
Valery Sizov's avatar
Valery Sizov committed
3164 3165
    t.datetime "created_at"
    t.datetime "updated_at"
3166 3167
    t.integer "group_access", default: 30, null: false
    t.date "expires_at"
3168 3169
    t.index ["group_id"], name: "index_project_group_links_on_group_id"
    t.index ["project_id"], name: "index_project_group_links_on_project_id"
Valery Sizov's avatar
Valery Sizov committed
3170 3171
  end

Jasper Maes's avatar
Jasper Maes committed
3172
  create_table "project_import_data", id: :serial, force: :cascade do |t|
3173
    t.integer "project_id"
3174 3175 3176 3177
    t.text "data"
    t.text "encrypted_credentials"
    t.string "encrypted_credentials_iv"
    t.string "encrypted_credentials_salt"
3178
    t.index ["project_id"], name: "index_project_import_data_on_project_id"
3179 3180
  end

Jasper Maes's avatar
Jasper Maes committed
3181
  create_table "project_incident_management_settings", primary_key: "project_id", id: :serial, force: :cascade do |t|
3182 3183
    t.boolean "create_issue", default: true, null: false
    t.boolean "send_email", default: false, null: false
3184 3185 3186
    t.text "issue_template_key"
  end

3187 3188 3189 3190
  create_table "project_metrics_settings", primary_key: "project_id", id: :integer, default: nil, force: :cascade do |t|
    t.string "external_dashboard_url", null: false
  end

Jasper Maes's avatar
Jasper Maes committed
3191
  create_table "project_mirror_data", id: :serial, force: :cascade do |t|
3192
    t.integer "project_id", null: false
3193 3194 3195
    t.integer "retry_count", default: 0, null: false
    t.datetime "last_update_started_at"
    t.datetime "last_update_scheduled_at"
3196
    t.datetime "next_execution_timestamp"
3197 3198
    t.string "status"
    t.string "jid"
3199
    t.text "last_error"
3200 3201
    t.datetime_with_timezone "last_update_at"
    t.datetime_with_timezone "last_successful_update_at"
3202 3203 3204 3205 3206
    t.index ["last_successful_update_at"], name: "index_project_mirror_data_on_last_successful_update_at"
    t.index ["last_update_at", "retry_count"], name: "index_project_mirror_data_on_last_update_at_and_retry_count"
    t.index ["next_execution_timestamp", "retry_count"], name: "index_mirror_data_on_next_execution_and_retry_count"
    t.index ["project_id"], name: "index_project_mirror_data_on_project_id", unique: true
    t.index ["status"], name: "index_project_mirror_data_on_status"
3207 3208
  end

3209 3210 3211 3212 3213 3214 3215
  create_table "project_pages_metadata", id: false, force: :cascade do |t|
    t.bigint "project_id", null: false
    t.boolean "deployed", default: false, null: false
    t.index ["project_id"], name: "index_project_pages_metadata_on_project_id", unique: true
    t.index ["project_id"], name: "index_project_pages_metadata_on_project_id_and_deployed_is_true", where: "(deployed = true)"
  end

Jasper Maes's avatar
Jasper Maes committed
3216
  create_table "project_repositories", force: :cascade do |t|
3217 3218
    t.integer "shard_id", null: false
    t.string "disk_path", null: false
3219
    t.integer "project_id", null: false
3220 3221 3222
    t.index ["disk_path"], name: "index_project_repositories_on_disk_path", unique: true
    t.index ["project_id"], name: "index_project_repositories_on_project_id", unique: true
    t.index ["shard_id"], name: "index_project_repositories_on_shard_id"
3223 3224
  end

Jasper Maes's avatar
Jasper Maes committed
3225
  create_table "project_repository_states", id: :serial, force: :cascade do |t|
3226 3227 3228 3229 3230
    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"
3231 3232 3233 3234
    t.datetime_with_timezone "repository_retry_at"
    t.datetime_with_timezone "wiki_retry_at"
    t.integer "repository_retry_count"
    t.integer "wiki_retry_count"
3235 3236
    t.datetime_with_timezone "last_repository_verification_ran_at"
    t.datetime_with_timezone "last_wiki_verification_ran_at"
3237 3238 3239 3240 3241 3242
    t.index ["last_repository_verification_failure"], name: "idx_repository_states_on_repository_failure_partial", where: "(last_repository_verification_failure IS NOT NULL)"
    t.index ["last_wiki_verification_failure"], name: "idx_repository_states_on_wiki_failure_partial", where: "(last_wiki_verification_failure IS NOT NULL)"
    t.index ["project_id", "last_repository_verification_ran_at"], name: "idx_repository_states_on_last_repository_verification_ran_at", where: "((repository_verification_checksum IS NOT NULL) AND (last_repository_verification_failure IS NULL))"
    t.index ["project_id", "last_wiki_verification_ran_at"], name: "idx_repository_states_on_last_wiki_verification_ran_at", where: "((wiki_verification_checksum IS NOT NULL) AND (last_wiki_verification_failure IS NULL))"
    t.index ["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)))"
    t.index ["project_id"], name: "index_project_repository_states_on_project_id", unique: true
3243 3244
  end

Jasper Maes's avatar
Jasper Maes committed
3245
  create_table "project_statistics", id: :serial, force: :cascade do |t|
3246 3247
    t.integer "project_id", null: false
    t.integer "namespace_id", null: false
3248 3249 3250 3251 3252 3253
    t.bigint "commit_count", default: 0, null: false
    t.bigint "storage_size", default: 0, null: false
    t.bigint "repository_size", default: 0, null: false
    t.bigint "lfs_objects_size", default: 0, null: false
    t.bigint "build_artifacts_size", default: 0, null: false
    t.bigint "shared_runners_seconds", default: 0, null: false
3254
    t.datetime "shared_runners_seconds_last_reset"
3255
    t.bigint "packages_size", default: 0, null: false
3256
    t.bigint "wiki_size"
3257 3258
    t.index ["namespace_id"], name: "index_project_statistics_on_namespace_id"
    t.index ["project_id"], name: "index_project_statistics_on_project_id", unique: true
3259 3260
  end

Jasper Maes's avatar
Jasper Maes committed
3261
  create_table "project_tracing_settings", force: :cascade do |t|
Simon Knox's avatar
Simon Knox committed
3262 3263 3264 3265
    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_url", null: false
3266
    t.index ["project_id"], name: "index_project_tracing_settings_on_project_id", unique: true
Simon Knox's avatar
Simon Knox committed
3267 3268
  end

Jasper Maes's avatar
Jasper Maes committed
3269
  create_table "projects", id: :serial, force: :cascade do |t|
3270 3271 3272
    t.string "name"
    t.string "path"
    t.text "description"
3273 3274
    t.datetime "created_at"
    t.datetime "updated_at"
3275
    t.integer "creator_id"
3276
    t.integer "namespace_id", null: false
3277
    t.datetime "last_activity_at"
3278 3279 3280 3281 3282 3283
    t.string "import_url"
    t.integer "visibility_level", default: 0, null: false
    t.boolean "archived", default: false, null: false
    t.string "avatar"
    t.text "merge_requests_template"
    t.integer "star_count", default: 0, null: false
3284
    t.boolean "merge_requests_rebase_enabled", default: false
3285 3286 3287 3288
    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
3289
    t.boolean "merge_requests_ff_only_enabled", default: false
3290 3291
    t.text "issues_template"
    t.boolean "mirror", default: false, null: false
Tiago Botelho's avatar
Tiago Botelho committed
3292 3293
    t.datetime "mirror_last_update_at"
    t.datetime "mirror_last_successful_update_at"
3294 3295 3296 3297 3298 3299 3300 3301 3302 3303
    t.integer "mirror_user_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"
3304
    t.datetime "last_repository_check_at"
3305
    t.boolean "container_registry_enabled"
3306
    t.boolean "only_allow_merge_if_pipeline_succeeds", default: false, null: false
3307 3308
    t.boolean "has_external_issue_tracker"
    t.string "repository_storage", default: "default", null: false
3309
    t.boolean "repository_read_only"
3310
    t.boolean "request_access_enabled", default: true, null: false
3311
    t.boolean "has_external_wiki"
3312
    t.string "ci_config_path"
3313 3314
    t.boolean "lfs_enabled"
    t.text "description_html"
3315
    t.boolean "only_allow_merge_if_all_discussions_are_resolved"
3316
    t.bigint "repository_size_limit"
3317
    t.boolean "printing_merge_request_link_enabled", default: true, null: false
3318
    t.integer "auto_cancel_pending_pipelines", default: 1, null: false
3319
    t.boolean "service_desk_enabled", default: true
3320
    t.integer "cached_markdown_version"
3321
    t.text "delete_error"
3322
    t.datetime "last_repository_updated_at"
Simon Knox's avatar
Simon Knox committed
3323
    t.boolean "disable_overriding_approvers_per_merge_request"
3324
    t.integer "storage_version", limit: 2
Sean McGivern's avatar
Sean McGivern committed
3325
    t.boolean "resolve_outdated_diff_discussions"
3326
    t.boolean "remote_mirror_available_overridden"
3327
    t.boolean "only_mirror_protected_branches"
3328
    t.boolean "pull_mirror_available_overridden"
3329
    t.integer "jobs_cache_index"
3330
    t.string "external_authorization_classification_label"
3331
    t.boolean "mirror_overwrites_diverged_branches"
Rob Watson's avatar
Rob Watson committed
3332
    t.boolean "pages_https_only", default: true
3333
    t.string "external_webhook_token"
3334
    t.boolean "packages_enabled"
3335
    t.boolean "merge_requests_author_approval"
3336
    t.bigint "pool_repository_id"
3337
    t.string "runners_token_encrypted"
3338
    t.string "bfg_object_map"
3339
    t.boolean "detected_repository_languages"
3340
    t.boolean "merge_requests_disable_committers_approval"
3341
    t.boolean "require_password_to_approve"
3342
    t.boolean "emails_disabled"
3343 3344
    t.integer "max_pages_size"
    t.integer "max_artifacts_size"
3345
    t.string "pull_mirror_branch_prefix", limit: 50
3346
    t.boolean "remove_source_branch_after_merge"
3347 3348
    t.date "marked_for_deletion_at"
    t.integer "marked_for_deletion_by_user_id"
3349
    t.boolean "autoclose_referenced_issues"
3350
    t.index "lower((name)::text)", name: "index_projects_on_lower_name"
3351
    t.index ["created_at", "id"], name: "index_projects_on_created_at_and_id"
3352 3353 3354
    t.index ["creator_id"], name: "index_projects_on_creator_id"
    t.index ["description"], name: "index_projects_on_description_trigram", opclass: :gin_trgm_ops, using: :gin
    t.index ["id", "repository_storage", "last_repository_updated_at"], name: "idx_projects_on_repository_storage_last_repository_updated_at"
3355
    t.index ["id"], name: "index_on_id_partial_with_legacy_storage", where: "((storage_version < 2) OR (storage_version IS NULL))"
3356 3357 3358 3359 3360 3361
    t.index ["id"], name: "index_projects_on_id_partial_for_visibility", unique: true, where: "(visibility_level = ANY (ARRAY[10, 20]))"
    t.index ["id"], name: "index_projects_on_mirror_and_mirror_trigger_builds_both_true", where: "((mirror IS TRUE) AND (mirror_trigger_builds IS TRUE))"
    t.index ["last_activity_at"], name: "index_projects_on_last_activity_at"
    t.index ["last_repository_check_at"], name: "index_projects_on_last_repository_check_at", where: "(last_repository_check_at IS NOT NULL)"
    t.index ["last_repository_check_failed"], name: "index_projects_on_last_repository_check_failed"
    t.index ["last_repository_updated_at"], name: "index_projects_on_last_repository_updated_at"
3362
    t.index ["marked_for_deletion_at"], name: "index_projects_on_marked_for_deletion_at", where: "(marked_for_deletion_at IS NOT NULL)"
3363
    t.index ["marked_for_deletion_by_user_id"], name: "index_projects_on_marked_for_deletion_by_user_id", where: "(marked_for_deletion_by_user_id IS NOT NULL)"
3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376
    t.index ["mirror_last_successful_update_at"], name: "index_projects_on_mirror_last_successful_update_at"
    t.index ["mirror_user_id"], name: "index_projects_on_mirror_user_id"
    t.index ["name"], name: "index_projects_on_name_trigram", opclass: :gin_trgm_ops, using: :gin
    t.index ["namespace_id"], name: "index_projects_on_namespace_id"
    t.index ["path"], name: "index_projects_on_path"
    t.index ["path"], name: "index_projects_on_path_trigram", opclass: :gin_trgm_ops, using: :gin
    t.index ["pending_delete"], name: "index_projects_on_pending_delete"
    t.index ["pool_repository_id"], name: "index_projects_on_pool_repository_id", where: "(pool_repository_id IS NOT NULL)"
    t.index ["repository_storage", "created_at"], name: "idx_project_repository_check_partial", where: "(last_repository_check_at IS NULL)"
    t.index ["repository_storage"], name: "index_projects_on_repository_storage"
    t.index ["runners_token"], name: "index_projects_on_runners_token"
    t.index ["runners_token_encrypted"], name: "index_projects_on_runners_token_encrypted"
    t.index ["star_count"], name: "index_projects_on_star_count"
3377 3378
    t.index ["visibility_level", "created_at", "id"], name: "index_projects_on_visibility_level_created_at_desc_id_desc", order: { created_at: :desc, id: :desc }
    t.index ["visibility_level", "created_at", "id"], name: "index_projects_on_visibility_level_created_at_id_desc", order: { id: :desc }
3379
  end
Andrew8xx8's avatar
Andrew8xx8 committed
3380

Jasper Maes's avatar
Jasper Maes committed
3381
  create_table "prometheus_alert_events", force: :cascade do |t|
3382 3383 3384 3385 3386 3387
    t.integer "project_id", null: false
    t.integer "prometheus_alert_id", null: false
    t.datetime_with_timezone "started_at", null: false
    t.datetime_with_timezone "ended_at"
    t.integer "status", limit: 2
    t.string "payload_key"
3388 3389
    t.index ["project_id", "status"], name: "index_prometheus_alert_events_on_project_id_and_status"
    t.index ["prometheus_alert_id", "payload_key"], name: "index_prometheus_alert_event_scoped_payload_key", unique: true
3390 3391
  end

Jasper Maes's avatar
Jasper Maes committed
3392
  create_table "prometheus_alerts", id: :serial, force: :cascade do |t|
3393 3394 3395 3396 3397 3398 3399
    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
3400 3401 3402
    t.index ["environment_id"], name: "index_prometheus_alerts_on_environment_id"
    t.index ["project_id", "prometheus_metric_id", "environment_id"], name: "index_prometheus_alerts_metric_environment", unique: true
    t.index ["prometheus_metric_id"], name: "index_prometheus_alerts_on_prometheus_metric_id"
3403 3404
  end

Jasper Maes's avatar
Jasper Maes committed
3405
  create_table "prometheus_metrics", id: :serial, force: :cascade do |t|
3406
    t.integer "project_id"
3407 3408
    t.string "title", null: false
    t.string "query", null: false
3409 3410
    t.string "y_label", null: false
    t.string "unit", null: false
3411
    t.string "legend"
3412
    t.integer "group", null: false
3413 3414
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
3415 3416
    t.boolean "common", default: false, null: false
    t.string "identifier"
3417 3418 3419 3420
    t.index ["common"], name: "index_prometheus_metrics_on_common"
    t.index ["group"], name: "index_prometheus_metrics_on_group"
    t.index ["identifier"], name: "index_prometheus_metrics_on_identifier", unique: true
    t.index ["project_id"], name: "index_prometheus_metrics_on_project_id"
3421 3422
  end

Jasper Maes's avatar
Jasper Maes committed
3423
  create_table "protected_branch_merge_access_levels", id: :serial, force: :cascade do |t|
3424
    t.integer "protected_branch_id", null: false
3425
    t.integer "access_level", default: 40
3426 3427 3428
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.integer "user_id"
3429
    t.integer "group_id"
3430 3431 3432
    t.index ["group_id"], name: "index_protected_branch_merge_access_levels_on_group_id"
    t.index ["protected_branch_id"], name: "index_protected_branch_merge_access"
    t.index ["user_id"], name: "index_protected_branch_merge_access_levels_on_user_id"
3433 3434
  end

Jasper Maes's avatar
Jasper Maes committed
3435
  create_table "protected_branch_push_access_levels", id: :serial, force: :cascade do |t|
3436
    t.integer "protected_branch_id", null: false
3437
    t.integer "access_level", default: 40
3438 3439 3440
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.integer "user_id"
3441
    t.integer "group_id"
3442 3443 3444
    t.index ["group_id"], name: "index_protected_branch_push_access_levels_on_group_id"
    t.index ["protected_branch_id"], name: "index_protected_branch_push_access"
    t.index ["user_id"], name: "index_protected_branch_push_access_levels_on_user_id"
3445 3446
  end

Jasper Maes's avatar
Jasper Maes committed
3447
  create_table "protected_branch_unprotect_access_levels", id: :serial, force: :cascade do |t|
3448 3449 3450 3451
    t.integer "protected_branch_id", null: false
    t.integer "access_level", default: 40
    t.integer "user_id"
    t.integer "group_id"
3452 3453 3454
    t.index ["group_id"], name: "index_protected_branch_unprotect_access_levels_on_group_id"
    t.index ["protected_branch_id"], name: "index_protected_branch_unprotect_access"
    t.index ["user_id"], name: "index_protected_branch_unprotect_access_levels_on_user_id"
3455 3456
  end

Jasper Maes's avatar
Jasper Maes committed
3457
  create_table "protected_branches", id: :serial, force: :cascade do |t|
3458 3459
    t.integer "project_id", null: false
    t.string "name", null: false
Kamil Trzcinski's avatar
Kamil Trzcinski committed
3460 3461
    t.datetime "created_at"
    t.datetime "updated_at"
3462 3463
    t.boolean "code_owner_approval_required", default: false, null: false
    t.index ["project_id", "code_owner_approval_required"], name: "code_owner_approval_required", where: "(code_owner_approval_required = true)"
3464
    t.index ["project_id"], name: "index_protected_branches_on_project_id"
Andrew8xx8's avatar
Andrew8xx8 committed
3465 3466
  end

Jasper Maes's avatar
Jasper Maes committed
3467
  create_table "protected_environment_deploy_access_levels", id: :serial, force: :cascade do |t|
3468 3469 3470 3471 3472 3473
    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"
3474 3475 3476
    t.index ["group_id"], name: "index_protected_environment_deploy_access_levels_on_group_id"
    t.index ["protected_environment_id"], name: "index_protected_environment_deploy_access"
    t.index ["user_id"], name: "index_protected_environment_deploy_access_levels_on_user_id"
3477 3478
  end

Jasper Maes's avatar
Jasper Maes committed
3479
  create_table "protected_environments", id: :serial, force: :cascade do |t|
3480 3481 3482 3483
    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
3484 3485
    t.index ["project_id", "name"], name: "index_protected_environments_on_project_id_and_name", unique: true
    t.index ["project_id"], name: "index_protected_environments_on_project_id"
3486 3487
  end

Jasper Maes's avatar
Jasper Maes committed
3488
  create_table "protected_tag_create_access_levels", id: :serial, force: :cascade do |t|
3489 3490 3491 3492 3493 3494
    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
3495 3496 3497
    t.index ["group_id"], name: "index_protected_tag_create_access_levels_on_group_id"
    t.index ["protected_tag_id"], name: "index_protected_tag_create_access"
    t.index ["user_id"], name: "index_protected_tag_create_access_levels_on_user_id"
3498 3499
  end

Jasper Maes's avatar
Jasper Maes committed
3500
  create_table "protected_tags", id: :serial, force: :cascade do |t|
3501 3502 3503 3504
    t.integer "project_id", null: false
    t.string "name", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
3505 3506
    t.index ["project_id", "name"], name: "index_protected_tags_on_project_id_and_name", unique: true
    t.index ["project_id"], name: "index_protected_tags_on_project_id"
3507 3508
  end

3509
  create_table "push_event_payloads", id: false, force: :cascade do |t|
3510
    t.bigint "commit_count", null: false
3511 3512 3513 3514 3515 3516 3517
    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
3518
    t.integer "ref_count"
3519
    t.index ["event_id"], name: "index_push_event_payloads_on_event_id", unique: true
3520 3521
  end

Jasper Maes's avatar
Jasper Maes committed
3522
  create_table "push_rules", id: :serial, force: :cascade do |t|
3523 3524 3525 3526 3527
    t.string "force_push_regex"
    t.string "delete_branch_regex"
    t.string "commit_message_regex"
    t.boolean "deny_delete_tag"
    t.integer "project_id"
3528 3529
    t.datetime "created_at"
    t.datetime "updated_at"
3530 3531 3532 3533 3534 3535
    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
3536
    t.string "branch_name_regex"
3537
    t.boolean "reject_unsigned_commits"
3538
    t.boolean "commit_committer_check"
3539
    t.boolean "regexp_uses_re2", default: true
3540
    t.string "commit_message_negative_regex"
3541 3542
    t.index ["is_sample"], name: "index_push_rules_on_is_sample", where: "is_sample"
    t.index ["project_id"], name: "index_push_rules_on_project_id"
3543 3544
  end

Jasper Maes's avatar
Jasper Maes committed
3545
  create_table "redirect_routes", id: :serial, force: :cascade do |t|
3546 3547 3548 3549 3550
    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
3551
    t.index "lower((path)::text) varchar_pattern_ops", name: "index_redirect_routes_on_path_unique_text_pattern_ops", unique: true
3552 3553
    t.index ["path"], name: "index_redirect_routes_on_path", unique: true
    t.index ["source_type", "source_id"], name: "index_redirect_routes_on_source_type_and_source_id"
3554 3555
  end

Jasper Maes's avatar
Jasper Maes committed
3556
  create_table "release_links", force: :cascade do |t|
3557 3558 3559 3560 3561
    t.integer "release_id", null: false
    t.string "url", null: false
    t.string "name", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
3562 3563
    t.index ["release_id", "name"], name: "index_release_links_on_release_id_and_name", unique: true
    t.index ["release_id", "url"], name: "index_release_links_on_release_id_and_url", unique: true
3564 3565
  end

Jasper Maes's avatar
Jasper Maes committed
3566
  create_table "releases", id: :serial, force: :cascade do |t|
3567 3568 3569
    t.string "tag"
    t.text "description"
    t.integer "project_id"
3570 3571
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
3572
    t.text "description_html"
3573
    t.integer "cached_markdown_version"
3574 3575 3576
    t.integer "author_id"
    t.string "name"
    t.string "sha"
3577
    t.datetime_with_timezone "released_at", null: false
3578 3579
    t.index ["author_id"], name: "index_releases_on_author_id"
    t.index ["project_id", "tag"], name: "index_releases_on_project_id_and_tag"
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
3580 3581
  end

Jasper Maes's avatar
Jasper Maes committed
3582
  create_table "remote_mirrors", id: :serial, force: :cascade do |t|
3583 3584 3585 3586
    t.integer "project_id"
    t.string "url"
    t.boolean "enabled", default: false
    t.string "update_status"
3587 3588
    t.datetime "last_update_at"
    t.datetime "last_successful_update_at"
3589 3590 3591 3592 3593 3594
    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
3595
    t.datetime "last_update_started_at"
3596
    t.boolean "only_protected_branches", default: false, null: false
3597
    t.string "remote_name"
3598
    t.boolean "error_notification_sent"
3599 3600
    t.index ["last_successful_update_at"], name: "index_remote_mirrors_on_last_successful_update_at"
    t.index ["project_id"], name: "index_remote_mirrors_on_project_id"
3601 3602
  end

3603 3604 3605 3606
  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
3607
    t.index ["project_id", "programming_language_id"], name: "index_repository_languages_on_project_and_languages_id", unique: true
3608 3609
  end

Jasper Maes's avatar
Jasper Maes committed
3610
  create_table "resource_label_events", force: :cascade do |t|
3611 3612 3613
    t.integer "action", null: false
    t.integer "issue_id"
    t.integer "merge_request_id"
Jan Provaznik's avatar
Jan Provaznik committed
3614
    t.integer "epic_id"
3615 3616 3617
    t.integer "label_id"
    t.integer "user_id"
    t.datetime_with_timezone "created_at", null: false
3618 3619 3620
    t.integer "cached_markdown_version"
    t.text "reference"
    t.text "reference_html"
3621 3622
    t.index ["epic_id"], name: "index_resource_label_events_on_epic_id"
    t.index ["issue_id"], name: "index_resource_label_events_on_issue_id"
Adam Hegyi's avatar
Adam Hegyi committed
3623
    t.index ["label_id", "action"], name: "index_resource_label_events_on_label_id_and_action"
3624 3625
    t.index ["merge_request_id"], name: "index_resource_label_events_on_merge_request_id"
    t.index ["user_id"], name: "index_resource_label_events_on_user_id"
3626 3627
  end

3628
  create_table "resource_weight_events", force: :cascade do |t|
3629 3630
    t.bigint "user_id", null: false
    t.bigint "issue_id", null: false
3631 3632 3633 3634 3635 3636
    t.integer "weight"
    t.datetime_with_timezone "created_at", null: false
    t.index ["issue_id", "weight"], name: "index_resource_weight_events_on_issue_id_and_weight"
    t.index ["user_id"], name: "index_resource_weight_events_on_user_id"
  end

Jasper Maes's avatar
Jasper Maes committed
3637
  create_table "reviews", force: :cascade do |t|
3638 3639 3640 3641
    t.integer "author_id"
    t.integer "merge_request_id", null: false
    t.integer "project_id", null: false
    t.datetime_with_timezone "created_at", null: false
3642 3643 3644
    t.index ["author_id"], name: "index_reviews_on_author_id"
    t.index ["merge_request_id"], name: "index_reviews_on_merge_request_id"
    t.index ["project_id"], name: "index_reviews_on_project_id"
3645 3646
  end

Jasper Maes's avatar
Jasper Maes committed
3647
  create_table "routes", id: :serial, force: :cascade do |t|
3648 3649 3650 3651 3652
    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"
3653
    t.string "name"
3654 3655 3656
    t.index ["path"], name: "index_routes_on_path", unique: true
    t.index ["path"], name: "index_routes_on_path_text_pattern_ops", opclass: :varchar_pattern_ops
    t.index ["source_type", "source_id"], name: "index_routes_on_source_type_and_source_id", unique: true
3657 3658
  end

Jasper Maes's avatar
Jasper Maes committed
3659
  create_table "saml_providers", id: :serial, force: :cascade do |t|
3660 3661 3662 3663
    t.integer "group_id", null: false
    t.boolean "enabled", null: false
    t.string "certificate_fingerprint", null: false
    t.string "sso_url", null: false
3664
    t.boolean "enforced_sso", default: false, null: false
3665
    t.boolean "enforced_group_managed_accounts", default: false, null: false
3666
    t.index ["group_id"], name: "index_saml_providers_on_group_id"
3667 3668
  end

Jasper Maes's avatar
Jasper Maes committed
3669
  create_table "scim_oauth_access_tokens", id: :serial, force: :cascade do |t|
James Lopez's avatar
James Lopez committed
3670 3671 3672
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "group_id", null: false
3673
    t.string "token_encrypted", null: false
3674
    t.index ["group_id", "token_encrypted"], name: "index_scim_oauth_access_tokens_on_group_id_and_token_encrypted", unique: true
James Lopez's avatar
James Lopez committed
3675 3676
  end

3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689
  create_table "self_managed_prometheus_alert_events", force: :cascade do |t|
    t.bigint "project_id", null: false
    t.bigint "environment_id"
    t.datetime_with_timezone "started_at", null: false
    t.datetime_with_timezone "ended_at"
    t.integer "status", limit: 2, null: false
    t.string "title", limit: 255, null: false
    t.string "query_expression", limit: 255
    t.string "payload_key", limit: 255, null: false
    t.index ["environment_id"], name: "index_self_managed_prometheus_alert_events_on_environment_id"
    t.index ["project_id", "payload_key"], name: "idx_project_id_payload_key_self_managed_prometheus_alert_events", unique: true
  end

Jasper Maes's avatar
Jasper Maes committed
3690
  create_table "sent_notifications", id: :serial, force: :cascade do |t|
Douwe Maan's avatar
Douwe Maan committed
3691 3692
    t.integer "project_id"
    t.integer "noteable_id"
3693
    t.string "noteable_type"
Douwe Maan's avatar
Douwe Maan committed
3694
    t.integer "recipient_id"
3695 3696 3697 3698 3699
    t.string "commit_id"
    t.string "reply_key", null: false
    t.string "line_code"
    t.string "note_type"
    t.text "position"
3700
    t.string "in_reply_to_discussion_id"
3701
    t.index ["reply_key"], name: "index_sent_notifications_on_reply_key", unique: true
Douwe Maan's avatar
Douwe Maan committed
3702 3703
  end

3704 3705 3706 3707 3708 3709
  create_table "sentry_issues", force: :cascade do |t|
    t.bigint "issue_id", null: false
    t.bigint "sentry_issue_identifier", null: false
    t.index ["issue_id"], name: "index_sentry_issues_on_issue_id", unique: true
  end

3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720
  create_table "serverless_domain_cluster", primary_key: "uuid", id: :string, limit: 14, force: :cascade do |t|
    t.bigint "pages_domain_id", null: false
    t.bigint "clusters_applications_knative_id", null: false
    t.bigint "creator_id"
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.index ["clusters_applications_knative_id"], name: "idx_serverless_domain_cluster_on_clusters_applications_knative", unique: true
    t.index ["creator_id"], name: "index_serverless_domain_cluster_on_creator_id"
    t.index ["pages_domain_id"], name: "index_serverless_domain_cluster_on_pages_domain_id"
  end

3721 3722
  create_table "service_desk_settings", primary_key: "project_id", id: :bigint, default: nil, force: :cascade do |t|
    t.string "issue_template_key", limit: 255
3723
    t.string "outgoing_name", limit: 255
3724 3725
  end

Jasper Maes's avatar
Jasper Maes committed
3726
  create_table "services", id: :serial, force: :cascade do |t|
3727 3728 3729
    t.string "type"
    t.string "title"
    t.integer "project_id"
3730 3731
    t.datetime "created_at"
    t.datetime "updated_at"
3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744
    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
3745
    t.boolean "commit_events", default: true, null: false
3746
    t.boolean "job_events", default: false, null: false
3747
    t.boolean "confidential_note_events", default: true
3748
    t.boolean "deployment_events", default: false, null: false
3749
    t.string "description", limit: 500
3750
    t.boolean "comment_on_event_enabled", default: true, null: false
3751 3752 3753
    t.index ["project_id"], name: "index_services_on_project_id"
    t.index ["template"], name: "index_services_on_template"
    t.index ["type"], name: "index_services_on_type"
Andrew8xx8's avatar
Andrew8xx8 committed
3754 3755
  end

Jasper Maes's avatar
Jasper Maes committed
3756
  create_table "shards", id: :serial, force: :cascade do |t|
3757
    t.string "name", null: false
3758
    t.index ["name"], name: "index_shards_on_name", unique: true
3759 3760
  end

Jasper Maes's avatar
Jasper Maes committed
3761
  create_table "slack_integrations", id: :serial, force: :cascade do |t|
Valery Sizov's avatar
Valery Sizov committed
3762 3763 3764 3765 3766
    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
3767 3768
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
3769 3770
    t.index ["service_id"], name: "index_slack_integrations_on_service_id"
    t.index ["team_id", "alias"], name: "index_slack_integrations_on_team_id_and_alias", unique: true
Valery Sizov's avatar
Valery Sizov committed
3771 3772
  end

Jasper Maes's avatar
Jasper Maes committed
3773
  create_table "smartcard_identities", force: :cascade do |t|
3774 3775 3776
    t.integer "user_id", null: false
    t.string "subject", null: false
    t.string "issuer", null: false
3777 3778
    t.index ["subject", "issuer"], name: "index_smartcard_identities_on_subject_and_issuer", unique: true
    t.index ["user_id"], name: "index_smartcard_identities_on_user_id"
3779
  end
3780

3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791
  create_table "snippet_user_mentions", force: :cascade do |t|
    t.integer "snippet_id", null: false
    t.integer "note_id"
    t.integer "mentioned_users_ids", array: true
    t.integer "mentioned_projects_ids", array: true
    t.integer "mentioned_groups_ids", array: true
    t.index ["note_id"], name: "index_snippet_user_mentions_on_note_id", unique: true, where: "(note_id IS NOT NULL)"
    t.index ["snippet_id", "note_id"], name: "snippet_user_mentions_on_snippet_id_and_note_id_index", unique: true
    t.index ["snippet_id"], name: "snippet_user_mentions_on_snippet_id_index", unique: true, where: "(note_id IS NULL)"
  end

Jasper Maes's avatar
Jasper Maes committed
3792
  create_table "snippets", id: :serial, force: :cascade do |t|
3793 3794 3795 3796
    t.string "title"
    t.text "content"
    t.integer "author_id", null: false
    t.integer "project_id"
3797 3798
    t.datetime "created_at"
    t.datetime "updated_at"
3799 3800 3801 3802 3803
    t.string "file_name"
    t.string "type"
    t.integer "visibility_level", default: 0, null: false
    t.text "title_html"
    t.text "content_html"
3804
    t.integer "cached_markdown_version"
3805 3806
    t.text "description"
    t.text "description_html"
3807 3808 3809
    t.string "encrypted_secret_token", limit: 255
    t.string "encrypted_secret_token_iv", limit: 255
    t.boolean "secret", default: false, null: false
3810 3811
    t.string "repository_storage", limit: 255, default: "default", null: false
    t.integer "storage_version", default: 2, null: false
3812
    t.index ["author_id"], name: "index_snippets_on_author_id"
3813
    t.index ["content"], name: "index_snippets_on_content_trigram", opclass: :gin_trgm_ops, using: :gin
3814
    t.index ["created_at"], name: "index_snippets_on_created_at"
3815
    t.index ["file_name"], name: "index_snippets_on_file_name_trigram", opclass: :gin_trgm_ops, using: :gin
3816
    t.index ["project_id", "visibility_level"], name: "index_snippets_on_project_id_and_visibility_level"
3817 3818
    t.index ["title"], name: "index_snippets_on_title_trigram", opclass: :gin_trgm_ops, using: :gin
    t.index ["updated_at"], name: "index_snippets_on_updated_at"
3819
    t.index ["visibility_level", "secret"], name: "index_snippets_on_visibility_level_and_secret"
Andrew8xx8's avatar
Andrew8xx8 committed
3820 3821
  end

Jasper Maes's avatar
Jasper Maes committed
3822
  create_table "software_license_policies", id: :serial, force: :cascade do |t|
3823 3824
    t.integer "project_id", null: false
    t.integer "software_license_id", null: false
3825
    t.integer "classification", default: 0, null: false
3826 3827
    t.datetime_with_timezone "created_at"
    t.datetime_with_timezone "updated_at"
3828 3829
    t.index ["project_id", "software_license_id"], name: "index_software_license_policies_unique_per_project", unique: true
    t.index ["software_license_id"], name: "index_software_license_policies_on_software_license_id"
3830 3831
  end

Jasper Maes's avatar
Jasper Maes committed
3832
  create_table "software_licenses", id: :serial, force: :cascade do |t|
3833
    t.string "name", null: false
3834
    t.string "spdx_identifier", limit: 255
3835
    t.index ["name"], name: "index_software_licenses_on_unique_name", unique: true
3836
    t.index ["spdx_identifier"], name: "index_software_licenses_on_spdx_identifier"
3837 3838
  end

Jasper Maes's avatar
Jasper Maes committed
3839
  create_table "spam_logs", id: :serial, force: :cascade do |t|
3840 3841 3842 3843 3844 3845 3846 3847 3848 3849
    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
3850
    t.boolean "recaptcha_verified", default: false, null: false
3851 3852
  end

Jasper Maes's avatar
Jasper Maes committed
3853
  create_table "subscriptions", id: :serial, force: :cascade do |t|
3854 3855 3856 3857
    t.integer "user_id"
    t.integer "subscribable_id"
    t.string "subscribable_type"
    t.boolean "subscribed"
Valery Sizov's avatar
Valery Sizov committed
3858 3859
    t.datetime "created_at"
    t.datetime "updated_at"
3860
    t.integer "project_id"
3861 3862
    t.index ["project_id"], name: "index_subscriptions_on_project_id"
    t.index ["subscribable_id", "subscribable_type", "user_id", "project_id"], name: "index_subscriptions_on_subscribable_and_user_id_and_project_id", unique: true
Valery Sizov's avatar
Valery Sizov committed
3863 3864
  end

Jasper Maes's avatar
Jasper Maes committed
3865
  create_table "suggestions", force: :cascade do |t|
3866 3867 3868 3869 3870 3871
    t.integer "note_id", null: false
    t.integer "relative_order", limit: 2, null: false
    t.boolean "applied", default: false, null: false
    t.string "commit_id"
    t.text "from_content", null: false
    t.text "to_content", null: false
3872 3873
    t.integer "lines_above", default: 0, null: false
    t.integer "lines_below", default: 0, null: false
3874
    t.boolean "outdated", default: false, null: false
3875
    t.index ["note_id", "relative_order"], name: "index_suggestions_on_note_id_and_relative_order", unique: true
3876 3877
  end

Jasper Maes's avatar
Jasper Maes committed
3878
  create_table "system_note_metadata", id: :serial, force: :cascade do |t|
3879 3880
    t.integer "note_id", null: false
    t.integer "commit_count"
3881
    t.string "action"
3882 3883
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
3884 3885
    t.bigint "description_version_id"
    t.index ["description_version_id"], name: "index_system_note_metadata_on_description_version_id", unique: true, where: "(description_version_id IS NOT NULL)"
3886
    t.index ["note_id"], name: "index_system_note_metadata_on_note_id", unique: true
3887 3888
  end

Jasper Maes's avatar
Jasper Maes committed
3889
  create_table "taggings", id: :serial, force: :cascade do |t|
3890 3891 3892 3893 3894 3895
    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
3896
    t.datetime "created_at"
3897 3898 3899 3900
    t.index ["tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type"], name: "taggings_idx", unique: true
    t.index ["tag_id"], name: "index_taggings_on_tag_id"
    t.index ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context"
    t.index ["taggable_id", "taggable_type"], name: "index_taggings_on_taggable_id_and_taggable_type"
Andrew8xx8's avatar
Andrew8xx8 committed
3901 3902
  end

Jasper Maes's avatar
Jasper Maes committed
3903
  create_table "tags", id: :serial, force: :cascade do |t|
3904
    t.string "name"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
3905
    t.integer "taggings_count", default: 0
3906 3907
    t.index ["name"], name: "index_tags_on_name", unique: true
    t.index ["name"], name: "index_tags_on_name_trigram", opclass: :gin_trgm_ops, using: :gin
Andrew8xx8's avatar
Andrew8xx8 committed
3908 3909
  end

Jasper Maes's avatar
Jasper Maes committed
3910
  create_table "term_agreements", id: :serial, force: :cascade do |t|
3911 3912 3913 3914 3915
    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
3916 3917 3918
    t.index ["term_id"], name: "index_term_agreements_on_term_id"
    t.index ["user_id", "term_id"], name: "term_agreements_unique_index", unique: true
    t.index ["user_id"], name: "index_term_agreements_on_user_id"
3919 3920
  end

Jasper Maes's avatar
Jasper Maes committed
3921
  create_table "timelogs", id: :serial, force: :cascade do |t|
3922
    t.integer "time_spent", null: false
3923
    t.integer "user_id"
3924 3925
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
3926 3927
    t.integer "issue_id"
    t.integer "merge_request_id"
3928
    t.datetime "spent_at"
3929 3930
    t.index ["issue_id"], name: "index_timelogs_on_issue_id"
    t.index ["merge_request_id"], name: "index_timelogs_on_merge_request_id"
3931
    t.index ["spent_at"], name: "index_timelogs_on_spent_at", where: "(spent_at IS NOT NULL)"
3932
    t.index ["user_id"], name: "index_timelogs_on_user_id"
3933 3934
  end

Jasper Maes's avatar
Jasper Maes committed
3935
  create_table "todos", id: :serial, force: :cascade do |t|
3936
    t.integer "user_id", null: false
3937
    t.integer "project_id"
3938 3939
    t.integer "target_id"
    t.string "target_type", null: false
3940
    t.integer "author_id", null: false
3941 3942
    t.integer "action", null: false
    t.string "state", null: false
Douglas Barbosa Alexandre's avatar
Douglas Barbosa Alexandre committed
3943 3944
    t.datetime "created_at"
    t.datetime "updated_at"
3945 3946
    t.integer "note_id"
    t.string "commit_id"
3947
    t.integer "group_id"
3948 3949 3950 3951 3952 3953 3954 3955 3956
    t.index ["author_id"], name: "index_todos_on_author_id"
    t.index ["commit_id"], name: "index_todos_on_commit_id"
    t.index ["group_id"], name: "index_todos_on_group_id"
    t.index ["note_id"], name: "index_todos_on_note_id"
    t.index ["project_id"], name: "index_todos_on_project_id"
    t.index ["target_type", "target_id"], name: "index_todos_on_target_type_and_target_id"
    t.index ["user_id", "id"], name: "index_todos_on_user_id_and_id_done", where: "((state)::text = 'done'::text)"
    t.index ["user_id", "id"], name: "index_todos_on_user_id_and_id_pending", where: "((state)::text = 'pending'::text)"
    t.index ["user_id"], name: "index_todos_on_user_id"
Douglas Barbosa Alexandre's avatar
Douglas Barbosa Alexandre committed
3957 3958
  end

Jasper Maes's avatar
Jasper Maes committed
3959
  create_table "trending_projects", id: :serial, force: :cascade do |t|
3960
    t.integer "project_id", null: false
3961
    t.index ["project_id"], name: "index_trending_projects_on_project_id", unique: true
3962 3963
  end

Jasper Maes's avatar
Jasper Maes committed
3964
  create_table "u2f_registrations", id: :serial, force: :cascade do |t|
3965 3966 3967 3968 3969 3970 3971 3972
    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"
3973 3974
    t.index ["key_handle"], name: "index_u2f_registrations_on_key_handle"
    t.index ["user_id"], name: "index_u2f_registrations_on_user_id"
3975 3976
  end

Jasper Maes's avatar
Jasper Maes committed
3977
  create_table "uploads", id: :serial, force: :cascade do |t|
3978
    t.bigint "size", null: false
3979
    t.string "path", limit: 511, null: false
3980 3981 3982 3983 3984
    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
3985
    t.integer "store"
Micaël Bergeron's avatar
Micaël Bergeron committed
3986 3987
    t.string "mount_point"
    t.string "secret"
3988 3989 3990 3991
    t.index ["checksum"], name: "index_uploads_on_checksum"
    t.index ["model_id", "model_type"], name: "index_uploads_on_model_id_and_model_type"
    t.index ["store"], name: "index_uploads_on_store"
    t.index ["uploader", "path"], name: "index_uploads_on_uploader_and_path"
3992 3993
  end

Jasper Maes's avatar
Jasper Maes committed
3994
  create_table "user_agent_details", id: :serial, force: :cascade do |t|
3995 3996 3997 3998 3999 4000 4001
    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
4002
    t.index ["subject_id", "subject_type"], name: "index_user_agent_details_on_subject_id_and_subject_type"
4003 4004
  end

Jasper Maes's avatar
Jasper Maes committed
4005
  create_table "user_callouts", id: :serial, force: :cascade do |t|
4006
    t.integer "feature_name", null: false
4007
    t.integer "user_id", null: false
4008 4009
    t.index ["user_id", "feature_name"], name: "index_user_callouts_on_user_id_and_feature_name", unique: true
    t.index ["user_id"], name: "index_user_callouts_on_user_id"
4010 4011
  end

Jasper Maes's avatar
Jasper Maes committed
4012
  create_table "user_custom_attributes", id: :serial, force: :cascade do |t|
4013 4014
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
4015 4016 4017
    t.integer "user_id", null: false
    t.string "key", null: false
    t.string "value", null: false
4018 4019
    t.index ["key", "value"], name: "index_user_custom_attributes_on_key_and_value"
    t.index ["user_id", "key"], name: "index_user_custom_attributes_on_user_id_and_key", unique: true
4020 4021
  end

4022 4023 4024
  create_table "user_interacted_projects", id: false, force: :cascade do |t|
    t.integer "user_id", null: false
    t.integer "project_id", null: false
4025 4026
    t.index ["project_id", "user_id"], name: "index_user_interacted_projects_on_project_id_and_user_id", unique: true
    t.index ["user_id"], name: "index_user_interacted_projects_on_user_id"
4027 4028
  end

Jasper Maes's avatar
Jasper Maes committed
4029
  create_table "user_preferences", id: :serial, force: :cascade do |t|
4030 4031 4032 4033 4034
    t.integer "user_id", null: false
    t.integer "issue_notes_filter", limit: 2, default: 0, null: false
    t.integer "merge_request_notes_filter", limit: 2, default: 0, null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
Felipe Artur's avatar
Felipe Artur committed
4035
    t.string "epics_sort"
4036
    t.integer "roadmap_epics_state"
Felipe Artur's avatar
Felipe Artur committed
4037
    t.integer "epic_notes_filter", limit: 2, default: 0, null: false
4038 4039
    t.string "issues_sort"
    t.string "merge_requests_sort"
4040
    t.string "roadmaps_sort"
4041
    t.integer "first_day_of_week"
4042 4043 4044
    t.string "timezone"
    t.boolean "time_display_relative"
    t.boolean "time_format_in_24h"
4045
    t.string "projects_sort", limit: 64
4046
    t.boolean "show_whitespace_in_diffs", default: true, null: false
4047
    t.boolean "sourcegraph_enabled"
Alex Buijs's avatar
Alex Buijs committed
4048
    t.boolean "setup_for_company"
4049
    t.boolean "render_whitespace_in_code"
4050
    t.index ["user_id"], name: "index_user_preferences_on_user_id", unique: true
4051 4052
  end

Jasper Maes's avatar
Jasper Maes committed
4053
  create_table "user_statuses", primary_key: "user_id", id: :serial, force: :cascade do |t|
4054 4055 4056 4057
    t.integer "cached_markdown_version"
    t.string "emoji", default: "speech_balloon", null: false
    t.string "message", limit: 100
    t.string "message_html"
4058
    t.index ["user_id"], name: "index_user_statuses_on_user_id"
4059 4060
  end

Jasper Maes's avatar
Jasper Maes committed
4061
  create_table "user_synced_attributes_metadata", id: :serial, force: :cascade do |t|
4062 4063 4064 4065 4066
    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"
4067
    t.index ["user_id"], name: "index_user_synced_attributes_metadata_on_user_id", unique: true
4068 4069
  end

Jasper Maes's avatar
Jasper Maes committed
4070
  create_table "users", id: :serial, force: :cascade do |t|
4071 4072 4073
    t.string "email", default: "", null: false
    t.string "encrypted_password", default: "", null: false
    t.string "reset_password_token"
Andrew8xx8's avatar
Andrew8xx8 committed
4074 4075
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
4076
    t.integer "sign_in_count", default: 0
Andrew8xx8's avatar
Andrew8xx8 committed
4077 4078
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
4079 4080
    t.string "current_sign_in_ip"
    t.string "last_sign_in_ip"
4081 4082
    t.datetime "created_at"
    t.datetime "updated_at"
4083 4084
    t.string "name"
    t.boolean "admin", default: false, null: false
4085
    t.integer "projects_limit", null: false
4086 4087 4088 4089 4090
    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
4091
    t.datetime "locked_at"
4092 4093 4094 4095 4096
    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
4097
    t.datetime "password_expires_at"
4098
    t.integer "created_by_id"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
4099
    t.datetime "last_credential_check_at"
4100 4101
    t.string "avatar"
    t.string "confirmation_token"
4102 4103
    t.datetime "confirmed_at"
    t.datetime "confirmation_sent_at"
4104 4105 4106
    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
4107
    t.datetime "admin_email_unsubscribed_at"
4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124
    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"
4125
    t.datetime "otp_grace_period_started_at"
4126
    t.boolean "external", default: false
Nick Thomas's avatar
Nick Thomas committed
4127
    t.string "incoming_email_token"
4128
    t.string "organization"
4129
    t.boolean "auditor", default: false, null: false
4130 4131
    t.boolean "require_two_factor_authentication_from_group", default: false, null: false
    t.integer "two_factor_grace_period", default: 48, null: false
4132
    t.boolean "ghost"
4133
    t.date "last_activity_on"
4134
    t.boolean "notified_of_own_activity"
4135
    t.string "preferred_language"
4136 4137
    t.boolean "email_opted_in"
    t.string "email_opted_in_ip"
4138
    t.integer "email_opted_in_source_id"
4139
    t.datetime "email_opted_in_at"
4140
    t.integer "theme_id", limit: 2
4141
    t.integer "accepted_term_id"
Micaël Bergeron's avatar
Micaël Bergeron committed
4142
    t.string "feed_token"
4143
    t.boolean "private_profile", default: false, null: false
Mark Chao's avatar
Mark Chao committed
4144
    t.integer "roadmap_layout", limit: 2
4145
    t.boolean "include_private_contributions"
4146
    t.string "commit_email"
4147
    t.integer "group_view"
4148
    t.integer "managing_group_id"
4149
    t.integer "bot_type", limit: 2
4150 4151
    t.string "first_name", limit: 255
    t.string "last_name", limit: 255
4152
    t.string "static_object_token", limit: 255
Alex Buijs's avatar
Alex Buijs committed
4153
    t.integer "role", limit: 2
4154
    t.index "lower((name)::text)", name: "index_on_users_name_lower"
4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171
    t.index ["accepted_term_id"], name: "index_users_on_accepted_term_id"
    t.index ["admin"], name: "index_users_on_admin"
    t.index ["bot_type"], name: "index_users_on_bot_type"
    t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
    t.index ["created_at"], name: "index_users_on_created_at"
    t.index ["email"], name: "index_users_on_email", unique: true
    t.index ["email"], name: "index_users_on_email_trigram", opclass: :gin_trgm_ops, using: :gin
    t.index ["feed_token"], name: "index_users_on_feed_token"
    t.index ["ghost"], name: "index_users_on_ghost"
    t.index ["group_view"], name: "index_users_on_group_view"
    t.index ["incoming_email_token"], name: "index_users_on_incoming_email_token"
    t.index ["managing_group_id"], name: "index_users_on_managing_group_id"
    t.index ["name"], name: "index_users_on_name"
    t.index ["name"], name: "index_users_on_name_trigram", opclass: :gin_trgm_ops, using: :gin
    t.index ["public_email"], name: "index_users_on_public_email", where: "((public_email)::text <> ''::text)"
    t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
    t.index ["state"], name: "index_users_on_state"
4172 4173
    t.index ["state"], name: "index_users_on_state_and_internal", where: "(ghost IS NOT TRUE)"
    t.index ["state"], name: "index_users_on_state_and_internal_ee", where: "((ghost IS NOT TRUE) AND (bot_type IS NULL))"
4174
    t.index ["static_object_token"], name: "index_users_on_static_object_token", unique: true
4175
    t.index ["unconfirmed_email"], name: "index_users_on_unconfirmed_email", where: "(unconfirmed_email IS NOT NULL)"
4176 4177
    t.index ["username"], name: "index_users_on_username"
    t.index ["username"], name: "index_users_on_username_trigram", opclass: :gin_trgm_ops, using: :gin
Andrew8xx8's avatar
Andrew8xx8 committed
4178 4179
  end

Jasper Maes's avatar
Jasper Maes committed
4180
  create_table "users_ops_dashboard_projects", force: :cascade do |t|
4181 4182 4183 4184
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "user_id", null: false
    t.integer "project_id", null: false
4185 4186
    t.index ["project_id"], name: "index_users_ops_dashboard_projects_on_project_id"
    t.index ["user_id", "project_id"], name: "index_users_ops_dashboard_projects_on_user_id_and_project_id", unique: true
4187 4188
  end

4189 4190 4191 4192 4193 4194 4195
  create_table "users_security_dashboard_projects", id: false, force: :cascade do |t|
    t.bigint "user_id", null: false
    t.bigint "project_id", null: false
    t.index ["project_id", "user_id"], name: "users_security_dashboard_projects_unique_index", unique: true
    t.index ["user_id"], name: "index_users_security_dashboard_projects_on_user_id"
  end

Jasper Maes's avatar
Jasper Maes committed
4196
  create_table "users_star_projects", id: :serial, force: :cascade do |t|
4197 4198
    t.integer "project_id", null: false
    t.integer "user_id", null: false
Ciro Santilli's avatar
Ciro Santilli committed
4199 4200
    t.datetime "created_at"
    t.datetime "updated_at"
4201 4202
    t.index ["project_id"], name: "index_users_star_projects_on_project_id"
    t.index ["user_id", "project_id"], name: "index_users_star_projects_on_user_id_and_project_id", unique: true
Ciro Santilli's avatar
Ciro Santilli committed
4203 4204
  end

4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217
  create_table "vulnerabilities", force: :cascade do |t|
    t.bigint "milestone_id"
    t.bigint "epic_id"
    t.bigint "project_id", null: false
    t.bigint "author_id", null: false
    t.bigint "updated_by_id"
    t.bigint "last_edited_by_id"
    t.date "start_date"
    t.date "due_date"
    t.datetime_with_timezone "last_edited_at"
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.string "title", limit: 255, null: false
4218
    t.text "title_html"
4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229
    t.text "description"
    t.text "description_html"
    t.bigint "start_date_sourcing_milestone_id"
    t.bigint "due_date_sourcing_milestone_id"
    t.bigint "closed_by_id"
    t.datetime_with_timezone "closed_at"
    t.integer "state", limit: 2, default: 1, null: false
    t.integer "severity", limit: 2, null: false
    t.boolean "severity_overridden", default: false
    t.integer "confidence", limit: 2, null: false
    t.boolean "confidence_overridden", default: false
4230 4231
    t.bigint "resolved_by_id"
    t.datetime_with_timezone "resolved_at"
4232
    t.integer "report_type", limit: 2, null: false
4233
    t.integer "cached_markdown_version"
4234 4235 4236 4237 4238 4239 4240
    t.index ["author_id"], name: "index_vulnerabilities_on_author_id"
    t.index ["closed_by_id"], name: "index_vulnerabilities_on_closed_by_id"
    t.index ["due_date_sourcing_milestone_id"], name: "index_vulnerabilities_on_due_date_sourcing_milestone_id"
    t.index ["epic_id"], name: "index_vulnerabilities_on_epic_id"
    t.index ["last_edited_by_id"], name: "index_vulnerabilities_on_last_edited_by_id"
    t.index ["milestone_id"], name: "index_vulnerabilities_on_milestone_id"
    t.index ["project_id"], name: "index_vulnerabilities_on_project_id"
4241
    t.index ["resolved_by_id"], name: "index_vulnerabilities_on_resolved_by_id"
4242 4243 4244 4245
    t.index ["start_date_sourcing_milestone_id"], name: "index_vulnerabilities_on_start_date_sourcing_milestone_id"
    t.index ["updated_by_id"], name: "index_vulnerabilities_on_updated_by_id"
  end

Jasper Maes's avatar
Jasper Maes committed
4246
  create_table "vulnerability_feedback", id: :serial, force: :cascade do |t|
4247 4248 4249 4250 4251 4252 4253 4254 4255
    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
4256
    t.integer "merge_request_id"
4257 4258 4259
    t.integer "comment_author_id"
    t.text "comment"
    t.datetime_with_timezone "comment_timestamp"
4260 4261 4262 4263 4264 4265
    t.index ["author_id"], name: "index_vulnerability_feedback_on_author_id"
    t.index ["comment_author_id"], name: "index_vulnerability_feedback_on_comment_author_id"
    t.index ["issue_id"], name: "index_vulnerability_feedback_on_issue_id"
    t.index ["merge_request_id"], name: "index_vulnerability_feedback_on_merge_request_id"
    t.index ["pipeline_id"], name: "index_vulnerability_feedback_on_pipeline_id"
    t.index ["project_id", "category", "feedback_type", "project_fingerprint"], name: "vulnerability_feedback_unique_idx", unique: true
4266 4267
  end

Jasper Maes's avatar
Jasper Maes committed
4268
  create_table "vulnerability_identifiers", force: :cascade do |t|
4269 4270 4271 4272 4273 4274 4275 4276
    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"
4277
    t.index ["project_id", "fingerprint"], name: "index_vulnerability_identifiers_on_project_id_and_fingerprint", unique: true
4278 4279
  end

4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290
  create_table "vulnerability_issue_links", force: :cascade do |t|
    t.bigint "vulnerability_id", null: false
    t.bigint "issue_id", null: false
    t.integer "link_type", limit: 2, default: 1, null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.index ["issue_id"], name: "index_vulnerability_issue_links_on_issue_id"
    t.index ["vulnerability_id", "issue_id"], name: "idx_vulnerability_issue_links_on_vulnerability_id_and_issue_id", unique: true
    t.index ["vulnerability_id", "link_type"], name: "idx_vulnerability_issue_links_on_vulnerability_id_and_link_type", unique: true, where: "(link_type = 2)"
  end

Jasper Maes's avatar
Jasper Maes committed
4291
  create_table "vulnerability_occurrence_identifiers", force: :cascade do |t|
4292 4293
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
4294 4295
    t.bigint "occurrence_id", null: false
    t.bigint "identifier_id", null: false
4296 4297
    t.index ["identifier_id"], name: "index_vulnerability_occurrence_identifiers_on_identifier_id"
    t.index ["occurrence_id", "identifier_id"], name: "index_vulnerability_occurrence_identifiers_on_unique_keys", unique: true
4298 4299
  end

Jasper Maes's avatar
Jasper Maes committed
4300
  create_table "vulnerability_occurrence_pipelines", force: :cascade do |t|
4301 4302
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
4303
    t.bigint "occurrence_id", null: false
4304
    t.integer "pipeline_id", null: false
4305 4306
    t.index ["occurrence_id", "pipeline_id"], name: "vulnerability_occurrence_pipelines_on_unique_keys", unique: true
    t.index ["pipeline_id"], name: "index_vulnerability_occurrence_pipelines_on_pipeline_id"
4307 4308
  end

Jasper Maes's avatar
Jasper Maes committed
4309
  create_table "vulnerability_occurrences", force: :cascade do |t|
4310 4311 4312 4313 4314 4315
    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 "project_id", null: false
4316 4317
    t.bigint "scanner_id", null: false
    t.bigint "primary_identifier_id", null: false
4318 4319
    t.binary "project_fingerprint", null: false
    t.binary "location_fingerprint", null: false
4320
    t.string "uuid", limit: 36, null: false
4321 4322 4323
    t.string "name", null: false
    t.string "metadata_version", null: false
    t.text "raw_metadata", null: false
4324
    t.bigint "vulnerability_id"
4325 4326 4327 4328
    t.index ["primary_identifier_id"], name: "index_vulnerability_occurrences_on_primary_identifier_id"
    t.index ["project_id", "primary_identifier_id", "location_fingerprint", "scanner_id"], name: "index_vulnerability_occurrences_on_unique_keys", unique: true
    t.index ["scanner_id"], name: "index_vulnerability_occurrences_on_scanner_id"
    t.index ["uuid"], name: "index_vulnerability_occurrences_on_uuid", unique: true
4329
    t.index ["vulnerability_id"], name: "index_vulnerability_occurrences_on_vulnerability_id"
4330 4331
  end

Jasper Maes's avatar
Jasper Maes committed
4332
  create_table "vulnerability_scanners", force: :cascade do |t|
4333 4334 4335 4336 4337
    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
4338
    t.index ["project_id", "external_id"], name: "index_vulnerability_scanners_on_project_id_and_external_id", unique: true
4339 4340
  end

Jasper Maes's avatar
Jasper Maes committed
4341
  create_table "web_hook_logs", id: :serial, force: :cascade do |t|
4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353
    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
4354 4355
    t.index ["created_at", "web_hook_id"], name: "index_web_hook_logs_on_created_at_and_web_hook_id"
    t.index ["web_hook_id"], name: "index_web_hook_logs_on_web_hook_id"
4356 4357
  end

Jasper Maes's avatar
Jasper Maes committed
4358
  create_table "web_hooks", id: :serial, force: :cascade do |t|
4359
    t.integer "project_id"
4360 4361
    t.datetime "created_at"
    t.datetime "updated_at"
4362 4363 4364 4365 4366 4367 4368 4369 4370
    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
4371
    t.boolean "wiki_page_events", default: false, null: false
4372 4373
    t.boolean "pipeline_events", default: false, null: false
    t.boolean "confidential_issues_events", default: false, null: false
4374
    t.boolean "repository_update_events", default: false, null: false
Luke "Jared" Bennett's avatar
Luke "Jared" Bennett committed
4375
    t.boolean "job_events", default: false, null: false
4376
    t.boolean "confidential_note_events"
4377
    t.text "push_events_branch_filter"
4378 4379 4380 4381
    t.string "encrypted_token"
    t.string "encrypted_token_iv"
    t.string "encrypted_url"
    t.string "encrypted_url_iv"
4382 4383
    t.index ["project_id"], name: "index_web_hooks_on_project_id"
    t.index ["type"], name: "index_web_hooks_on_type"
Andrew8xx8's avatar
Andrew8xx8 committed
4384 4385
  end

4386 4387 4388 4389 4390 4391 4392 4393 4394
  create_table "zoom_meetings", force: :cascade do |t|
    t.bigint "project_id", null: false
    t.bigint "issue_id", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.integer "issue_status", limit: 2, default: 1, null: false
    t.string "url", limit: 255
    t.index ["issue_id", "issue_status"], name: "index_zoom_meetings_on_issue_id_and_issue_status", unique: true, where: "(issue_status = 1)"
    t.index ["issue_id"], name: "index_zoom_meetings_on_issue_id"
4395
    t.index ["issue_status"], name: "index_zoom_meetings_on_issue_status"
4396 4397 4398
    t.index ["project_id"], name: "index_zoom_meetings_on_project_id"
  end

4399
  add_foreign_key "alerts_service_data", "services", on_delete: :cascade
4400
  add_foreign_key "allowed_email_domains", "namespaces", column: "group_id", on_delete: :cascade
4401 4402 4403 4404 4405 4406
  add_foreign_key "analytics_cycle_analytics_group_stages", "labels", column: "end_event_label_id", on_delete: :cascade
  add_foreign_key "analytics_cycle_analytics_group_stages", "labels", column: "start_event_label_id", on_delete: :cascade
  add_foreign_key "analytics_cycle_analytics_group_stages", "namespaces", column: "group_id", on_delete: :cascade
  add_foreign_key "analytics_cycle_analytics_project_stages", "labels", column: "end_event_label_id", on_delete: :cascade
  add_foreign_key "analytics_cycle_analytics_project_stages", "labels", column: "start_event_label_id", on_delete: :cascade
  add_foreign_key "analytics_cycle_analytics_project_stages", "projects", on_delete: :cascade
4407 4408
  add_foreign_key "analytics_language_trend_repository_languages", "programming_languages", on_delete: :cascade
  add_foreign_key "analytics_language_trend_repository_languages", "projects", on_delete: :cascade
4409 4410
  add_foreign_key "analytics_repository_file_commits", "analytics_repository_files", on_delete: :cascade
  add_foreign_key "analytics_repository_file_commits", "projects", on_delete: :cascade
4411 4412
  add_foreign_key "analytics_repository_file_edits", "analytics_repository_files", on_delete: :cascade
  add_foreign_key "analytics_repository_file_edits", "projects", on_delete: :cascade
4413
  add_foreign_key "analytics_repository_files", "projects", on_delete: :cascade
4414
  add_foreign_key "application_settings", "namespaces", column: "custom_project_templates_group_id", on_delete: :nullify
4415
  add_foreign_key "application_settings", "projects", column: "file_template_project_id", name: "fk_ec757bd087", on_delete: :nullify
4416
  add_foreign_key "application_settings", "projects", column: "instance_administration_project_id", on_delete: :nullify
4417
  add_foreign_key "application_settings", "users", column: "usage_stats_set_by_user_id", name: "fk_964370041d", on_delete: :nullify
4418 4419
  add_foreign_key "approval_merge_request_rule_sources", "approval_merge_request_rules", on_delete: :cascade
  add_foreign_key "approval_merge_request_rule_sources", "approval_project_rules", on_delete: :cascade
4420
  add_foreign_key "approval_merge_request_rules", "merge_requests", on_delete: :cascade
4421 4422
  add_foreign_key "approval_merge_request_rules_approved_approvers", "approval_merge_request_rules", on_delete: :cascade
  add_foreign_key "approval_merge_request_rules_approved_approvers", "users", on_delete: :cascade
4423 4424 4425 4426 4427 4428 4429 4430 4431
  add_foreign_key "approval_merge_request_rules_groups", "approval_merge_request_rules", on_delete: :cascade
  add_foreign_key "approval_merge_request_rules_groups", "namespaces", column: "group_id", on_delete: :cascade
  add_foreign_key "approval_merge_request_rules_users", "approval_merge_request_rules", on_delete: :cascade
  add_foreign_key "approval_merge_request_rules_users", "users", on_delete: :cascade
  add_foreign_key "approval_project_rules", "projects", on_delete: :cascade
  add_foreign_key "approval_project_rules_groups", "approval_project_rules", on_delete: :cascade
  add_foreign_key "approval_project_rules_groups", "namespaces", column: "group_id", on_delete: :cascade
  add_foreign_key "approval_project_rules_users", "approval_project_rules", on_delete: :cascade
  add_foreign_key "approval_project_rules_users", "users", on_delete: :cascade
4432
  add_foreign_key "approvals", "merge_requests", name: "fk_310d714958", on_delete: :cascade
Valery Sizov's avatar
Valery Sizov committed
4433
  add_foreign_key "approver_groups", "namespaces", column: "group_id", on_delete: :cascade
Tiger's avatar
Tiger committed
4434
  add_foreign_key "aws_roles", "users", on_delete: :cascade
4435 4436
  add_foreign_key "badges", "namespaces", column: "group_id", on_delete: :cascade
  add_foreign_key "badges", "projects", on_delete: :cascade
4437 4438
  add_foreign_key "board_assignees", "boards", on_delete: :cascade
  add_foreign_key "board_assignees", "users", column: "assignee_id", on_delete: :cascade
4439 4440 4441
  add_foreign_key "board_group_recent_visits", "boards", on_delete: :cascade
  add_foreign_key "board_group_recent_visits", "namespaces", column: "group_id", on_delete: :cascade
  add_foreign_key "board_group_recent_visits", "users", on_delete: :cascade
4442 4443
  add_foreign_key "board_labels", "boards", on_delete: :cascade
  add_foreign_key "board_labels", "labels", on_delete: :cascade
4444 4445 4446
  add_foreign_key "board_project_recent_visits", "boards", on_delete: :cascade
  add_foreign_key "board_project_recent_visits", "projects", on_delete: :cascade
  add_foreign_key "board_project_recent_visits", "users", on_delete: :cascade
Felipe Artur's avatar
Felipe Artur committed
4447
  add_foreign_key "boards", "namespaces", column: "group_id", name: "fk_1e9a074a35", on_delete: :cascade
4448
  add_foreign_key "boards", "projects", name: "fk_f15266b5f9", on_delete: :cascade
4449
  add_foreign_key "chat_teams", "namespaces", on_delete: :cascade
Kamil Trzciński's avatar
Kamil Trzciński committed
4450
  add_foreign_key "ci_build_needs", "ci_builds", column: "build_id", on_delete: :cascade
4451
  add_foreign_key "ci_build_trace_chunks", "ci_builds", column: "build_id", on_delete: :cascade
4452 4453 4454 4455
  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
4456
  add_foreign_key "ci_builds", "ci_pipelines", column: "auto_canceled_by_id", name: "fk_a2141b1522", on_delete: :nullify
4457
  add_foreign_key "ci_builds", "ci_pipelines", column: "commit_id", name: "fk_d3130c9a7f", on_delete: :cascade
4458
  add_foreign_key "ci_builds", "ci_pipelines", column: "upstream_pipeline_id", name: "fk_87f4cefcda", on_delete: :cascade
4459
  add_foreign_key "ci_builds", "ci_resource_groups", column: "resource_group_id", name: "fk_6661f4f0e8", on_delete: :nullify
4460
  add_foreign_key "ci_builds", "ci_stages", column: "stage_id", name: "fk_3a9eaa254d", on_delete: :cascade
4461
  add_foreign_key "ci_builds", "projects", name: "fk_befce0568a", on_delete: :cascade
4462 4463
  add_foreign_key "ci_builds_metadata", "ci_builds", column: "build_id", on_delete: :cascade
  add_foreign_key "ci_builds_metadata", "projects", on_delete: :cascade
4464
  add_foreign_key "ci_builds_runner_session", "ci_builds", column: "build_id", on_delete: :cascade
Shinya Maeda's avatar
Shinya Maeda committed
4465
  add_foreign_key "ci_group_variables", "namespaces", column: "group_id", name: "fk_33ae4d58d8", on_delete: :cascade
4466 4467
  add_foreign_key "ci_job_artifacts", "ci_builds", column: "job_id", on_delete: :cascade
  add_foreign_key "ci_job_artifacts", "projects", on_delete: :cascade
Matija Čupić's avatar
Matija Čupić committed
4468
  add_foreign_key "ci_job_variables", "ci_builds", column: "job_id", on_delete: :cascade
4469 4470
  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
4471
  add_foreign_key "ci_pipeline_schedule_variables", "ci_pipeline_schedules", column: "pipeline_schedule_id", name: "fk_41c35fda51", on_delete: :cascade
4472
  add_foreign_key "ci_pipeline_schedules", "projects", name: "fk_8ead60fcc4", on_delete: :cascade
4473
  add_foreign_key "ci_pipeline_schedules", "users", column: "owner_id", name: "fk_9ea99f58d2", on_delete: :nullify
4474
  add_foreign_key "ci_pipeline_variables", "ci_pipelines", column: "pipeline_id", name: "fk_f29c5f4380", on_delete: :cascade
Kamil Trzcinski's avatar
Kamil Trzcinski committed
4475 4476
  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
4477
  add_foreign_key "ci_pipelines", "external_pull_requests", name: "fk_190998ef09", on_delete: :nullify
Shinya Maeda's avatar
Shinya Maeda committed
4478
  add_foreign_key "ci_pipelines", "merge_requests", name: "fk_a23be95014", on_delete: :cascade
4479
  add_foreign_key "ci_pipelines", "projects", name: "fk_86635dbd80", on_delete: :cascade
4480
  add_foreign_key "ci_pipelines_config", "ci_pipelines", column: "pipeline_id", on_delete: :cascade
4481 4482 4483
  add_foreign_key "ci_resource_groups", "projects", name: "fk_774722d144", on_delete: :cascade
  add_foreign_key "ci_resources", "ci_builds", column: "build_id", name: "fk_e169a8e3d5", on_delete: :nullify
  add_foreign_key "ci_resources", "ci_resource_groups", column: "resource_group_id", on_delete: :cascade
4484
  add_foreign_key "ci_runner_namespaces", "ci_runners", column: "runner_id", on_delete: :cascade
4485
  add_foreign_key "ci_runner_namespaces", "namespaces", on_delete: :cascade
4486
  add_foreign_key "ci_runner_projects", "projects", name: "fk_4478a6f1e4", on_delete: :cascade
4487 4488 4489 4490 4491
  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
4492
  add_foreign_key "ci_stages", "ci_pipelines", column: "pipeline_id", name: "fk_fb57e6cc56", on_delete: :cascade
4493
  add_foreign_key "ci_stages", "projects", name: "fk_2360681d1d", on_delete: :cascade
4494 4495
  add_foreign_key "ci_subscriptions_projects", "projects", column: "downstream_project_id", on_delete: :cascade
  add_foreign_key "ci_subscriptions_projects", "projects", column: "upstream_project_id", on_delete: :cascade
4496
  add_foreign_key "ci_trigger_requests", "ci_triggers", column: "trigger_id", name: "fk_b8ec8b7245", on_delete: :cascade
4497
  add_foreign_key "ci_triggers", "projects", name: "fk_e3e63f966e", on_delete: :cascade
4498
  add_foreign_key "ci_triggers", "users", column: "owner_id", name: "fk_e8e10d1964", on_delete: :cascade
4499
  add_foreign_key "ci_variables", "projects", name: "fk_ada5eb64b3", on_delete: :cascade
4500 4501
  add_foreign_key "cluster_groups", "clusters", on_delete: :cascade
  add_foreign_key "cluster_groups", "namespaces", column: "group_id", on_delete: :cascade
Shinya Maeda's avatar
Shinya Maeda committed
4502 4503 4504
  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
Tiger's avatar
Tiger committed
4505 4506
  add_foreign_key "cluster_providers_aws", "clusters", on_delete: :cascade
  add_foreign_key "cluster_providers_aws", "users", column: "created_by_user_id", on_delete: :nullify
Shinya Maeda's avatar
Shinya Maeda committed
4507
  add_foreign_key "cluster_providers_gcp", "clusters", on_delete: :cascade
4508
  add_foreign_key "clusters", "projects", column: "management_project_id", name: "fk_f05c5e5a42", on_delete: :nullify
Shinya Maeda's avatar
Shinya Maeda committed
4509
  add_foreign_key "clusters", "users", on_delete: :nullify
Amit Rathi's avatar
Amit Rathi committed
4510
  add_foreign_key "clusters_applications_cert_managers", "clusters", on_delete: :cascade
4511
  add_foreign_key "clusters_applications_crossplane", "clusters", on_delete: :cascade
4512
  add_foreign_key "clusters_applications_elastic_stacks", "clusters", on_delete: :cascade
4513
  add_foreign_key "clusters_applications_helm", "clusters", on_delete: :cascade
4514
  add_foreign_key "clusters_applications_ingress", "clusters", on_delete: :cascade
Micaël Bergeron's avatar
Micaël Bergeron committed
4515 4516
  add_foreign_key "clusters_applications_jupyter", "clusters", on_delete: :cascade
  add_foreign_key "clusters_applications_jupyter", "oauth_applications", on_delete: :nullify
Chris Baumbauer's avatar
Chris Baumbauer committed
4517
  add_foreign_key "clusters_applications_knative", "clusters", on_delete: :cascade
4518
  add_foreign_key "clusters_applications_prometheus", "clusters", name: "fk_557e773639", on_delete: :cascade
4519 4520
  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
4521 4522
  add_foreign_key "clusters_kubernetes_namespaces", "cluster_projects", on_delete: :nullify
  add_foreign_key "clusters_kubernetes_namespaces", "clusters", on_delete: :cascade
4523
  add_foreign_key "clusters_kubernetes_namespaces", "environments", on_delete: :nullify
4524
  add_foreign_key "clusters_kubernetes_namespaces", "projects", on_delete: :nullify
4525
  add_foreign_key "commit_user_mentions", "notes", on_delete: :cascade
4526
  add_foreign_key "container_expiration_policies", "projects", on_delete: :cascade
Valery Sizov's avatar
Valery Sizov committed
4527
  add_foreign_key "container_repositories", "projects"
4528 4529
  add_foreign_key "dependency_proxy_blobs", "namespaces", column: "group_id", on_delete: :cascade
  add_foreign_key "dependency_proxy_group_settings", "namespaces", column: "group_id", on_delete: :cascade
4530
  add_foreign_key "deploy_keys_projects", "projects", name: "fk_58a901ca7e", on_delete: :cascade
4531 4532
  add_foreign_key "deployment_merge_requests", "deployments", on_delete: :cascade
  add_foreign_key "deployment_merge_requests", "merge_requests", on_delete: :cascade
4533
  add_foreign_key "deployments", "clusters", name: "fk_289bba3222", on_delete: :nullify
4534
  add_foreign_key "deployments", "projects", name: "fk_b9a3851b82", on_delete: :cascade
4535 4536 4537
  add_foreign_key "description_versions", "epics", on_delete: :cascade
  add_foreign_key "description_versions", "issues", on_delete: :cascade
  add_foreign_key "description_versions", "merge_requests", on_delete: :cascade
4538 4539
  add_foreign_key "design_management_designs", "issues", on_delete: :cascade
  add_foreign_key "design_management_designs", "projects", on_delete: :cascade
4540 4541 4542
  add_foreign_key "design_management_designs_versions", "design_management_designs", column: "design_id", name: "fk_03c671965c", on_delete: :cascade
  add_foreign_key "design_management_designs_versions", "design_management_versions", column: "version_id", name: "fk_f4d25ba00c", on_delete: :cascade
  add_foreign_key "design_management_versions", "issues", on_delete: :cascade
4543
  add_foreign_key "design_management_versions", "users", column: "author_id", name: "fk_c1440b4896", on_delete: :nullify
4544 4545
  add_foreign_key "design_user_mentions", "design_management_designs", column: "design_id", on_delete: :cascade
  add_foreign_key "design_user_mentions", "notes", on_delete: :cascade
4546 4547
  add_foreign_key "draft_notes", "merge_requests", on_delete: :cascade
  add_foreign_key "draft_notes", "users", column: "author_id", on_delete: :cascade
4548 4549
  add_foreign_key "elasticsearch_indexed_namespaces", "namespaces", on_delete: :cascade
  add_foreign_key "elasticsearch_indexed_projects", "projects", on_delete: :cascade
4550
  add_foreign_key "environments", "projects", name: "fk_d1c8c1da6a", on_delete: :cascade
4551 4552
  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
4553
  add_foreign_key "epic_metrics", "epics", on_delete: :cascade
4554 4555
  add_foreign_key "epic_user_mentions", "epics", on_delete: :cascade
  add_foreign_key "epic_user_mentions", "notes", on_delete: :cascade
4556
  add_foreign_key "epics", "epics", column: "due_date_sourcing_epic_id", name: "fk_013c9f36ca", on_delete: :nullify
Jarka Košanová's avatar
Jarka Košanová committed
4557
  add_foreign_key "epics", "epics", column: "parent_id", name: "fk_25b99c1be3", on_delete: :cascade
4558
  add_foreign_key "epics", "epics", column: "start_date_sourcing_epic_id", name: "fk_9d480c64b2", on_delete: :nullify
Clement Ho's avatar
Clement Ho committed
4559 4560 4561 4562
  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
4563
  add_foreign_key "epics", "users", column: "closed_by_id", name: "fk_aa5798e761", on_delete: :nullify
4564
  add_foreign_key "events", "namespaces", column: "group_id", name: "fk_61fbf6ca48", on_delete: :cascade
4565 4566
  add_foreign_key "events", "projects", on_delete: :cascade
  add_foreign_key "events", "users", column: "author_id", name: "fk_edfd187b6f", on_delete: :cascade
4567
  add_foreign_key "evidences", "releases", on_delete: :cascade
4568
  add_foreign_key "external_pull_requests", "projects", on_delete: :cascade
4569 4570 4571
  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
4572
  add_foreign_key "fork_networks", "projects", column: "root_project_id", name: "fk_e7b436b2b5", on_delete: :nullify
4573
  add_foreign_key "forked_project_links", "projects", column: "forked_to_project_id", name: "fk_434510edb0", on_delete: :cascade
4574
  add_foreign_key "geo_container_repository_updated_events", "container_repositories", name: "fk_212c89c706", on_delete: :cascade
4575
  add_foreign_key "geo_event_log", "geo_cache_invalidation_events", column: "cache_invalidation_event_id", name: "fk_42c3b54bed", on_delete: :cascade
4576
  add_foreign_key "geo_event_log", "geo_container_repository_updated_events", column: "container_repository_updated_event_id", name: "fk_6ada82d42a", on_delete: :cascade
4577
  add_foreign_key "geo_event_log", "geo_hashed_storage_migrated_events", column: "hashed_storage_migrated_event_id", name: "fk_27548c6db3", on_delete: :cascade
4578
  add_foreign_key "geo_event_log", "geo_job_artifact_deleted_events", column: "job_artifact_deleted_event_id", name: "fk_176d3fbb5d", on_delete: :cascade
4579
  add_foreign_key "geo_event_log", "geo_lfs_object_deleted_events", column: "lfs_object_deleted_event_id", name: "fk_d5af95fcd9", on_delete: :cascade
4580
  add_foreign_key "geo_event_log", "geo_repositories_changed_events", column: "repositories_changed_event_id", name: "fk_4a99ebfd60", on_delete: :cascade
4581
  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
4582
  add_foreign_key "geo_event_log", "geo_repository_deleted_events", column: "repository_deleted_event_id", name: "fk_c4b1c1f66e", on_delete: :cascade
4583
  add_foreign_key "geo_event_log", "geo_repository_renamed_events", column: "repository_renamed_event_id", name: "fk_86c84214ec", on_delete: :cascade
4584
  add_foreign_key "geo_event_log", "geo_repository_updated_events", column: "repository_updated_event_id", name: "fk_78a6492f68", on_delete: :cascade
4585
  add_foreign_key "geo_event_log", "geo_reset_checksum_events", column: "reset_checksum_event_id", name: "fk_cff7185ad2", on_delete: :cascade
4586
  add_foreign_key "geo_event_log", "geo_upload_deleted_events", column: "upload_deleted_event_id", name: "fk_c1f241c70d", on_delete: :cascade
4587
  add_foreign_key "geo_hashed_storage_attachments_events", "projects", on_delete: :cascade
4588
  add_foreign_key "geo_hashed_storage_migrated_events", "projects", on_delete: :cascade
4589
  add_foreign_key "geo_node_namespace_links", "geo_nodes", on_delete: :cascade
4590
  add_foreign_key "geo_node_namespace_links", "namespaces", on_delete: :cascade
4591
  add_foreign_key "geo_node_statuses", "geo_nodes", on_delete: :cascade
4592
  add_foreign_key "geo_repositories_changed_events", "geo_nodes", on_delete: :cascade
4593
  add_foreign_key "geo_repository_created_events", "projects", on_delete: :cascade
4594
  add_foreign_key "geo_repository_renamed_events", "projects", on_delete: :cascade
4595
  add_foreign_key "geo_repository_updated_events", "projects", on_delete: :cascade
4596
  add_foreign_key "geo_reset_checksum_events", "projects", on_delete: :cascade
4597
  add_foreign_key "gitlab_subscriptions", "namespaces", name: "fk_e2595d00a1", on_delete: :cascade
4598
  add_foreign_key "gitlab_subscriptions", "plans", column: "hosted_plan_id", name: "fk_bd0c4019c3", on_delete: :cascade
4599
  add_foreign_key "gpg_key_subkeys", "gpg_keys", on_delete: :cascade
4600
  add_foreign_key "gpg_keys", "users", on_delete: :cascade
4601
  add_foreign_key "gpg_signatures", "gpg_key_subkeys", on_delete: :nullify
4602 4603
  add_foreign_key "gpg_signatures", "gpg_keys", on_delete: :nullify
  add_foreign_key "gpg_signatures", "projects", on_delete: :cascade
4604
  add_foreign_key "grafana_integrations", "projects", on_delete: :cascade
4605
  add_foreign_key "group_custom_attributes", "namespaces", column: "group_id", on_delete: :cascade
4606
  add_foreign_key "group_deletion_schedules", "namespaces", column: "group_id", on_delete: :cascade
4607
  add_foreign_key "group_deletion_schedules", "users", name: "fk_11e3ebfcdd", on_delete: :cascade
4608 4609
  add_foreign_key "group_group_links", "namespaces", column: "shared_group_id", on_delete: :cascade
  add_foreign_key "group_group_links", "namespaces", column: "shared_with_group_id", on_delete: :cascade
4610
  add_foreign_key "identities", "saml_providers", name: "fk_aade90f0fc", on_delete: :cascade
George Koltsov's avatar
George Koltsov committed
4611
  add_foreign_key "import_export_uploads", "namespaces", column: "group_id", name: "fk_83319d9721", on_delete: :cascade
4612
  add_foreign_key "import_export_uploads", "projects", on_delete: :cascade
4613
  add_foreign_key "index_statuses", "projects", name: "fk_74b2492545", on_delete: :cascade
4614 4615
  add_foreign_key "insights", "namespaces", on_delete: :cascade
  add_foreign_key "insights", "projects", on_delete: :cascade
4616
  add_foreign_key "internal_ids", "namespaces", name: "fk_162941d509", on_delete: :cascade
4617
  add_foreign_key "internal_ids", "projects", on_delete: :cascade
4618
  add_foreign_key "ip_restrictions", "namespaces", column: "group_id", on_delete: :cascade
4619 4620
  add_foreign_key "issue_assignees", "issues", name: "fk_b7d881734a", on_delete: :cascade
  add_foreign_key "issue_assignees", "users", name: "fk_5e0c8d9154", on_delete: :cascade
4621 4622
  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
4623
  add_foreign_key "issue_metrics", "issues", on_delete: :cascade
4624 4625
  add_foreign_key "issue_milestones", "issues", on_delete: :cascade
  add_foreign_key "issue_milestones", "milestones", on_delete: :cascade
4626
  add_foreign_key "issue_tracker_data", "services", on_delete: :cascade
4627 4628
  add_foreign_key "issue_user_mentions", "issues", on_delete: :cascade
  add_foreign_key "issue_user_mentions", "notes", on_delete: :cascade
4629
  add_foreign_key "issues", "epics", column: "promoted_to_epic_id", name: "fk_df75a7c8b8", on_delete: :nullify
4630
  add_foreign_key "issues", "issues", column: "duplicated_to_id", name: "fk_9c4516d665", on_delete: :nullify
4631 4632
  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
4633
  add_foreign_key "issues", "projects", name: "fk_899c8f3231", on_delete: :cascade
4634
  add_foreign_key "issues", "users", column: "author_id", name: "fk_05f1e72feb", on_delete: :nullify
haseeb's avatar
haseeb committed
4635
  add_foreign_key "issues", "users", column: "closed_by_id", name: "fk_c63cbf6c25", on_delete: :nullify
4636
  add_foreign_key "issues", "users", column: "updated_by_id", name: "fk_ffed080f01", on_delete: :nullify
4637 4638
  add_foreign_key "issues_prometheus_alert_events", "issues", on_delete: :cascade
  add_foreign_key "issues_prometheus_alert_events", "prometheus_alert_events", on_delete: :cascade
4639 4640
  add_foreign_key "issues_self_managed_prometheus_alert_events", "issues", on_delete: :cascade
  add_foreign_key "issues_self_managed_prometheus_alert_events", "self_managed_prometheus_alert_events", on_delete: :cascade
4641 4642
  add_foreign_key "jira_connect_subscriptions", "jira_connect_installations", on_delete: :cascade
  add_foreign_key "jira_connect_subscriptions", "namespaces", on_delete: :cascade
4643
  add_foreign_key "jira_tracker_data", "services", on_delete: :cascade
Stan Hu's avatar
Stan Hu committed
4644
  add_foreign_key "label_links", "labels", name: "fk_d97dd08678", on_delete: :cascade
4645 4646
  add_foreign_key "label_priorities", "labels", on_delete: :cascade
  add_foreign_key "label_priorities", "projects", on_delete: :cascade
4647
  add_foreign_key "labels", "namespaces", column: "group_id", on_delete: :cascade
4648
  add_foreign_key "labels", "projects", name: "fk_7de4989a69", on_delete: :cascade
4649 4650
  add_foreign_key "lfs_file_locks", "projects", on_delete: :cascade
  add_foreign_key "lfs_file_locks", "users", on_delete: :cascade
4651 4652
  add_foreign_key "list_user_preferences", "lists", on_delete: :cascade
  add_foreign_key "list_user_preferences", "users", on_delete: :cascade
4653 4654
  add_foreign_key "lists", "boards", name: "fk_0d3f677137", on_delete: :cascade
  add_foreign_key "lists", "labels", name: "fk_7a5553d60f", on_delete: :cascade
4655
  add_foreign_key "lists", "milestones", on_delete: :cascade
4656
  add_foreign_key "lists", "users", name: "fk_d6cf4279f7", on_delete: :cascade
4657
  add_foreign_key "members", "users", name: "fk_2e88fb7ce9", on_delete: :cascade
4658 4659
  add_foreign_key "merge_request_assignees", "merge_requests", on_delete: :cascade
  add_foreign_key "merge_request_assignees", "users", on_delete: :cascade
4660 4661
  add_foreign_key "merge_request_blocks", "merge_requests", column: "blocked_merge_request_id", on_delete: :cascade
  add_foreign_key "merge_request_blocks", "merge_requests", column: "blocking_merge_request_id", on_delete: :cascade
4662
  add_foreign_key "merge_request_diff_commits", "merge_request_diffs", on_delete: :cascade
4663
  add_foreign_key "merge_request_diff_files", "merge_request_diffs", on_delete: :cascade
4664
  add_foreign_key "merge_request_diffs", "merge_requests", name: "fk_8483f3258f", on_delete: :cascade
4665
  add_foreign_key "merge_request_metrics", "ci_pipelines", column: "pipeline_id", on_delete: :cascade
4666
  add_foreign_key "merge_request_metrics", "merge_requests", on_delete: :cascade
4667 4668
  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
4669 4670
  add_foreign_key "merge_request_milestones", "merge_requests", on_delete: :cascade
  add_foreign_key "merge_request_milestones", "milestones", on_delete: :cascade
4671 4672
  add_foreign_key "merge_request_user_mentions", "merge_requests", on_delete: :cascade
  add_foreign_key "merge_request_user_mentions", "notes", on_delete: :cascade
4673
  add_foreign_key "merge_requests", "ci_pipelines", column: "head_pipeline_id", name: "fk_fd82eae0b9", on_delete: :nullify
4674
  add_foreign_key "merge_requests", "merge_request_diffs", column: "latest_merge_request_diff_id", name: "fk_06067f5644", on_delete: :nullify
4675 4676
  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
4677
  add_foreign_key "merge_requests", "projects", column: "target_project_id", name: "fk_a6963e8447", on_delete: :cascade
4678 4679 4680 4681
  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
4682 4683
  add_foreign_key "merge_requests_closing_issues", "issues", on_delete: :cascade
  add_foreign_key "merge_requests_closing_issues", "merge_requests", on_delete: :cascade
4684 4685
  add_foreign_key "merge_trains", "ci_pipelines", column: "pipeline_id", on_delete: :nullify
  add_foreign_key "merge_trains", "merge_requests", on_delete: :cascade
4686
  add_foreign_key "merge_trains", "projects", column: "target_project_id", on_delete: :cascade
4687
  add_foreign_key "merge_trains", "users", on_delete: :cascade
4688 4689
  add_foreign_key "milestone_releases", "milestones", on_delete: :cascade
  add_foreign_key "milestone_releases", "releases", on_delete: :cascade
Felipe Artur's avatar
Felipe Artur committed
4690
  add_foreign_key "milestones", "namespaces", column: "group_id", name: "fk_95650a40d4", on_delete: :cascade
4691
  add_foreign_key "milestones", "projects", name: "fk_9bd0a0c791", on_delete: :cascade
4692 4693
  add_foreign_key "namespace_aggregation_schedules", "namespaces", on_delete: :cascade
  add_foreign_key "namespace_root_storage_statistics", "namespaces", on_delete: :cascade
4694
  add_foreign_key "namespace_statistics", "namespaces", on_delete: :cascade
4695
  add_foreign_key "namespaces", "namespaces", column: "custom_project_templates_group_id", name: "fk_e7a0b20a6b", on_delete: :nullify
4696
  add_foreign_key "namespaces", "plans", name: "fk_fdd12e5b80", on_delete: :nullify
Nick Thomas's avatar
Nick Thomas committed
4697
  add_foreign_key "namespaces", "projects", column: "file_template_project_id", name: "fk_319256d87a", on_delete: :nullify
4698
  add_foreign_key "note_diff_files", "notes", column: "diff_note_id", on_delete: :cascade
4699
  add_foreign_key "notes", "projects", name: "fk_99e097b079", on_delete: :cascade
4700
  add_foreign_key "notes", "reviews", name: "fk_2e82291620", on_delete: :nullify
4701
  add_foreign_key "notification_settings", "users", name: "fk_0c95e91db7", on_delete: :cascade
4702
  add_foreign_key "oauth_openid_requests", "oauth_access_grants", column: "access_grant_id", name: "fk_77114b3b09", on_delete: :cascade
4703
  add_foreign_key "operations_feature_flag_scopes", "operations_feature_flags", column: "feature_flag_id", on_delete: :cascade
4704
  add_foreign_key "operations_feature_flags", "projects", on_delete: :cascade
4705
  add_foreign_key "operations_feature_flags_clients", "projects", on_delete: :cascade
4706 4707
  add_foreign_key "packages_build_infos", "ci_pipelines", column: "pipeline_id", on_delete: :nullify
  add_foreign_key "packages_build_infos", "packages_packages", column: "package_id", on_delete: :cascade
4708 4709
  add_foreign_key "packages_conan_file_metadata", "packages_package_files", column: "package_file_id", on_delete: :cascade
  add_foreign_key "packages_conan_metadata", "packages_packages", column: "package_id", on_delete: :cascade
4710 4711
  add_foreign_key "packages_dependency_links", "packages_dependencies", column: "dependency_id", on_delete: :cascade
  add_foreign_key "packages_dependency_links", "packages_packages", column: "package_id", on_delete: :cascade
4712 4713
  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
4714
  add_foreign_key "packages_packages", "projects", on_delete: :cascade
4715
  add_foreign_key "packages_tags", "packages_packages", column: "package_id", on_delete: :cascade
4716
  add_foreign_key "pages_domain_acme_orders", "pages_domains", on_delete: :cascade
4717
  add_foreign_key "pages_domains", "projects", name: "fk_ea2f6dfc6f", on_delete: :cascade
4718
  add_foreign_key "path_locks", "projects", name: "fk_5265c98f24", on_delete: :cascade
Valery Sizov's avatar
Valery Sizov committed
4719
  add_foreign_key "path_locks", "users"
4720
  add_foreign_key "personal_access_tokens", "users", name: "fk_personal_access_tokens_user_id", on_delete: :cascade
Fabio Pitino's avatar
Fabio Pitino committed
4721
  add_foreign_key "plan_limits", "plans", on_delete: :cascade
4722
  add_foreign_key "pool_repositories", "projects", column: "source_project_id", on_delete: :nullify
4723
  add_foreign_key "pool_repositories", "shards", on_delete: :restrict
4724
  add_foreign_key "project_alerting_settings", "projects", on_delete: :cascade
4725
  add_foreign_key "project_aliases", "projects", on_delete: :cascade
4726 4727
  add_foreign_key "project_authorizations", "projects", on_delete: :cascade
  add_foreign_key "project_authorizations", "users", on_delete: :cascade
4728
  add_foreign_key "project_auto_devops", "projects", on_delete: :cascade
4729
  add_foreign_key "project_ci_cd_settings", "projects", name: "fk_24c15d2f2e", on_delete: :cascade
4730
  add_foreign_key "project_custom_attributes", "projects", on_delete: :cascade
4731
  add_foreign_key "project_daily_statistics", "projects", on_delete: :cascade
4732 4733
  add_foreign_key "project_deploy_tokens", "deploy_tokens", on_delete: :cascade
  add_foreign_key "project_deploy_tokens", "projects", on_delete: :cascade
4734
  add_foreign_key "project_error_tracking_settings", "projects", on_delete: :cascade
4735
  add_foreign_key "project_feature_usages", "projects", on_delete: :cascade
4736 4737 4738
  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
4739
  add_foreign_key "project_incident_management_settings", "projects", on_delete: :cascade
4740
  add_foreign_key "project_metrics_settings", "projects", on_delete: :cascade
4741
  add_foreign_key "project_mirror_data", "projects", name: "fk_d1aad367d7", on_delete: :cascade
4742
  add_foreign_key "project_pages_metadata", "projects", on_delete: :cascade
4743
  add_foreign_key "project_repositories", "projects", on_delete: :cascade
4744
  add_foreign_key "project_repositories", "shards", on_delete: :restrict
4745
  add_foreign_key "project_repository_states", "projects", on_delete: :cascade
4746
  add_foreign_key "project_statistics", "projects", on_delete: :cascade
Simon Knox's avatar
Simon Knox committed
4747
  add_foreign_key "project_tracing_settings", "projects", on_delete: :cascade
4748
  add_foreign_key "projects", "pool_repositories", name: "fk_6e5c14658a", on_delete: :nullify
4749
  add_foreign_key "projects", "users", column: "marked_for_deletion_by_user_id", name: "fk_25d8780d11", on_delete: :nullify
4750 4751
  add_foreign_key "prometheus_alert_events", "projects", on_delete: :cascade
  add_foreign_key "prometheus_alert_events", "prometheus_alerts", on_delete: :cascade
4752 4753 4754
  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
4755
  add_foreign_key "prometheus_metrics", "projects", on_delete: :cascade
4756
  add_foreign_key "protected_branch_merge_access_levels", "namespaces", column: "group_id", name: "fk_98f3d044fe", on_delete: :cascade
4757
  add_foreign_key "protected_branch_merge_access_levels", "protected_branches", name: "fk_8a3072ccb3", on_delete: :cascade
4758
  add_foreign_key "protected_branch_merge_access_levels", "users"
4759
  add_foreign_key "protected_branch_push_access_levels", "namespaces", column: "group_id", name: "fk_7111b68cdb", on_delete: :cascade
4760
  add_foreign_key "protected_branch_push_access_levels", "protected_branches", name: "fk_9ffc86a3d9", on_delete: :cascade
4761
  add_foreign_key "protected_branch_push_access_levels", "users"
4762 4763 4764
  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
4765
  add_foreign_key "protected_branches", "projects", name: "fk_7a9c6d93e7", on_delete: :cascade
4766 4767 4768 4769
  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
4770
  add_foreign_key "protected_tag_create_access_levels", "namespaces", column: "group_id", name: "fk_b4eb82fe3c", on_delete: :cascade
4771
  add_foreign_key "protected_tag_create_access_levels", "protected_tags", name: "fk_f7dfda8c51", on_delete: :cascade
4772
  add_foreign_key "protected_tag_create_access_levels", "users"
4773
  add_foreign_key "protected_tags", "projects", name: "fk_8e4af87648", on_delete: :cascade
4774
  add_foreign_key "push_event_payloads", "events", name: "fk_36c74129da", on_delete: :cascade
Rémy Coutable's avatar
Rémy Coutable committed
4775
  add_foreign_key "push_rules", "projects", name: "fk_83b29894de", on_delete: :cascade
4776
  add_foreign_key "release_links", "releases", on_delete: :cascade
4777
  add_foreign_key "releases", "projects", name: "fk_47fe2a0596", on_delete: :cascade
Yorick Peterse's avatar
Yorick Peterse committed
4778
  add_foreign_key "releases", "users", column: "author_id", name: "fk_8e4456f90f", on_delete: :nullify
4779
  add_foreign_key "remote_mirrors", "projects", name: "fk_43a9aa4ca8", on_delete: :cascade
4780
  add_foreign_key "repository_languages", "projects", on_delete: :cascade
Jan Provaznik's avatar
Jan Provaznik committed
4781
  add_foreign_key "resource_label_events", "epics", on_delete: :cascade
4782 4783 4784 4785
  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
4786
  add_foreign_key "resource_weight_events", "issues", on_delete: :cascade
4787
  add_foreign_key "resource_weight_events", "users", on_delete: :nullify
4788 4789 4790
  add_foreign_key "reviews", "merge_requests", on_delete: :cascade
  add_foreign_key "reviews", "projects", on_delete: :cascade
  add_foreign_key "reviews", "users", column: "author_id", on_delete: :nullify
4791
  add_foreign_key "saml_providers", "namespaces", column: "group_id", on_delete: :cascade
James Lopez's avatar
James Lopez committed
4792
  add_foreign_key "scim_oauth_access_tokens", "namespaces", column: "group_id", on_delete: :cascade
4793 4794
  add_foreign_key "self_managed_prometheus_alert_events", "environments", on_delete: :cascade
  add_foreign_key "self_managed_prometheus_alert_events", "projects", on_delete: :cascade
4795
  add_foreign_key "sentry_issues", "issues", on_delete: :cascade
4796 4797 4798
  add_foreign_key "serverless_domain_cluster", "clusters_applications_knative", on_delete: :cascade
  add_foreign_key "serverless_domain_cluster", "pages_domains", on_delete: :cascade
  add_foreign_key "serverless_domain_cluster", "users", column: "creator_id", on_delete: :nullify
4799
  add_foreign_key "service_desk_settings", "projects", on_delete: :cascade
4800
  add_foreign_key "services", "projects", name: "fk_71cce407f9", on_delete: :cascade
Valery Sizov's avatar
Valery Sizov committed
4801
  add_foreign_key "slack_integrations", "services", on_delete: :cascade
4802
  add_foreign_key "smartcard_identities", "users", on_delete: :cascade
4803 4804
  add_foreign_key "snippet_user_mentions", "notes", on_delete: :cascade
  add_foreign_key "snippet_user_mentions", "snippets", on_delete: :cascade
4805
  add_foreign_key "snippets", "projects", name: "fk_be41fd4bb7", on_delete: :cascade
4806 4807
  add_foreign_key "software_license_policies", "projects", on_delete: :cascade
  add_foreign_key "software_license_policies", "software_licenses", on_delete: :cascade
4808
  add_foreign_key "subscriptions", "projects", on_delete: :cascade
4809
  add_foreign_key "suggestions", "notes", on_delete: :cascade
4810
  add_foreign_key "system_note_metadata", "description_versions", name: "fk_fbd87415c9", on_delete: :nullify
4811
  add_foreign_key "system_note_metadata", "notes", name: "fk_d83a918cb1", on_delete: :cascade
4812 4813
  add_foreign_key "term_agreements", "application_setting_terms", column: "term_id"
  add_foreign_key "term_agreements", "users", on_delete: :cascade
4814 4815
  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
4816
  add_foreign_key "todos", "namespaces", column: "group_id", on_delete: :cascade
4817
  add_foreign_key "todos", "notes", name: "fk_91d1f47b13", on_delete: :cascade
4818
  add_foreign_key "todos", "projects", name: "fk_45054f9c45", on_delete: :cascade
4819 4820
  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
4821
  add_foreign_key "trending_projects", "projects", on_delete: :cascade
4822
  add_foreign_key "u2f_registrations", "users"
4823
  add_foreign_key "user_callouts", "users", on_delete: :cascade
4824
  add_foreign_key "user_custom_attributes", "users", on_delete: :cascade
4825 4826
  add_foreign_key "user_interacted_projects", "projects", name: "fk_722ceba4f7", on_delete: :cascade
  add_foreign_key "user_interacted_projects", "users", name: "fk_0894651f08", on_delete: :cascade
4827
  add_foreign_key "user_preferences", "users", on_delete: :cascade
4828
  add_foreign_key "user_statuses", "users", on_delete: :cascade
4829
  add_foreign_key "user_synced_attributes_metadata", "users", on_delete: :cascade
4830
  add_foreign_key "users", "application_setting_terms", column: "accepted_term_id", name: "fk_789cd90b35", on_delete: :cascade
4831
  add_foreign_key "users", "namespaces", column: "managing_group_id", name: "fk_a4b8fefe3e", on_delete: :nullify
4832 4833
  add_foreign_key "users_ops_dashboard_projects", "projects", on_delete: :cascade
  add_foreign_key "users_ops_dashboard_projects", "users", on_delete: :cascade
4834 4835
  add_foreign_key "users_security_dashboard_projects", "projects", on_delete: :cascade
  add_foreign_key "users_security_dashboard_projects", "users", on_delete: :cascade
4836
  add_foreign_key "users_star_projects", "projects", name: "fk_22cd27ddfc", on_delete: :cascade
4837 4838 4839 4840 4841 4842 4843 4844
  add_foreign_key "vulnerabilities", "epics", name: "fk_1d37cddf91", on_delete: :nullify
  add_foreign_key "vulnerabilities", "milestones", column: "due_date_sourcing_milestone_id", name: "fk_7c5bb22a22", on_delete: :nullify
  add_foreign_key "vulnerabilities", "milestones", column: "start_date_sourcing_milestone_id", name: "fk_88b4d546ef", on_delete: :nullify
  add_foreign_key "vulnerabilities", "milestones", name: "fk_131d289c65", on_delete: :nullify
  add_foreign_key "vulnerabilities", "projects", name: "fk_efb96ab1e2", on_delete: :cascade
  add_foreign_key "vulnerabilities", "users", column: "author_id", name: "fk_b1de915a15", on_delete: :nullify
  add_foreign_key "vulnerabilities", "users", column: "closed_by_id", name: "fk_cf5c60acbf", on_delete: :nullify
  add_foreign_key "vulnerabilities", "users", column: "last_edited_by_id", name: "fk_1302949740", on_delete: :nullify
4845
  add_foreign_key "vulnerabilities", "users", column: "resolved_by_id", name: "fk_76bc5f5455", on_delete: :nullify
4846
  add_foreign_key "vulnerabilities", "users", column: "updated_by_id", name: "fk_7ac31eacb9", on_delete: :nullify
4847 4848
  add_foreign_key "vulnerability_feedback", "ci_pipelines", column: "pipeline_id", on_delete: :nullify
  add_foreign_key "vulnerability_feedback", "issues", on_delete: :nullify
4849
  add_foreign_key "vulnerability_feedback", "merge_requests", name: "fk_563ff1912e", on_delete: :nullify
4850 4851
  add_foreign_key "vulnerability_feedback", "projects", on_delete: :cascade
  add_foreign_key "vulnerability_feedback", "users", column: "author_id", on_delete: :cascade
4852
  add_foreign_key "vulnerability_feedback", "users", column: "comment_author_id", name: "fk_94f7c8a81e", on_delete: :nullify
4853
  add_foreign_key "vulnerability_identifiers", "projects", on_delete: :cascade
4854 4855
  add_foreign_key "vulnerability_issue_links", "issues", on_delete: :cascade
  add_foreign_key "vulnerability_issue_links", "vulnerabilities", on_delete: :cascade
4856 4857
  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
4858 4859
  add_foreign_key "vulnerability_occurrence_pipelines", "ci_pipelines", column: "pipeline_id", on_delete: :cascade
  add_foreign_key "vulnerability_occurrence_pipelines", "vulnerability_occurrences", column: "occurrence_id", on_delete: :cascade
4860
  add_foreign_key "vulnerability_occurrences", "projects", on_delete: :cascade
4861
  add_foreign_key "vulnerability_occurrences", "vulnerabilities", name: "fk_97ffe77653", on_delete: :nullify
4862
  add_foreign_key "vulnerability_occurrences", "vulnerability_identifiers", column: "primary_identifier_id", on_delete: :cascade
4863 4864
  add_foreign_key "vulnerability_occurrences", "vulnerability_scanners", column: "scanner_id", on_delete: :cascade
  add_foreign_key "vulnerability_scanners", "projects", on_delete: :cascade
4865
  add_foreign_key "web_hook_logs", "web_hooks", on_delete: :cascade
4866
  add_foreign_key "web_hooks", "projects", name: "fk_0c8ca6d9d1", on_delete: :cascade
4867 4868
  add_foreign_key "zoom_meetings", "issues", on_delete: :cascade
  add_foreign_key "zoom_meetings", "projects", on_delete: :cascade
4869
end