diff options
-rw-r--r-- | changelogs/unreleased/ab-structuresql.yml | 5 | ||||
-rw-r--r-- | config/application.rb | 2 | ||||
-rw-r--r-- | danger/database/Dangerfile | 4 | ||||
-rw-r--r-- | db/schema.rb | 5268 | ||||
-rw-r--r-- | db/structure.sql | 12712 | ||||
-rw-r--r-- | doc/development/database_review.md | 4 | ||||
-rw-r--r-- | doc/development/omnibus.md | 2 | ||||
-rw-r--r-- | doc/development/scalability.md | 2 | ||||
-rw-r--r-- | doc/update/patch_versions.md | 2 | ||||
-rw-r--r-- | doc/update/upgrading_from_source.md | 2 | ||||
-rw-r--r-- | lib/gitlab/database/schema_cleaner.rb | 43 | ||||
-rw-r--r-- | lib/gitlab/fake_application_settings.rb | 2 | ||||
-rw-r--r-- | lib/tasks/gitlab/db.rake | 17 | ||||
-rwxr-xr-x | scripts/schema_changed.sh | 8 | ||||
-rw-r--r-- | scripts/utils.sh | 2 | ||||
-rw-r--r-- | spec/fixtures/gitlab/database/structure_example.sql | 96 | ||||
-rw-r--r-- | spec/fixtures/gitlab/database/structure_example_cleaned.sql | 44 | ||||
-rw-r--r-- | spec/lib/gitlab/danger/helper_spec.rb | 1 | ||||
-rw-r--r-- | spec/lib/gitlab/database/schema_cleaner_spec.rb | 31 | ||||
-rw-r--r-- | spec/migrations/active_record/schema_spec.rb | 20 | ||||
-rw-r--r-- | spec/tasks/gitlab/backup_rake_spec.rb | 6 | ||||
-rw-r--r-- | spec/tasks/gitlab/db_rake_spec.rb | 18 |
22 files changed, 12987 insertions, 5304 deletions
diff --git a/changelogs/unreleased/ab-structuresql.yml b/changelogs/unreleased/ab-structuresql.yml new file mode 100644 index 00000000000..bf7eb3f90e9 --- /dev/null +++ b/changelogs/unreleased/ab-structuresql.yml @@ -0,0 +1,5 @@ +--- +title: Convert schema to plain SQL using structure.sql +merge_request: 22808 +author: +type: other diff --git a/config/application.rb b/config/application.rb index 14e92bf5905..8cd707c9e15 100644 --- a/config/application.rb +++ b/config/application.rb @@ -144,7 +144,7 @@ module Gitlab # Use SQL instead of Active Record's schema dumper when creating the database. # This is necessary if your schema can't be completely dumped by the schema dumper, # like if you have constraints or database-specific column types - # config.active_record.schema_format = :sql + config.active_record.schema_format = :sql # Configure webpack config.webpack.config_file = "config/webpack.config.js" diff --git a/danger/database/Dangerfile b/danger/database/Dangerfile index a0a2959bab5..41ca2aa1978 100644 --- a/danger/database/Dangerfile +++ b/danger/database/Dangerfile @@ -31,7 +31,7 @@ MSG DATABASE_APPROVED_LABEL = 'database::approved' -non_geo_db_schema_updated = !git.modified_files.grep(%r{\Adb/schema\.rb}).empty? +non_geo_db_schema_updated = !git.modified_files.grep(%r{\Adb/structure\.sql}).empty? geo_db_schema_updated = !git.modified_files.grep(%r{\Aee/db/geo/schema\.rb}).empty? non_geo_migration_created = !git.added_files.grep(%r{\A(db/(post_)?migrate)/}).empty? @@ -40,7 +40,7 @@ geo_migration_created = !git.added_files.grep(%r{\Aee/db/geo/(post_)?migrate/}). format_str = gitlab_danger.ci? ? SCHEMA_NOT_UPDATED_MESSAGE_FULL : SCHEMA_NOT_UPDATED_MESSAGE_SHORT if non_geo_migration_created && !non_geo_db_schema_updated - warn format(format_str, migrations: 'migrations', schema: gitlab_danger.html_link("db/schema.rb")) + warn format(format_str, migrations: 'migrations', schema: gitlab_danger.html_link("db/structure.sql")) end if geo_migration_created && !geo_db_schema_updated diff --git a/db/schema.rb b/db/schema.rb index 98e6f0fb76a..26ce2ed69c4 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1,5267 +1,5 @@ -# 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. -# -# This file is the source Rails uses to define your schema when running `rails -# db:schema:load`. When creating a new database, `rails db:schema:load` tends to -# be faster and is potentially less error prone than running all of your -# migrations from scratch. Old migrations may fail to apply correctly if those -# migrations use external dependencies or application code. -# -# It's strongly recommended that you check this file into your version control system. +# Disabled in favour of structure.sql +# Please refer to https://gitlab.com/gitlab-org/gitlab/-/issues/211487 for details -ActiveRecord::Schema.define(version: 2020_03_19_203901) do +raise 'schema.rb should not be used anymore, use structure.sql instead' - # These are extensions that must be enabled in order to support this database - enable_extension "pg_trgm" - enable_extension "plpgsql" - - create_table "abuse_reports", id: :serial, force: :cascade do |t| - t.integer "reporter_id" - t.integer "user_id" - t.text "message" - t.datetime "created_at" - t.datetime "updated_at" - t.text "message_html" - t.integer "cached_markdown_version" - t.index ["user_id"], name: "index_abuse_reports_on_user_id" - end - - 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 - - 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 - - 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 - - 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 - - create_table "appearances", id: :serial, force: :cascade do |t| - t.string "title", null: false - t.text "description", null: false - t.string "logo" - t.integer "updated_by" - t.string "header_logo" - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.text "description_html" - t.integer "cached_markdown_version" - t.text "new_project_guidelines" - t.text "new_project_guidelines_html" - t.text "header_message" - t.text "header_message_html" - t.text "footer_message" - t.text "footer_message_html" - t.text "message_background_color" - t.text "message_font_color" - t.string "favicon" - t.boolean "email_header_and_footer_enabled", default: false, null: false - end - - create_table "application_setting_terms", id: :serial, force: :cascade do |t| - t.integer "cached_markdown_version" - t.text "terms", null: false - t.text "terms_html" - end - - create_table "application_settings", id: :serial, force: :cascade do |t| - t.integer "default_projects_limit" - t.boolean "signup_enabled" - t.boolean "gravatar_enabled" - t.text "sign_in_text" - t.datetime "created_at" - t.datetime "updated_at" - t.string "home_page_url" - t.integer "default_branch_protection", default: 2 - t.text "help_text" - t.text "restricted_visibility_levels" - t.boolean "version_check_enabled", default: true - t.integer "max_attachment_size", default: 10, null: false - t.integer "default_project_visibility", default: 0, null: false - t.integer "default_snippet_visibility", default: 0, null: false - 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 - t.string "repository_storages", default: "default" - 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" - t.integer "rsa_key_restriction", default: 0, null: false - t.integer "dsa_key_restriction", default: -1, null: false - t.integer "ecdsa_key_restriction", default: 0, null: false - t.integer "ed25519_key_restriction", default: 0, null: false - 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 - t.boolean "html_emails_enabled", default: true - t.string "plantuml_url" - t.boolean "plantuml_enabled" - t.integer "shared_runners_minutes", default: 0, null: false - t.bigint "repository_size_limit", default: 0 - t.integer "terminal_max_session_time", default: 0, null: false - t.integer "unique_ips_limit_per_user" - t.integer "unique_ips_limit_time_window" - t.boolean "unique_ips_limit_enabled", default: false, null: false - t.string "default_artifacts_expire_in", default: "0", null: false - t.string "elasticsearch_url", default: "http://localhost:9200" - t.boolean "elasticsearch_aws", default: false, null: false - t.string "elasticsearch_aws_region", default: "us-east-1" - t.string "elasticsearch_aws_access_key" - t.integer "geo_status_timeout", default: 10 - t.string "uuid" - t.decimal "polling_interval_multiplier", default: "1.0", null: false - t.boolean "elasticsearch_experimental_indexer" - t.integer "cached_markdown_version" - t.boolean "check_namespace_plan", default: false, null: false - t.integer "mirror_max_delay", default: 300, null: false - t.integer "mirror_max_capacity", default: 100, null: false - t.integer "mirror_capacity_threshold", default: 50, null: false - t.boolean "prometheus_metrics_enabled", default: true, null: false - t.boolean "authorized_keys_enabled", default: true, null: false - t.boolean "help_page_hide_commercial_content", default: false - t.string "help_page_support_url" - t.boolean "slack_app_enabled", default: false - t.string "slack_app_id" - t.integer "performance_bar_allowed_group_id" - t.boolean "allow_group_owners_to_manage_ldap", default: true, null: false - t.boolean "hashed_storage_enabled", default: true, null: false - t.boolean "project_export_enabled", default: true, null: false - t.boolean "auto_devops_enabled", default: true, null: false - 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 - 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 - t.boolean "mirror_available", default: true, null: false - t.boolean "password_authentication_enabled_for_web" - t.boolean "password_authentication_enabled_for_git", default: true, null: false - t.string "auto_devops_domain" - t.boolean "external_authorization_service_enabled", default: false, null: false - t.string "external_authorization_service_url" - t.string "external_authorization_service_default_label" - t.boolean "pages_domain_verification_enabled", default: true, null: false - t.string "user_default_internal_regex" - t.float "external_authorization_service_timeout", default: 0.5 - 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" - t.string "email_additional_text" - t.boolean "enforce_terms", default: false - t.integer "file_template_project_id" - t.boolean "pseudonymizer_enabled", default: false, null: false - t.boolean "hide_third_party_offers", default: false, null: false - t.boolean "snowplow_enabled", default: false, null: false - t.string "snowplow_collector_hostname" - t.string "snowplow_cookie_domain" - t.boolean "instance_statistics_visibility_private", default: false, null: false - t.boolean "web_ide_clientside_preview_enabled", default: false, null: false - t.boolean "user_show_add_ssh_key_message", default: true, null: false - t.integer "custom_project_templates_group_id" - t.integer "usage_stats_set_by_user_id" - t.integer "receive_max_input_size" - t.integer "diff_max_patch_bytes", default: 102400, null: false - t.integer "archive_builds_in_seconds" - t.string "commit_email_hostname" - t.boolean "protected_ci_variables", default: false, null: false - t.string "runners_registration_token_encrypted" - t.integer "local_markdown_version", default: 0, null: false - t.integer "first_day_of_week", default: 0, null: false - t.boolean "elasticsearch_limit_indexing", default: false, null: false - t.integer "default_project_creation", default: 2, null: false - t.string "lets_encrypt_notification_email" - t.boolean "lets_encrypt_terms_of_service_accepted", default: false, null: false - t.string "geo_node_allowed_ips", default: "0.0.0.0/0, ::/0" - t.integer "elasticsearch_shards", default: 5, null: false - t.integer "elasticsearch_replicas", default: 1, null: false - t.text "encrypted_lets_encrypt_private_key" - t.text "encrypted_lets_encrypt_private_key_iv" - t.string "required_instance_ci_template" - t.boolean "dns_rebinding_protection_enabled", default: true, null: false - t.boolean "default_project_deletion_protection", default: false, null: false - t.boolean "grafana_enabled", default: false, null: false - t.boolean "lock_memberships_to_ldap", default: false, null: false - t.boolean "time_tracking_limit_to_hours", default: false, null: false - t.string "grafana_url", default: "/-/grafana", null: false - t.boolean "login_recaptcha_protection_enabled", default: false, null: false - t.string "outbound_local_requests_whitelist", limit: 255, default: [], null: false, array: true - t.integer "raw_blob_request_limit", default: 300, null: false - t.boolean "allow_local_requests_from_web_hooks_and_services", default: false, null: false - t.boolean "allow_local_requests_from_system_hooks", default: true, null: false - t.bigint "instance_administration_project_id" - 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" - t.string "static_objects_external_storage_url", limit: 255 - t.string "static_objects_external_storage_auth_token", limit: 255 - t.integer "max_personal_access_token_lifetime" - t.boolean "throttle_protected_paths_enabled", default: false, null: false - t.integer "throttle_protected_paths_requests_per_period", default: 10, null: false - t.integer "throttle_protected_paths_period_in_seconds", default: 60, null: false - 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 - 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 - t.string "snowplow_iglu_registry_url", limit: 255 - t.integer "push_event_hooks_limit", default: 3, null: false - t.integer "push_event_activities_limit", default: 3, null: false - t.string "custom_http_clone_url_root", limit: 511 - t.integer "deletion_adjourned_period", default: 7, null: false - t.date "license_trial_ends_on" - 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" - t.string "snowplow_app_id" - t.datetime_with_timezone "productivity_analytics_start_date" - t.string "default_ci_config_path", limit: 255 - t.boolean "sourcegraph_enabled", default: false, null: false - t.string "sourcegraph_url", limit: 255 - t.boolean "sourcegraph_public_only", default: true, null: false - t.bigint "snippet_size_limit", default: 52428800, null: false - t.integer "minimum_password_length", default: 8, null: false - 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 - t.boolean "force_pages_access_control", default: false, null: false - t.boolean "updating_name_disabled_for_users", default: false, null: false - t.integer "instance_administrators_group_id" - t.integer "elasticsearch_indexed_field_length_limit", default: 0, null: false - t.integer "elasticsearch_max_bulk_size_mb", limit: 2, default: 10, null: false - t.integer "elasticsearch_max_bulk_concurrency", limit: 2, default: 10, null: false - t.boolean "disable_overriding_approvers_per_merge_request", default: false, null: false - t.boolean "prevent_merge_requests_author_approval", default: false, null: false - t.boolean "prevent_merge_requests_committers_approval", default: false, null: false - t.boolean "email_restrictions_enabled", default: false, null: false - t.text "email_restrictions" - t.boolean "npm_package_requests_forwarding", default: true, null: false - 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" - t.index ["instance_administration_project_id"], name: "index_applicationsettings_on_instance_administration_project_id" - t.index ["instance_administrators_group_id"], name: "index_application_settings_on_instance_administrators_group_id" - t.index ["usage_stats_set_by_user_id"], name: "index_application_settings_on_usage_stats_set_by_user_id" - end - - create_table "approval_merge_request_rule_sources", force: :cascade do |t| - t.bigint "approval_merge_request_rule_id", null: false - t.bigint "approval_project_rule_id", null: false - 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" - end - - create_table "approval_merge_request_rules", force: :cascade do |t| - 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 - t.integer "rule_type", limit: 2, default: 1, null: false - t.integer "report_type", limit: 2 - 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" - 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)" - end - - create_table "approval_merge_request_rules_approved_approvers", force: :cascade do |t| - t.bigint "approval_merge_request_rule_id", null: false - t.integer "user_id", null: false - 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" - end - - create_table "approval_merge_request_rules_groups", force: :cascade do |t| - t.bigint "approval_merge_request_rule_id", null: false - t.integer "group_id", null: false - 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" - end - - create_table "approval_merge_request_rules_users", force: :cascade do |t| - t.bigint "approval_merge_request_rule_id", null: false - t.integer "user_id", null: false - 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" - end - - create_table "approval_project_rules", force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.integer "project_id", null: false - t.integer "approvals_required", limit: 2, default: 0, null: false - t.string "name", null: false - t.integer "rule_type", limit: 2, default: 0, null: false - t.index ["project_id"], name: "any_approver_project_rule_type_unique_index", unique: true, where: "(rule_type = 3)" - t.index ["project_id"], name: "index_approval_project_rules_on_project_id" - t.index ["rule_type"], name: "index_approval_project_rules_on_rule_type" - end - - create_table "approval_project_rules_groups", force: :cascade do |t| - t.bigint "approval_project_rule_id", null: false - t.integer "group_id", null: false - 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" - end - - create_table "approval_project_rules_protected_branches", id: false, force: :cascade do |t| - t.bigint "approval_project_rule_id", null: false - t.bigint "protected_branch_id", null: false - t.index ["approval_project_rule_id", "protected_branch_id"], name: "index_approval_project_rules_protected_branches_unique", unique: true - t.index ["protected_branch_id"], name: "index_approval_project_rules_protected_branches_pb_id" - end - - create_table "approval_project_rules_users", force: :cascade do |t| - t.bigint "approval_project_rule_id", null: false - t.integer "user_id", null: false - 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" - end - - create_table "approvals", id: :serial, force: :cascade do |t| - t.integer "merge_request_id", null: false - t.integer "user_id", null: false - t.datetime "created_at" - t.datetime "updated_at" - 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 - end - - create_table "approver_groups", id: :serial, force: :cascade do |t| - t.integer "target_id", null: false - t.string "target_type", null: false - t.integer "group_id", null: false - t.datetime "created_at" - t.datetime "updated_at" - 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" - end - - create_table "approvers", id: :serial, force: :cascade do |t| - t.integer "target_id", null: false - t.string "target_type" - t.integer "user_id", null: false - t.datetime "created_at" - t.datetime "updated_at" - 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" - end - - create_table "audit_events", id: :serial, force: :cascade do |t| - 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" - t.datetime "created_at" - t.datetime "updated_at" - t.index ["created_at", "author_id"], name: "analytics_index_audit_events_on_created_at_and_author_id" - t.index ["entity_id", "entity_type", "id"], name: "index_audit_events_on_entity_id_and_entity_type_and_id_desc", order: { id: :desc } - end - - create_table "award_emoji", id: :serial, force: :cascade do |t| - t.string "name" - t.integer "user_id" - t.integer "awardable_id" - t.string "awardable_type" - t.datetime "created_at" - t.datetime "updated_at" - 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" - end - - 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 - - create_table "badges", id: :serial, force: :cascade do |t| - t.string "link_url", null: false - t.string "image_url", null: false - t.integer "project_id" - t.integer "group_id" - t.string "type", null: false - t.string "name", limit: 255 - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.index ["group_id"], name: "index_badges_on_group_id" - t.index ["project_id"], name: "index_badges_on_project_id" - end - - create_table "board_assignees", id: :serial, force: :cascade do |t| - t.integer "board_id", null: false - t.integer "assignee_id", null: false - 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 - end - - create_table "board_group_recent_visits", force: :cascade do |t| - 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" - 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" - end - - create_table "board_labels", id: :serial, force: :cascade do |t| - t.integer "board_id", null: false - t.integer "label_id", null: false - 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" - end - - create_table "board_project_recent_visits", force: :cascade do |t| - 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" - 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" - end - - create_table "boards", id: :serial, force: :cascade do |t| - t.integer "project_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.string "name", default: "Development", null: false - t.integer "milestone_id" - t.integer "group_id" - t.integer "weight" - 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" - end - - create_table "broadcast_messages", id: :serial, force: :cascade do |t| - t.text "message", null: false - t.datetime "starts_at", null: false - t.datetime "ends_at", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.string "color" - t.string "font" - t.text "message_html", null: false - t.integer "cached_markdown_version" - t.string "target_path", limit: 255 - t.integer "broadcast_type", limit: 2, default: 1, null: false - t.boolean "dismissable" - t.index ["ends_at", "broadcast_type", "id"], name: "index_broadcast_message_on_ends_at_and_broadcast_type_and_id" - end - - create_table "chat_names", id: :serial, force: :cascade do |t| - t.integer "user_id", null: false - t.integer "service_id", null: false - t.string "team_id", null: false - t.string "team_domain" - t.string "chat_id", null: false - t.string "chat_name" - t.datetime "last_used_at" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - 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 - end - - create_table "chat_teams", id: :serial, force: :cascade do |t| - t.integer "namespace_id", null: false - t.string "team_id" - t.string "name" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["namespace_id"], name: "index_chat_teams_on_namespace_id", unique: true - end - - create_table "ci_build_needs", id: :serial, force: :cascade do |t| - t.integer "build_id", null: false - t.text "name", null: false - t.boolean "artifacts", default: true, null: false - t.index ["build_id", "name"], name: "index_ci_build_needs_on_build_id_and_name", unique: true - end - - create_table "ci_build_trace_chunks", force: :cascade do |t| - t.integer "build_id", null: false - t.integer "chunk_index", null: false - t.integer "data_store", null: false - t.binary "raw_data" - t.index ["build_id", "chunk_index"], name: "index_ci_build_trace_chunks_on_build_id_and_chunk_index", unique: true - end - - create_table "ci_build_trace_section_names", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.string "name", null: false - t.index ["project_id", "name"], name: "index_ci_build_trace_section_names_on_project_id_and_name", unique: true - end - - create_table "ci_build_trace_sections", id: false, force: :cascade do |t| - t.integer "project_id", null: false - t.datetime "date_start", null: false - t.datetime "date_end", null: false - t.bigint "byte_start", null: false - t.bigint "byte_end", null: false - t.integer "build_id", null: false - t.integer "section_name_id", null: false - 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" - end - - create_table "ci_builds", id: :serial, force: :cascade do |t| - t.string "status" - t.datetime "finished_at" - t.text "trace" - t.datetime "created_at" - t.datetime "updated_at" - t.datetime "started_at" - 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" - t.integer "project_id" - t.text "artifacts_metadata" - t.integer "erased_by_id" - t.datetime "erased_at" - t.datetime "artifacts_expire_at" - t.string "environment" - t.bigint "artifacts_size" - t.string "when" - t.text "yaml_variables" - t.datetime "queued_at" - t.string "token" - t.integer "lock_version", default: 0 - t.string "coverage_regex" - t.integer "auto_canceled_by_id" - t.boolean "retried" - t.integer "stage_id" - t.integer "artifacts_file_store" - t.integer "artifacts_metadata_store" - t.boolean "protected" - t.integer "failure_reason" - t.datetime_with_timezone "scheduled_at" - t.string "token_encrypted" - t.integer "upstream_pipeline_id" - t.bigint "resource_group_id" - t.datetime_with_timezone "waiting_for_resource_at" - t.boolean "processed" - t.integer "scheduling_type", limit: 2 - 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_reports_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, ('license_scanning'::character varying)::text]))" - t.index ["project_id", "id"], name: "index_ci_builds_on_project_id_and_id" - 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)))" - 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])))" - 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))" - t.index ["protected"], name: "index_ci_builds_on_protected" - t.index ["queued_at"], name: "index_ci_builds_on_queued_at" - t.index ["resource_group_id", "id"], name: "index_for_resource_group", where: "(resource_group_id IS NOT NULL)" - 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" - t.index ["status", "created_at", "project_id"], name: "ci_builds_gitlab_monitor_metrics", where: "((type)::text = 'Ci::Build'::text)" - 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" - end - - create_table "ci_builds_metadata", id: :serial, force: :cascade do |t| - t.integer "build_id", null: false - t.integer "project_id", null: false - t.integer "timeout" - t.integer "timeout_source", default: 1, null: false - t.boolean "interruptible" - t.jsonb "config_options" - t.jsonb "config_variables" - t.boolean "has_exposed_artifacts" - t.string "environment_auto_stop_in", limit: 255 - t.string "expanded_environment_name", limit: 255 - t.index ["build_id"], name: "index_ci_builds_metadata_on_build_id", unique: true - t.index ["build_id"], name: "index_ci_builds_metadata_on_build_id_and_has_exposed_artifacts", where: "(has_exposed_artifacts IS TRUE)" - t.index ["build_id"], name: "index_ci_builds_metadata_on_build_id_and_interruptible", where: "(interruptible = true)" - t.index ["project_id"], name: "index_ci_builds_metadata_on_project_id" - end - - create_table "ci_builds_runner_session", force: :cascade do |t| - t.integer "build_id", null: false - t.string "url", null: false - t.string "certificate" - t.string "authorization" - t.index ["build_id"], name: "index_ci_builds_runner_session_on_build_id", unique: true - end - - create_table "ci_daily_report_results", force: :cascade do |t| - t.date "date", null: false - t.bigint "project_id", null: false - t.bigint "last_pipeline_id", null: false - t.float "value", null: false - t.bigint "param_type", null: false - t.string "ref_path", null: false - t.string "title", null: false - t.index ["last_pipeline_id"], name: "index_ci_daily_report_results_on_last_pipeline_id" - t.index ["project_id", "ref_path", "param_type", "date", "title"], name: "index_daily_report_results_unique_columns", unique: true - end - - create_table "ci_group_variables", id: :serial, force: :cascade do |t| - t.string "key", null: false - t.text "value" - t.text "encrypted_value" - t.string "encrypted_value_salt" - t.string "encrypted_value_iv" - t.integer "group_id", null: false - t.boolean "protected", default: false, null: false - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.boolean "masked", default: false, null: false - t.integer "variable_type", limit: 2, default: 1, null: false - t.index ["group_id", "key"], name: "index_ci_group_variables_on_group_id_and_key", unique: true - end - - create_table "ci_job_artifacts", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.integer "job_id", null: false - t.integer "file_type", null: false - t.bigint "size" - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.datetime_with_timezone "expire_at" - t.string "file" - t.integer "file_store" - t.binary "file_sha256" - t.integer "file_format", limit: 2 - t.integer "file_location", limit: 2 - 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 ["id", "file_type", "job_id", "created_at", "updated_at"], name: "job_artifacts_secure_reports_temp_index", where: "((file_type >= 5) AND (file_type <= 8))" - 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" - t.index ["project_id"], name: "index_ci_job_artifacts_on_project_id_for_security_reports", where: "(file_type = ANY (ARRAY[5, 6, 7, 8]))" - end - - 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.integer "source", limit: 2, default: 0, 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 - - create_table "ci_pipeline_chat_data", force: :cascade do |t| - t.integer "pipeline_id", null: false - t.integer "chat_name_id", null: false - t.text "response_url", null: false - 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 - end - - create_table "ci_pipeline_schedule_variables", id: :serial, force: :cascade do |t| - t.string "key", null: false - t.text "value" - t.text "encrypted_value" - t.string "encrypted_value_salt" - t.string "encrypted_value_iv" - t.integer "pipeline_schedule_id", null: false - t.datetime_with_timezone "created_at" - t.datetime_with_timezone "updated_at" - t.integer "variable_type", limit: 2, default: 1, null: false - t.index ["pipeline_schedule_id", "key"], name: "index_ci_pipeline_schedule_variables_on_schedule_id_and_key", unique: true - end - - create_table "ci_pipeline_schedules", id: :serial, force: :cascade do |t| - t.string "description" - t.string "ref" - t.string "cron" - t.string "cron_timezone" - t.datetime "next_run_at" - t.integer "project_id" - t.integer "owner_id" - t.boolean "active", default: true - t.datetime "created_at" - t.datetime "updated_at" - 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" - end - - create_table "ci_pipeline_variables", id: :serial, force: :cascade do |t| - t.string "key", null: false - t.text "value" - t.text "encrypted_value" - t.string "encrypted_value_salt" - t.string "encrypted_value_iv" - t.integer "pipeline_id", null: false - t.integer "variable_type", limit: 2, default: 1, null: false - t.index ["pipeline_id", "key"], name: "index_ci_pipeline_variables_on_pipeline_id_and_key", unique: true - t.index ["pipeline_id"], name: "index_ci_pipeline_variables_on_pipeline_id", where: "((key)::text = 'AUTO_DEVOPS_MODSECURITY_SEC_RULE_ENGINE'::text)" - end - - create_table "ci_pipelines", id: :serial, force: :cascade do |t| - t.string "ref" - t.string "sha" - t.string "before_sha" - t.datetime "created_at" - t.datetime "updated_at" - t.boolean "tag", default: false - t.text "yaml_errors" - t.datetime "committed_at" - t.integer "project_id" - t.string "status" - t.datetime "started_at" - t.datetime "finished_at" - t.integer "duration" - t.integer "user_id" - t.integer "lock_version", default: 0 - t.integer "auto_canceled_by_id" - t.integer "pipeline_schedule_id" - t.integer "source" - t.integer "config_source" - t.boolean "protected" - t.integer "failure_reason" - t.integer "iid" - t.integer "merge_request_id" - t.binary "source_sha" - t.binary "target_sha" - t.bigint "external_pull_request_id" - t.index ["auto_canceled_by_id"], name: "index_ci_pipelines_on_auto_canceled_by_id" - t.index ["external_pull_request_id"], name: "index_ci_pipelines_on_external_pull_request_id", where: "(external_pull_request_id IS NOT NULL)" - 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" - t.index ["project_id", "id"], name: "index_ci_pipelines_on_project_id_and_id_desc", order: { id: :desc } - 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" - t.index ["project_id", "status", "updated_at"], name: "index_ci_pipelines_on_project_id_and_status_and_updated_at" - t.index ["status"], name: "index_ci_pipelines_on_status" - t.index ["user_id", "created_at"], name: "index_ci_pipelines_on_user_id_and_created_at" - end - - 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 - - create_table "ci_refs", force: :cascade do |t| - t.integer "project_id", null: false - t.integer "lock_version", default: 0 - t.integer "last_updated_by_pipeline_id" - t.boolean "tag", default: false, null: false - t.string "ref", limit: 255, null: false - t.string "status", limit: 255, null: false - t.index ["last_updated_by_pipeline_id"], name: "index_ci_refs_on_last_updated_by_pipeline_id" - t.index ["project_id", "ref", "tag"], name: "index_ci_refs_on_project_id_and_ref_and_tag", unique: true - end - - 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 - - create_table "ci_runner_namespaces", id: :serial, force: :cascade do |t| - t.integer "runner_id" - t.integer "namespace_id" - 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 - end - - create_table "ci_runner_projects", id: :serial, force: :cascade do |t| - t.integer "runner_id", null: false - t.datetime "created_at" - t.datetime "updated_at" - t.integer "project_id" - t.index ["project_id"], name: "index_ci_runner_projects_on_project_id" - t.index ["runner_id"], name: "index_ci_runner_projects_on_runner_id" - end - - create_table "ci_runners", id: :serial, force: :cascade do |t| - t.string "token" - t.datetime "created_at" - t.datetime "updated_at" - t.string "description" - t.datetime "contacted_at" - 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 - t.integer "access_level", default: 0, null: false - t.string "ip_address" - t.integer "maximum_timeout" - t.integer "runner_type", limit: 2, null: false - t.string "token_encrypted" - 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" - end - - create_table "ci_sources_pipelines", id: :serial, force: :cascade do |t| - t.integer "project_id" - t.integer "pipeline_id" - t.integer "source_project_id" - t.integer "source_job_id" - t.integer "source_pipeline_id" - 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" - end - - create_table "ci_sources_projects", force: :cascade do |t| - t.bigint "pipeline_id", null: false - t.bigint "source_project_id", null: false - t.index ["pipeline_id"], name: "index_ci_sources_projects_on_pipeline_id" - t.index ["source_project_id", "pipeline_id"], name: "index_ci_sources_projects_on_source_project_id_and_pipeline_id", unique: true - end - - create_table "ci_stages", id: :serial, force: :cascade do |t| - t.integer "project_id" - t.integer "pipeline_id" - t.datetime "created_at" - t.datetime "updated_at" - t.string "name" - t.integer "status" - t.integer "lock_version", default: 0 - t.integer "position" - 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" - end - - 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 - - create_table "ci_trigger_requests", id: :serial, force: :cascade do |t| - t.integer "trigger_id", null: false - t.text "variables" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "commit_id" - t.index ["commit_id"], name: "index_ci_trigger_requests_on_commit_id" - t.index ["trigger_id", "id"], name: "index_ci_trigger_requests_on_trigger_id_and_id", order: { id: :desc } - end - - create_table "ci_triggers", id: :serial, force: :cascade do |t| - t.string "token" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "project_id" - t.integer "owner_id", null: false - t.string "description" - t.string "ref" - t.index ["owner_id"], name: "index_ci_triggers_on_owner_id" - t.index ["project_id"], name: "index_ci_triggers_on_project_id" - end - - create_table "ci_variables", id: :serial, force: :cascade do |t| - t.string "key", null: false - t.text "value" - t.text "encrypted_value" - t.string "encrypted_value_salt" - t.string "encrypted_value_iv" - t.integer "project_id", null: false - t.boolean "protected", default: false, null: false - t.string "environment_scope", default: "*", null: false - t.boolean "masked", default: false, null: false - t.integer "variable_type", limit: 2, default: 1, null: false - t.index ["project_id", "key", "environment_scope"], name: "index_ci_variables_on_project_id_and_key_and_environment_scope", unique: true - t.index ["project_id"], name: "index_ci_variables_on_project_id", where: "((key)::text = 'AUTO_DEVOPS_MODSECURITY_SEC_RULE_ENGINE'::text)" - end - - create_table "cluster_groups", id: :serial, force: :cascade do |t| - t.integer "cluster_id", null: false - t.integer "group_id", null: false - 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" - end - - create_table "cluster_platforms_kubernetes", id: :serial, force: :cascade do |t| - t.integer "cluster_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.text "api_url" - 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" - t.integer "authorization_type", limit: 2 - t.index ["cluster_id"], name: "index_cluster_platforms_kubernetes_on_cluster_id", unique: true - end - - create_table "cluster_projects", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.integer "cluster_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["cluster_id"], name: "index_cluster_projects_on_cluster_id" - t.index ["project_id"], name: "index_cluster_projects_on_project_id" - end - - 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 - - create_table "cluster_providers_gcp", id: :serial, force: :cascade do |t| - t.integer "cluster_id", null: false - t.integer "status" - t.integer "num_nodes", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - 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" - t.boolean "legacy_abac", default: false, null: false - t.boolean "cloud_run", default: false, null: false - t.index ["cloud_run"], name: "index_cluster_providers_gcp_on_cloud_run" - t.index ["cluster_id"], name: "index_cluster_providers_gcp_on_cluster_id", unique: true - end - - create_table "clusters", id: :serial, force: :cascade do |t| - t.integer "user_id" - t.integer "provider_type" - t.integer "platform_type" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.boolean "enabled", default: true - t.string "name", null: false - t.string "environment_scope", default: "*", null: false - t.integer "cluster_type", limit: 2, default: 3, null: false - t.string "domain" - t.boolean "managed", default: true, null: false - t.boolean "namespace_per_environment", default: true, null: false - t.integer "management_project_id" - t.integer "cleanup_status", limit: 2, default: 1, null: false - t.text "cleanup_status_reason" - t.index ["enabled", "provider_type", "id"], name: "index_clusters_on_enabled_and_provider_type_and_id" - t.index ["management_project_id"], name: "index_clusters_on_management_project_id", where: "(management_project_id IS NOT NULL)" - t.index ["user_id"], name: "index_clusters_on_user_id" - end - - create_table "clusters_applications_cert_managers", id: :serial, force: :cascade do |t| - 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" - t.index ["cluster_id"], name: "index_clusters_applications_cert_managers_on_cluster_id", unique: true - end - - 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 - - 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.text "status_reason" - t.index ["cluster_id"], name: "index_clusters_applications_elastic_stacks_on_cluster_id", unique: true - end - - create_table "clusters_applications_helm", id: :serial, force: :cascade do |t| - t.integer "cluster_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "status", null: false - t.string "version", null: false - t.text "status_reason" - t.text "encrypted_ca_key" - t.text "encrypted_ca_key_iv" - t.text "ca_cert" - t.index ["cluster_id"], name: "index_clusters_applications_helm_on_cluster_id", unique: true - end - - create_table "clusters_applications_ingress", id: :serial, force: :cascade do |t| - t.integer "cluster_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "status", null: false - t.integer "ingress_type", null: false - t.string "version", null: false - t.string "cluster_ip" - t.text "status_reason" - t.string "external_ip" - t.string "external_hostname" - t.boolean "modsecurity_enabled" - t.integer "modsecurity_mode", limit: 2, default: 0, null: false - t.index ["cluster_id"], name: "index_clusters_applications_ingress_on_cluster_id", unique: true - end - - create_table "clusters_applications_jupyter", id: :serial, force: :cascade do |t| - t.integer "cluster_id", null: false - t.integer "oauth_application_id" - 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 - t.text "status_reason" - 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" - end - - create_table "clusters_applications_knative", id: :serial, force: :cascade do |t| - 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 - t.string "hostname" - t.text "status_reason" - t.string "external_ip" - t.string "external_hostname" - t.index ["cluster_id"], name: "index_clusters_applications_knative_on_cluster_id", unique: true - end - - create_table "clusters_applications_prometheus", id: :serial, force: :cascade do |t| - t.integer "cluster_id", null: false - t.integer "status", null: false - t.string "version", null: false - t.text "status_reason" - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.datetime_with_timezone "last_update_started_at" - t.string "encrypted_alert_manager_token" - t.string "encrypted_alert_manager_token_iv" - t.index ["cluster_id"], name: "index_clusters_applications_prometheus_on_cluster_id", unique: true - end - - create_table "clusters_applications_runners", id: :serial, force: :cascade do |t| - t.integer "cluster_id", null: false - t.integer "runner_id" - t.integer "status", null: false - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.string "version", null: false - t.text "status_reason" - t.boolean "privileged", default: true, null: false - 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" - end - - create_table "clusters_kubernetes_namespaces", force: :cascade do |t| - 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" - t.bigint "environment_id" - t.index ["cluster_id", "namespace"], name: "kubernetes_namespaces_cluster_and_namespace", unique: true - t.index ["cluster_id", "project_id", "environment_id"], name: "index_kubernetes_namespaces_on_cluster_project_environment_id", unique: true - 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" - t.index ["environment_id"], name: "index_clusters_kubernetes_namespaces_on_environment_id" - t.index ["project_id"], name: "index_clusters_kubernetes_namespaces_on_project_id" - end - - 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 - t.string "commit_id", null: false - t.index ["commit_id", "note_id"], name: "commit_id_and_note_id_index" - t.index ["note_id"], name: "index_commit_user_mentions_on_note_id", unique: true - end - - 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 - - create_table "container_repositories", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.string "name", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - 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" - end - - create_table "conversational_development_index_metrics", id: :serial, force: :cascade do |t| - t.float "leader_issues", null: false - t.float "instance_issues", null: false - t.float "leader_notes", null: false - t.float "instance_notes", null: false - t.float "leader_milestones", null: false - t.float "instance_milestones", null: false - t.float "leader_boards", null: false - t.float "instance_boards", null: false - t.float "leader_merge_requests", null: false - t.float "instance_merge_requests", null: false - t.float "leader_ci_pipelines", null: false - t.float "instance_ci_pipelines", null: false - t.float "leader_environments", null: false - t.float "instance_environments", null: false - t.float "leader_deployments", null: false - t.float "instance_deployments", null: false - t.float "leader_projects_prometheus_active", null: false - t.float "instance_projects_prometheus_active", null: false - t.float "leader_service_desk_issues", null: false - t.float "instance_service_desk_issues", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - 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 - end - - create_table "dependency_proxy_blobs", id: :serial, force: :cascade do |t| - 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 - t.index ["group_id", "file_name"], name: "index_dependency_proxy_blobs_on_group_id_and_file_name" - end - - create_table "dependency_proxy_group_settings", id: :serial, force: :cascade do |t| - 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 - t.index ["group_id"], name: "index_dependency_proxy_group_settings_on_group_id" - end - - create_table "deploy_keys_projects", id: :serial, force: :cascade do |t| - t.integer "deploy_key_id", null: false - t.integer "project_id", null: false - t.datetime "created_at" - t.datetime "updated_at" - t.boolean "can_push", default: false, null: false - t.index ["deploy_key_id"], name: "index_deploy_keys_projects_on_deploy_key_id" - t.index ["project_id"], name: "index_deploy_keys_projects_on_project_id" - end - - create_table "deploy_tokens", id: :serial, force: :cascade do |t| - t.boolean "revoked", default: false - t.boolean "read_repository", default: false, null: false - t.boolean "read_registry", default: false, null: false - t.datetime_with_timezone "expires_at", null: false - t.datetime_with_timezone "created_at", null: false - t.string "name", null: false - t.string "token" - t.string "username" - t.string "token_encrypted", limit: 255 - t.integer "deploy_token_type", limit: 2, default: 2, null: false - 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 - t.index ["token_encrypted"], name: "index_deploy_tokens_on_token_encrypted", unique: true - end - - create_table "deployment_clusters", primary_key: "deployment_id", id: :integer, default: nil, force: :cascade do |t| - t.integer "cluster_id", null: false - t.string "kubernetes_namespace", limit: 255 - t.index ["cluster_id", "deployment_id"], name: "index_deployment_clusters_on_cluster_id_and_deployment_id", unique: true - t.index ["cluster_id", "kubernetes_namespace"], name: "idx_deployment_clusters_on_cluster_id_and_kubernetes_namespace" - end - - 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.integer "environment_id" - t.index ["deployment_id", "merge_request_id"], name: "idx_deployment_merge_requests_unique_index", unique: true - t.index ["environment_id", "merge_request_id"], name: "idx_environment_merge_requests_unique_index", unique: true - t.index ["merge_request_id"], name: "index_deployment_merge_requests_on_merge_request_id" - end - - create_table "deployments", id: :serial, force: :cascade do |t| - 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" - t.datetime "created_at" - t.datetime "updated_at" - t.string "on_stop" - t.integer "status", limit: 2, null: false - t.datetime_with_timezone "finished_at" - t.integer "cluster_id" - t.index ["cluster_id", "status"], name: "index_deployments_on_cluster_id_and_status" - 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", "status"], name: "index_deployments_on_id_and_status" - t.index ["id"], name: "partial_index_deployments_for_legacy_successful_deployments", where: "((finished_at IS NULL) AND (status = 2))" - t.index ["project_id", "id"], name: "index_deployments_on_project_id_and_id", order: { id: :desc } - t.index ["project_id", "iid"], name: "index_deployments_on_project_id_and_iid", unique: true - t.index ["project_id", "ref"], name: "index_deployments_on_project_id_and_ref" - 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" - t.index ["project_id", "updated_at", "id"], name: "index_deployments_on_project_id_and_updated_at_and_id", order: { updated_at: :desc, id: :desc } - t.index ["project_id"], name: "partial_index_deployments_for_project_id_and_tag", where: "(tag IS TRUE)" - t.index ["user_id", "status", "created_at"], name: "index_deployments_on_user_id_and_status_and_created_at" - end - - 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.datetime_with_timezone "deleted_at" - 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 - - create_table "design_management_designs", force: :cascade do |t| - t.integer "project_id", null: false - t.integer "issue_id" - t.string "filename", null: false - 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" - end - - create_table "design_management_designs_versions", force: :cascade do |t| - t.bigint "design_id", null: false - t.bigint "version_id", null: false - t.integer "event", limit: 2, default: 0, null: false - t.string "image_v432x230", limit: 255 - 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" - t.index ["event"], name: "index_design_management_designs_versions_on_event" - t.index ["version_id"], name: "index_design_management_designs_versions_on_version_id" - end - - create_table "design_management_versions", force: :cascade do |t| - t.binary "sha", null: false - t.bigint "issue_id" - t.datetime_with_timezone "created_at", null: false - t.integer "author_id" - t.index ["author_id"], name: "index_design_management_versions_on_author_id", where: "(author_id IS NOT NULL)" - 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 - end - - 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 - - create_table "draft_notes", force: :cascade do |t| - 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" - t.binary "commit_id" - 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" - end - - 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" - t.index ["created_at"], name: "index_elasticsearch_indexed_namespaces_on_created_at" - t.index ["namespace_id"], name: "index_elasticsearch_indexed_namespaces_on_namespace_id", unique: true - 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" - t.index ["project_id"], name: "index_elasticsearch_indexed_projects_on_project_id", unique: true - end - - create_table "emails", id: :serial, force: :cascade do |t| - t.integer "user_id", null: false - t.string "email", null: false - t.datetime "created_at" - t.datetime "updated_at" - t.string "confirmation_token" - t.datetime "confirmed_at" - t.datetime "confirmation_sent_at" - 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" - end - - create_table "environments", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.string "name", null: false - t.datetime "created_at" - t.datetime "updated_at" - t.string "external_url" - t.string "environment_type" - t.string "state", default: "available", null: false - t.string "slug", null: false - t.datetime_with_timezone "auto_stop_at" - t.index ["auto_stop_at"], name: "index_environments_on_auto_stop_at", where: "(auto_stop_at IS NOT NULL)" - 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 - t.index ["project_id", "state", "environment_type"], name: "index_environments_on_project_id_state_environment_type" - t.index ["state", "auto_stop_at"], name: "index_environments_on_state_and_auto_stop_at", where: "((auto_stop_at IS NOT NULL) AND ((state)::text = 'available'::text))" - end - - create_table "epic_issues", id: :serial, force: :cascade do |t| - t.integer "epic_id", null: false - t.integer "issue_id", null: false - t.integer "relative_position" - t.index ["epic_id"], name: "index_epic_issues_on_epic_id" - t.index ["issue_id"], name: "index_epic_issues_on_issue_id", unique: true - end - - create_table "epic_metrics", id: :serial, force: :cascade do |t| - t.integer "epic_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["epic_id"], name: "index_epic_metrics" - end - - 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 - - create_table "epics", id: :serial, force: :cascade do |t| - 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", default: 0 - t.date "start_date" - t.date "end_date" - t.datetime "last_edited_at" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.string "title", null: false - t.string "title_html", null: false - t.text "description" - t.text "description_html" - t.integer "start_date_sourcing_milestone_id" - t.integer "due_date_sourcing_milestone_id" - t.date "start_date_fixed" - t.date "due_date_fixed" - t.boolean "start_date_is_fixed" - t.boolean "due_date_is_fixed" - t.integer "closed_by_id" - t.datetime "closed_at" - t.integer "parent_id" - t.integer "relative_position" - t.integer "state_id", limit: 2, default: 1, null: false - t.integer "start_date_sourcing_epic_id" - t.integer "due_date_sourcing_epic_id" - t.integer "health_status", limit: 2 - t.string "external_key", limit: 255 - t.index "group_id, ((iid)::character varying) varchar_pattern_ops", name: "index_epics_on_group_id_and_iid_varchar_pattern" - 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" - 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)" - t.index ["due_date_sourcing_milestone_id"], name: "index_epics_on_due_date_sourcing_milestone_id" - t.index ["end_date"], name: "index_epics_on_end_date" - t.index ["group_id", "external_key"], name: "index_epics_on_group_id_and_external_key", unique: true, where: "(external_key IS NOT NULL)" - t.index ["group_id"], name: "index_epics_on_group_id" - t.index ["iid"], name: "index_epics_on_iid" - t.index ["lock_version"], name: "index_epics_on_lock_version", where: "(lock_version IS NULL)" - t.index ["parent_id"], name: "index_epics_on_parent_id" - t.index ["start_date"], name: "index_epics_on_start_date" - 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)" - t.index ["start_date_sourcing_milestone_id"], name: "index_epics_on_start_date_sourcing_milestone_id" - end - - create_table "events", id: :serial, force: :cascade do |t| - t.integer "project_id" - t.integer "author_id", null: false - t.integer "target_id" - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.integer "action", limit: 2, null: false - t.string "target_type" - t.bigint "group_id" - t.index ["action"], name: "index_events_on_action" - t.index ["author_id", "created_at"], name: "index_events_on_author_id_and_created_at" - 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" - t.index ["group_id"], name: "index_events_on_group_id_partial", where: "(group_id IS NOT NULL)" - 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" - end - - 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 - - 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 - - create_table "feature_gates", id: :serial, force: :cascade do |t| - t.string "feature_key", null: false - t.string "key", null: false - t.string "value" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["feature_key", "key", "value"], name: "index_feature_gates_on_feature_key_and_key_and_value", unique: true - end - - create_table "features", id: :serial, force: :cascade do |t| - t.string "key", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index ["key"], name: "index_features_on_key", unique: true - end - - create_table "fork_network_members", id: :serial, force: :cascade do |t| - t.integer "fork_network_id", null: false - t.integer "project_id", null: false - t.integer "forked_from_project_id" - 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 - end - - create_table "fork_networks", id: :serial, force: :cascade do |t| - t.integer "root_project_id" - t.string "deleted_root_project_name" - t.index ["root_project_id"], name: "index_fork_networks_on_root_project_id", unique: true - end - - create_table "geo_cache_invalidation_events", force: :cascade do |t| - t.string "key", null: false - end - - 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 - - create_table "geo_event_log", force: :cascade do |t| - t.datetime "created_at", null: false - 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" - t.bigint "container_repository_updated_event_id" - t.integer "geo_event_id" - t.index ["cache_invalidation_event_id"], name: "index_geo_event_log_on_cache_invalidation_event_id", where: "(cache_invalidation_event_id IS NOT NULL)" - t.index ["container_repository_updated_event_id"], name: "index_geo_event_log_on_container_repository_updated_event_id" - t.index ["geo_event_id"], name: "index_geo_event_log_on_geo_event_id", where: "(geo_event_id IS NOT NULL)" - 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)" - end - - create_table "geo_events", force: :cascade do |t| - t.string "replicable_name", limit: 255, null: false - t.string "event_name", limit: 255, null: false - t.jsonb "payload", default: {}, null: false - t.datetime_with_timezone "created_at", null: false - end - - create_table "geo_hashed_storage_attachments_events", force: :cascade do |t| - t.integer "project_id", null: false - t.text "old_attachments_path", null: false - t.text "new_attachments_path", null: false - t.index ["project_id"], name: "index_geo_hashed_storage_attachments_events_on_project_id" - end - - create_table "geo_hashed_storage_migrated_events", force: :cascade do |t| - t.integer "project_id", null: false - t.text "repository_storage_name", null: false - t.text "old_disk_path", null: false - t.text "new_disk_path", null: false - t.text "old_wiki_disk_path", null: false - t.text "new_wiki_disk_path", null: false - t.integer "old_storage_version", limit: 2 - t.integer "new_storage_version", limit: 2, null: false - t.text "old_design_disk_path" - t.text "new_design_disk_path" - t.index ["project_id"], name: "index_geo_hashed_storage_migrated_events_on_project_id" - end - - create_table "geo_job_artifact_deleted_events", force: :cascade do |t| - t.integer "job_artifact_id", null: false - t.string "file_path", null: false - t.index ["job_artifact_id"], name: "index_geo_job_artifact_deleted_events_on_job_artifact_id" - end - - create_table "geo_lfs_object_deleted_events", force: :cascade do |t| - t.integer "lfs_object_id", null: false - t.string "oid", null: false - t.string "file_path", null: false - t.index ["lfs_object_id"], name: "index_geo_lfs_object_deleted_events_on_lfs_object_id" - end - - create_table "geo_node_namespace_links", id: :serial, force: :cascade do |t| - t.integer "geo_node_id", null: false - t.integer "namespace_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - 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" - end - - create_table "geo_node_statuses", id: :serial, force: :cascade do |t| - t.integer "geo_node_id", null: false - t.integer "db_replication_lag_seconds" - t.integer "repositories_synced_count" - t.integer "repositories_failed_count" - t.integer "lfs_objects_count" - t.integer "lfs_objects_synced_count" - t.integer "lfs_objects_failed_count" - t.integer "attachments_count" - t.integer "attachments_synced_count" - t.integer "attachments_failed_count" - t.integer "last_event_id" - t.datetime "last_event_date" - t.integer "cursor_last_event_id" - 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" - t.string "status_message" - t.integer "replication_slots_count" - t.integer "replication_slots_used_count" - t.bigint "replication_slots_max_retained_wal_bytes" - t.integer "wikis_synced_count" - t.integer "wikis_failed_count" - t.integer "job_artifacts_count" - t.integer "job_artifacts_synced_count" - t.integer "job_artifacts_failed_count" - t.string "version" - t.string "revision" - t.integer "repositories_verified_count" - t.integer "repositories_verification_failed_count" - t.integer "wikis_verified_count" - t.integer "wikis_verification_failed_count" - 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" - 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" - t.binary "storage_configuration_digest" - t.integer "repositories_retrying_verification_count" - t.integer "wikis_retrying_verification_count" - t.integer "projects_count" - t.integer "container_repositories_count" - t.integer "container_repositories_synced_count" - t.integer "container_repositories_failed_count" - t.integer "container_repositories_registry_count" - t.integer "design_repositories_count" - t.integer "design_repositories_synced_count" - t.integer "design_repositories_failed_count" - t.integer "design_repositories_registry_count" - t.index ["geo_node_id"], name: "index_geo_node_statuses_on_geo_node_id", unique: true - end - - create_table "geo_nodes", id: :serial, force: :cascade do |t| - t.boolean "primary", default: false, null: false - t.integer "oauth_application_id" - t.boolean "enabled", default: true, null: false - t.string "access_key" - t.string "encrypted_secret_access_key" - t.string "encrypted_secret_access_key_iv" - t.string "clone_url_prefix" - t.integer "files_max_capacity", default: 10, null: false - t.integer "repos_max_capacity", default: 25, null: false - t.string "url", null: false - t.string "selective_sync_type" - t.text "selective_sync_shards" - t.integer "verification_max_capacity", default: 100, null: false - t.integer "minimum_reverification_interval", default: 7, null: false - t.string "internal_url" - t.string "name", null: false - t.integer "container_repositories_max_capacity", default: 10, null: false - t.datetime_with_timezone "created_at" - t.datetime_with_timezone "updated_at" - t.boolean "sync_object_storage", default: false, null: false - 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" - end - - create_table "geo_repositories_changed_events", force: :cascade do |t| - t.integer "geo_node_id", null: false - t.index ["geo_node_id"], name: "index_geo_repositories_changed_events_on_geo_node_id" - end - - create_table "geo_repository_created_events", force: :cascade do |t| - t.integer "project_id", null: false - t.text "repository_storage_name", null: false - t.text "repo_path", null: false - t.text "wiki_path" - t.text "project_name", null: false - t.index ["project_id"], name: "index_geo_repository_created_events_on_project_id" - end - - create_table "geo_repository_deleted_events", force: :cascade do |t| - t.integer "project_id", null: false - t.text "repository_storage_name", null: false - t.text "deleted_path", null: false - t.text "deleted_wiki_path" - t.text "deleted_project_name", null: false - t.index ["project_id"], name: "index_geo_repository_deleted_events_on_project_id" - end - - create_table "geo_repository_renamed_events", force: :cascade do |t| - t.integer "project_id", null: false - t.text "repository_storage_name", null: false - t.text "old_path_with_namespace", null: false - t.text "new_path_with_namespace", null: false - t.text "old_wiki_path_with_namespace", null: false - t.text "new_wiki_path_with_namespace", null: false - t.text "old_path", null: false - t.text "new_path", null: false - t.index ["project_id"], name: "index_geo_repository_renamed_events_on_project_id" - end - - create_table "geo_repository_updated_events", force: :cascade do |t| - t.integer "branches_affected", null: false - t.integer "tags_affected", null: false - t.integer "project_id", null: false - t.integer "source", limit: 2, null: false - t.boolean "new_branch", default: false, null: false - t.boolean "remove_branch", default: false, null: false - t.text "ref" - t.index ["project_id"], name: "index_geo_repository_updated_events_on_project_id" - t.index ["source"], name: "index_geo_repository_updated_events_on_source" - end - - create_table "geo_reset_checksum_events", force: :cascade do |t| - t.integer "project_id", null: false - t.index ["project_id"], name: "index_geo_reset_checksum_events_on_project_id" - end - - create_table "geo_upload_deleted_events", force: :cascade do |t| - t.integer "upload_id", null: false - t.string "file_path", null: false - t.integer "model_id", null: false - t.string "model_type", null: false - t.string "uploader", null: false - t.index ["upload_id"], name: "index_geo_upload_deleted_events_on_upload_id" - end - - 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" - t.date "trial_starts_on" - t.boolean "auto_renew" - t.index ["gitlab_subscription_id"], name: "index_gitlab_subscription_histories_on_gitlab_subscription_id" - end - - create_table "gitlab_subscriptions", force: :cascade do |t| - 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 - t.date "trial_starts_on" - t.boolean "auto_renew" - 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 - end - - create_table "gpg_key_subkeys", id: :serial, force: :cascade do |t| - t.integer "gpg_key_id", null: false - t.binary "keyid" - t.binary "fingerprint" - 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 - end - - create_table "gpg_keys", id: :serial, force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.integer "user_id" - t.binary "primary_keyid" - t.binary "fingerprint" - t.text "key" - 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" - end - - create_table "gpg_signatures", id: :serial, force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.integer "project_id" - t.integer "gpg_key_id" - t.binary "commit_sha" - t.binary "gpg_key_primary_keyid" - t.text "gpg_key_user_name" - t.text "gpg_key_user_email" - t.integer "verification_status", limit: 2, default: 0, null: false - t.integer "gpg_key_subkey_id" - 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" - end - - 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 - t.boolean "enabled", default: false, null: false - t.index ["enabled"], name: "index_grafana_integrations_on_enabled", where: "(enabled IS TRUE)" - t.index ["project_id"], name: "index_grafana_integrations_on_project_id" - end - - create_table "group_custom_attributes", id: :serial, 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 "key", null: false - t.string "value", null: false - 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" - end - - 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 - - create_table "group_deploy_tokens", force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.bigint "group_id", null: false - t.bigint "deploy_token_id", null: false - t.index ["deploy_token_id"], name: "index_group_deploy_tokens_on_deploy_token_id" - t.index ["group_id", "deploy_token_id"], name: "index_group_deploy_tokens_on_group_and_deploy_token_ids", unique: true - end - - 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 - - create_table "historical_data", id: :serial, force: :cascade do |t| - t.date "date", null: false - t.integer "active_user_count" - t.datetime "created_at" - t.datetime "updated_at" - end - - create_table "identities", id: :serial, force: :cascade do |t| - t.string "extern_uid" - t.string "provider" - t.integer "user_id" - t.datetime "created_at" - t.datetime "updated_at" - t.string "secondary_extern_uid" - t.integer "saml_provider_id" - t.index "lower((extern_uid)::text), provider", name: "index_on_identities_lower_extern_uid_and_provider" - 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" - end - - create_table "import_export_uploads", id: :serial, force: :cascade do |t| - t.datetime_with_timezone "updated_at", null: false - t.integer "project_id" - t.text "import_file" - t.text "export_file" - t.bigint "group_id" - t.index ["group_id"], name: "index_import_export_uploads_on_group_id", unique: true, where: "(group_id IS NOT NULL)" - t.index ["project_id"], name: "index_import_export_uploads_on_project_id" - t.index ["updated_at"], name: "index_import_export_uploads_on_updated_at" - end - - create_table "import_failures", force: :cascade do |t| - t.integer "relation_index" - t.bigint "project_id" - 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.integer "retry_count" - t.integer "group_id" - t.string "source", limit: 128 - t.index ["correlation_id_value"], name: "index_import_failures_on_correlation_id_value" - t.index ["group_id"], name: "index_import_failures_on_group_id_not_null", where: "(group_id IS NOT NULL)" - t.index ["project_id"], name: "index_import_failures_on_project_id_not_null", where: "(project_id IS NOT NULL)" - end - - create_table "index_statuses", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.datetime "indexed_at" - t.text "note" - t.string "last_commit" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.binary "last_wiki_commit" - t.datetime_with_timezone "wiki_indexed_at" - t.index ["project_id"], name: "index_index_statuses_on_project_id", unique: true - end - - create_table "insights", id: :serial, force: :cascade do |t| - t.integer "namespace_id", null: false - t.integer "project_id", null: false - t.index ["namespace_id"], name: "index_insights_on_namespace_id" - t.index ["project_id"], name: "index_insights_on_project_id" - end - - create_table "internal_ids", force: :cascade do |t| - t.integer "project_id" - t.integer "usage", null: false - t.integer "last_value", null: false - t.integer "namespace_id" - 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)" - end - - create_table "ip_restrictions", force: :cascade do |t| - t.integer "group_id", null: false - t.string "range", null: false - t.index ["group_id"], name: "index_ip_restrictions_on_group_id" - end - - create_table "issue_assignees", id: false, force: :cascade do |t| - t.integer "user_id", null: false - t.integer "issue_id", null: false - 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" - end - - create_table "issue_links", id: :serial, force: :cascade do |t| - t.integer "source_id", null: false - t.integer "target_id", null: false - t.datetime "created_at" - t.datetime "updated_at" - t.integer "link_type", limit: 2, default: 0, null: false - 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" - end - - create_table "issue_metrics", id: :serial, force: :cascade do |t| - t.integer "issue_id", null: false - t.datetime "first_mentioned_in_commit_at" - t.datetime "first_associated_with_milestone_at" - t.datetime "first_added_to_board_at" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - 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" - t.index ["issue_id"], name: "index_issue_metrics" - end - - 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" - t.index ["service_id"], name: "index_issue_tracker_data_on_service_id" - end - - 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 - - create_table "issues", id: :serial, force: :cascade do |t| - t.string "title" - t.integer "author_id" - t.integer "project_id" - t.datetime "created_at" - t.datetime "updated_at" - t.text "description" - t.integer "milestone_id" - t.integer "iid" - t.integer "updated_by_id" - t.integer "weight" - t.boolean "confidential", default: false, null: false - t.date "due_date" - t.integer "moved_to_id" - t.integer "lock_version", default: 0 - t.text "title_html" - t.text "description_html" - t.integer "time_estimate" - t.integer "relative_position" - t.string "service_desk_reply_to" - t.integer "cached_markdown_version" - t.datetime "last_edited_at" - t.integer "last_edited_by_id" - t.boolean "discussion_locked" - t.datetime_with_timezone "closed_at" - t.integer "closed_by_id" - t.integer "state_id", limit: 2, default: 1, null: false - t.integer "duplicated_to_id" - t.integer "promoted_to_epic_id" - t.integer "health_status", limit: 2 - t.string "external_key", limit: 255 - t.index ["author_id", "id", "created_at"], name: "index_issues_on_author_id_and_id_and_created_at" - 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 - t.index ["duplicated_to_id"], name: "index_issues_on_duplicated_to_id", where: "(duplicated_to_id IS NOT NULL)" - t.index ["lock_version"], name: "index_issues_on_lock_version", where: "(lock_version IS NULL)" - 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_id"], name: "idx_issues_on_project_id_and_created_at_and_id_and_state_id" - 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)" - t.index ["project_id", "external_key"], name: "index_issues_on_project_id_and_external_key", unique: true, where: "(external_key IS NOT NULL)" - t.index ["project_id", "iid"], name: "index_issues_on_project_id_and_iid", unique: true - 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 } - t.index ["project_id", "updated_at", "id", "state_id"], name: "idx_issues_on_project_id_and_updated_at_and_id_and_state_id" - t.index ["promoted_to_epic_id"], name: "index_issues_on_promoted_to_epic_id", where: "(promoted_to_epic_id IS NOT NULL)" - t.index ["relative_position"], name: "index_issues_on_relative_position" - t.index ["state_id"], name: "idx_issues_on_state_id" - 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)" - end - - 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 - - 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 - - create_table "jira_connect_installations", force: :cascade do |t| - t.string "client_key" - t.string "encrypted_shared_secret" - t.string "encrypted_shared_secret_iv" - t.string "base_url" - t.index ["client_key"], name: "index_jira_connect_installations_on_client_key", unique: true - end - - 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 - 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" - end - - 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" - t.index ["service_id"], name: "index_jira_tracker_data_on_service_id" - end - - create_table "keys", id: :serial, force: :cascade do |t| - t.integer "user_id" - t.datetime "created_at" - t.datetime "updated_at" - t.text "key" - t.string "title" - t.string "type" - t.string "fingerprint" - t.boolean "public", default: false, null: false - t.datetime "last_used_at" - t.binary "fingerprint_sha256" - t.datetime_with_timezone "expires_at" - t.index ["fingerprint"], name: "index_keys_on_fingerprint", unique: true - t.index ["fingerprint_sha256"], name: "index_keys_on_fingerprint_sha256" - t.index ["id", "type"], name: "index_on_deploy_keys_id_and_type_and_public", unique: true, where: "(public = true)" - t.index ["id"], name: "index_keys_on_id_and_ldap_key_type", where: "((type)::text = 'LDAPKey'::text)" - t.index ["last_used_at"], name: "index_keys_on_last_used_at", order: "DESC NULLS LAST" - t.index ["user_id"], name: "index_keys_on_user_id" - end - - create_table "label_links", id: :serial, force: :cascade do |t| - t.integer "label_id" - t.integer "target_id" - t.string "target_type" - t.datetime "created_at" - t.datetime "updated_at" - 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" - end - - create_table "label_priorities", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.integer "label_id", null: false - t.integer "priority", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - 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 - end - - create_table "labels", id: :serial, force: :cascade do |t| - t.string "title" - t.string "color" - t.integer "project_id" - t.datetime "created_at" - t.datetime "updated_at" - t.boolean "template", default: false - t.string "description" - t.text "description_html" - t.string "type" - t.integer "group_id" - t.integer "cached_markdown_version" - t.index ["group_id", "project_id", "title"], name: "index_labels_on_group_id_and_project_id_and_title", unique: true - 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)" - 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" - end - - create_table "ldap_group_links", id: :serial, force: :cascade do |t| - t.string "cn" - t.integer "group_access", null: false - t.integer "group_id", null: false - t.datetime "created_at" - t.datetime "updated_at" - t.string "provider" - t.string "filter" - end - - create_table "lfs_file_locks", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.integer "user_id", null: false - t.datetime "created_at", null: false - t.string "path", limit: 511 - 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" - end - - create_table "lfs_objects", id: :serial, force: :cascade do |t| - t.string "oid", null: false - t.bigint "size", null: false - t.datetime "created_at" - t.datetime "updated_at" - t.string "file" - t.integer "file_store" - t.index ["file_store"], name: "index_lfs_objects_on_file_store" - t.index ["oid"], name: "index_lfs_objects_on_oid", unique: true - end - - create_table "lfs_objects_projects", id: :serial, force: :cascade do |t| - t.integer "lfs_object_id", null: false - t.integer "project_id", null: false - t.datetime "created_at" - t.datetime "updated_at" - t.integer "repository_type", limit: 2 - t.index ["lfs_object_id"], name: "index_lfs_objects_projects_on_lfs_object_id" - t.index ["project_id", "lfs_object_id"], name: "index_lfs_objects_projects_on_project_id_and_lfs_object_id" - end - - create_table "licenses", id: :serial, force: :cascade do |t| - t.text "data", null: false - t.datetime "created_at" - t.datetime "updated_at" - end - - 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 - - create_table "lists", id: :serial, force: :cascade do |t| - 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 - t.integer "user_id" - t.integer "milestone_id" - t.integer "max_issue_count", default: 0, null: false - t.integer "max_issue_weight", default: 0, null: false - t.string "limit_metric", limit: 20 - 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" - end - - create_table "members", id: :serial, force: :cascade do |t| - 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" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "created_by_id" - t.string "invite_email" - t.string "invite_token" - t.datetime "invite_accepted_at" - t.datetime "requested_at" - t.date "expires_at" - t.boolean "ldap", default: false, null: false - t.boolean "override", default: false, null: false - t.index ["access_level"], name: "index_members_on_access_level" - t.index ["expires_at"], name: "index_members_on_expires_at" - 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", "created_at"], name: "index_members_on_user_id_created_at", where: "((ldap = true) AND ((type)::text = 'GroupMember'::text) AND ((source_type)::text = 'Namespace'::text))" - t.index ["user_id"], name: "index_members_on_user_id" - end - - create_table "merge_request_assignees", force: :cascade do |t| - t.integer "user_id", null: false - t.integer "merge_request_id", null: false - t.datetime_with_timezone "created_at" - 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" - end - - 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 - 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 - end - - create_table "merge_request_context_commit_diff_files", id: false, force: :cascade do |t| - t.binary "sha", 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", limit: 255, null: false - t.string "b_mode", limit: 255, null: false - t.text "new_path", null: false - t.text "old_path", null: false - t.text "diff" - t.boolean "binary" - t.bigint "merge_request_context_commit_id" - t.index ["merge_request_context_commit_id", "sha"], name: "idx_mr_cc_diff_files_on_mr_cc_id_and_sha" - end - - create_table "merge_request_context_commits", force: :cascade do |t| - t.datetime_with_timezone "authored_date" - t.datetime_with_timezone "committed_date" - 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" - t.bigint "merge_request_id" - t.index ["merge_request_id", "sha"], name: "index_mr_context_commits_on_merge_request_id_and_sha", unique: true - end - - create_table "merge_request_diff_commits", id: false, force: :cascade do |t| - t.datetime "authored_date" - t.datetime "committed_date" - 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" - 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" - end - - create_table "merge_request_diff_files", id: false, force: :cascade do |t| - t.integer "merge_request_diff_id", null: false - t.integer "relative_order", null: false - t.boolean "new_file", null: false - t.boolean "renamed_file", null: false - t.boolean "deleted_file", null: false - t.boolean "too_large", null: false - t.string "a_mode", null: false - t.string "b_mode", null: false - t.text "new_path", null: false - t.text "old_path", null: false - t.text "diff" - t.boolean "binary" - t.integer "external_diff_offset" - t.integer "external_diff_size" - t.index ["merge_request_diff_id", "relative_order"], name: "index_merge_request_diff_files_on_mr_diff_id_and_order", unique: true - end - - create_table "merge_request_diffs", id: :serial, force: :cascade do |t| - t.string "state" - t.integer "merge_request_id", null: false - t.datetime "created_at" - t.datetime "updated_at" - t.string "base_commit_sha" - t.string "real_size" - t.string "head_commit_sha" - t.string "start_commit_sha" - t.integer "commits_count" - t.string "external_diff" - t.integer "external_diff_store" - t.boolean "stored_externally" - 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))" - end - - create_table "merge_request_metrics", id: :serial, force: :cascade do |t| - t.integer "merge_request_id", null: false - t.datetime "latest_build_started_at" - t.datetime "latest_build_finished_at" - t.datetime "first_deployed_to_production_at" - t.datetime "merged_at" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "pipeline_id" - t.integer "merged_by_id" - t.integer "latest_closed_by_id" - t.datetime_with_timezone "latest_closed_at" - 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" - t.datetime_with_timezone "first_approved_at" - t.datetime_with_timezone "first_reassigned_at" - 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" - t.index ["merged_at"], name: "index_merge_request_metrics_on_merged_at" - 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" - end - - 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 - - create_table "merge_requests", id: :serial, force: :cascade do |t| - t.string "target_branch", null: false - t.string "source_branch", null: false - t.integer "source_project_id" - t.integer "author_id" - t.integer "assignee_id" - t.string "title" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "milestone_id" - t.string "merge_status", default: "unchecked", null: false - 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" - t.boolean "merge_when_pipeline_succeeds", default: false, null: false - 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", default: 0 - t.text "title_html" - t.text "description_html" - t.integer "time_estimate" - t.boolean "squash", default: false, null: false - t.integer "cached_markdown_version" - t.datetime "last_edited_at" - t.integer "last_edited_by_id" - t.integer "head_pipeline_id" - t.string "merge_jid" - t.boolean "discussion_locked" - t.integer "latest_merge_request_diff_id" - t.boolean "allow_maintainer_to_push" - t.integer "state_id", limit: 2, default: 1, null: false - t.string "rebase_jid" - t.binary "squash_commit_sha" - 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" - t.index ["id", "merge_jid"], name: "idx_merge_requests_on_id_and_merge_jid", where: "((merge_jid IS NOT NULL) AND (state_id = 4))" - t.index ["id"], name: "merge_request_mentions_temp_index", where: "((description ~~ '%@%'::text) OR ((title)::text ~~ '%@%'::text))" - t.index ["latest_merge_request_diff_id"], name: "index_merge_requests_on_latest_merge_request_diff_id" - t.index ["lock_version"], name: "index_merge_requests_on_lock_version", where: "(lock_version IS NULL)" - 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" - t.index ["source_project_id", "source_branch"], name: "idx_merge_requests_on_source_project_and_branch_state_opened", where: "(state_id = 1)" - t.index ["source_project_id", "source_branch"], name: "index_merge_requests_on_source_project_id_and_source_branch" - 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))" - t.index ["target_branch"], name: "index_merge_requests_on_target_branch" - t.index ["target_project_id", "created_at"], name: "index_merge_requests_target_project_id_created_at" - t.index ["target_project_id", "iid"], name: "idx_merge_requests_on_target_project_id_and_iid_opened", where: "(state_id = 1)" - t.index ["target_project_id", "iid"], name: "index_merge_requests_on_target_project_id_and_iid", unique: true - t.index ["target_project_id", "merge_commit_sha", "id"], name: "index_merge_requests_on_tp_id_and_merge_commit_sha_and_id" - 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))" - 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)" - end - - create_table "merge_requests_closing_issues", id: :serial, force: :cascade do |t| - 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 - 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" - end - - 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 - t.integer "target_project_id", null: false - t.text "target_branch", null: false - t.integer "status", limit: 2, default: 0, null: false - t.datetime_with_timezone "merged_at" - t.integer "duration" - 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" - t.index ["target_project_id", "target_branch", "status"], name: "index_for_status_per_branch_per_project" - t.index ["user_id"], name: "index_merge_trains_on_user_id" - end - - create_table "milestone_releases", id: false, force: :cascade do |t| - 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 - - create_table "milestones", id: :serial, force: :cascade do |t| - t.string "title", null: false - t.integer "project_id" - t.text "description" - t.date "due_date" - t.datetime "created_at" - t.datetime "updated_at" - t.string "state" - t.integer "iid" - t.text "title_html" - t.text "description_html" - t.date "start_date" - t.integer "cached_markdown_version" - t.integer "group_id" - 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 - end - - create_table "namespace_aggregation_schedules", primary_key: "namespace_id", id: :integer, default: nil, force: :cascade do |t| - t.index ["namespace_id"], name: "index_namespace_aggregation_schedules_on_namespace_id", unique: true - 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 - t.index ["namespace_id"], name: "index_namespace_root_storage_statistics_on_namespace_id", unique: true - end - - create_table "namespace_statistics", id: :serial, force: :cascade do |t| - t.integer "namespace_id", null: false - t.integer "shared_runners_seconds", default: 0, null: false - t.datetime "shared_runners_seconds_last_reset" - t.index ["namespace_id"], name: "index_namespace_statistics_on_namespace_id", unique: true - end - - create_table "namespaces", id: :serial, force: :cascade do |t| - t.string "name", null: false - t.string "path", null: false - t.integer "owner_id" - t.datetime "created_at" - t.datetime "updated_at" - 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 - t.boolean "request_access_enabled", default: true, null: false - t.string "ldap_sync_status", default: "ready", null: false - t.string "ldap_sync_error" - t.datetime "ldap_sync_last_update_at" - t.datetime "ldap_sync_last_successful_update_at" - t.datetime "ldap_sync_last_sync_at" - t.text "description_html" - t.boolean "lfs_enabled" - t.integer "parent_id" - t.integer "shared_runners_minutes_limit" - t.bigint "repository_size_limit" - t.boolean "require_two_factor_authentication", default: false, null: false - t.integer "two_factor_grace_period", default: 48, null: false - t.integer "cached_markdown_version" - t.integer "plan_id" - t.integer "project_creation_level" - t.string "runners_token" - t.datetime_with_timezone "trial_ends_on" - t.integer "file_template_project_id" - t.string "saml_discovery_token" - t.string "runners_token_encrypted" - t.integer "custom_project_templates_group_id" - t.boolean "auto_devops_enabled" - t.integer "extra_shared_runners_minutes_limit" - t.datetime_with_timezone "last_ci_minutes_notification_at" - t.integer "last_ci_minutes_usage_notification_level" - t.integer "subgroup_creation_level", default: 1 - t.boolean "emails_disabled" - t.integer "max_pages_size" - t.integer "max_artifacts_size" - t.boolean "mentions_disabled" - t.integer "default_branch_protection", limit: 2 - t.boolean "unlock_membership_to_ldap" - 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)" - t.index ["type"], name: "index_namespaces_on_type_partial", where: "(type IS NOT NULL)" - end - - create_table "note_diff_files", id: :serial, force: :cascade do |t| - t.integer "diff_note_id", null: false - t.text "diff", null: false - t.boolean "new_file", null: false - t.boolean "renamed_file", null: false - t.boolean "deleted_file", null: false - t.string "a_mode", null: false - t.string "b_mode", null: false - t.text "new_path", null: false - t.text "old_path", null: false - t.index ["diff_note_id"], name: "index_note_diff_files_on_diff_note_id", unique: true - end - - create_table "notes", id: :serial, force: :cascade do |t| - t.text "note" - t.string "noteable_type" - t.integer "author_id" - t.datetime "created_at" - t.datetime "updated_at" - 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" - t.datetime "resolved_at" - t.integer "resolved_by_id" - t.string "discussion_id" - t.text "note_html" - t.integer "cached_markdown_version" - t.text "change_position" - t.boolean "resolved_by_push" - t.bigint "review_id" - t.boolean "confidential" - t.index ["author_id", "created_at"], name: "index_notes_on_author_id_and_created_at" - 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 ["id", "noteable_type"], name: "note_mentions_temp_index", where: "(note ~~ '%@%'::text)" - 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" - t.index ["project_id", "id"], name: "index_notes_on_project_id_and_id_and_system_false", where: "(NOT system)" - 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" - end - - create_table "notification_settings", id: :serial, force: :cascade do |t| - 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 - 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" - t.boolean "push_to_merge_request" - t.boolean "issue_due" - t.boolean "new_epic" - t.string "notification_email" - t.boolean "fixed_pipeline" - t.boolean "new_release" - 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" - end - - create_table "oauth_access_grants", id: :serial, force: :cascade do |t| - 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 - t.datetime "revoked_at" - t.string "scopes" - t.index ["token"], name: "index_oauth_access_grants_on_token", unique: true - end - - create_table "oauth_access_tokens", id: :serial, force: :cascade do |t| - t.integer "resource_owner_id" - t.integer "application_id" - t.string "token", null: false - t.string "refresh_token" - t.integer "expires_in" - t.datetime "revoked_at" - t.datetime "created_at", null: false - t.string "scopes" - t.index ["application_id"], name: "index_oauth_access_tokens_on_application_id" - 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 - end - - create_table "oauth_applications", id: :serial, force: :cascade do |t| - 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 - t.datetime "created_at" - t.datetime "updated_at" - t.integer "owner_id" - t.string "owner_type" - t.boolean "trusted", default: false, null: false - t.boolean "confidential", default: true, null: false - 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 - end - - create_table "oauth_openid_requests", id: :serial, force: :cascade do |t| - t.integer "access_grant_id", null: false - t.string "nonce", null: false - t.index ["access_grant_id"], name: "index_oauth_openid_requests_on_access_grant_id" - end - - create_table "open_project_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", limit: 255 - t.string "encrypted_url_iv", limit: 255 - t.string "encrypted_api_url", limit: 255 - t.string "encrypted_api_url_iv", limit: 255 - t.string "encrypted_token", limit: 255 - t.string "encrypted_token_iv", limit: 255 - t.string "closed_status_id", limit: 5 - t.string "project_identifier_code", limit: 100 - t.index ["service_id"], name: "index_open_project_tracker_data_on_service_id" - end - - create_table "operations_feature_flag_scopes", force: :cascade do |t| - 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 - t.jsonb "strategies", default: [{"name"=>"default", "parameters"=>{}}], null: false - t.index ["feature_flag_id", "environment_scope"], name: "index_feature_flag_scopes_on_flag_id_and_environment_scope", unique: true - end - - create_table "operations_feature_flags", force: :cascade do |t| - t.integer "project_id", null: false - t.boolean "active", null: false - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.string "name", null: false - t.text "description" - t.integer "iid", null: false - t.integer "version", limit: 2, default: 1, null: false - t.index ["project_id", "iid"], name: "index_operations_feature_flags_on_project_id_and_iid", unique: true - t.index ["project_id", "name"], name: "index_operations_feature_flags_on_project_id_and_name", unique: true - end - - create_table "operations_feature_flags_clients", force: :cascade do |t| - t.integer "project_id", null: false - t.string "token_encrypted" - t.index ["project_id", "token_encrypted"], name: "index_feature_flags_clients_on_project_id_and_token_encrypted", unique: true - end - - create_table "operations_scopes", force: :cascade do |t| - t.bigint "strategy_id", null: false - t.string "environment_scope", limit: 255, null: false - t.index ["strategy_id", "environment_scope"], name: "index_operations_scopes_on_strategy_id_and_environment_scope", unique: true - end - - create_table "operations_strategies", force: :cascade do |t| - t.bigint "feature_flag_id", null: false - t.string "name", limit: 255, null: false - t.jsonb "parameters", default: {}, null: false - t.index ["feature_flag_id"], name: "index_operations_strategies_on_feature_flag_id" - end - - 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 - - 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", "package_username", "package_channel"], name: "index_packages_conan_metadata_on_package_id_username_channel", unique: true - end - - 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 - - create_table "packages_maven_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 "app_group", null: false - t.string "app_name", null: false - t.string "app_version" - t.string "path", limit: 512, null: false - t.index ["package_id", "path"], name: "index_packages_maven_metadata_on_package_id_and_path" - end - - create_table "packages_package_files", 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.bigint "size" - t.integer "file_store" - t.binary "file_md5" - t.binary "file_sha1" - t.string "file_name", null: false - t.text "file", null: false - t.binary "file_sha256" - t.index ["package_id", "file_name"], name: "index_packages_package_files_on_package_id_and_file_name" - end - - create_table "packages_packages", force: :cascade do |t| - t.integer "project_id", null: false - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.string "name", null: false - t.string "version" - t.integer "package_type", limit: 2, null: false - t.index ["name"], name: "index_packages_packages_on_name_trigram", opclass: :gin_trgm_ops, using: :gin - t.index ["project_id", "created_at"], name: "index_packages_packages_on_project_id_and_created_at" - t.index ["project_id", "name", "version", "package_type"], name: "idx_packages_packages_on_project_id_name_version_package_type" - t.index ["project_id", "name"], name: "index_packages_project_id_name_partial_for_nuget", where: "(((name)::text <> 'NuGet.Temporary.Package'::text) AND (version IS NOT NULL) AND (package_type = 4))" - t.index ["project_id", "package_type"], name: "index_packages_packages_on_project_id_and_package_type" - t.index ["project_id", "version"], name: "index_packages_packages_on_project_id_and_version" - end - - 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 - - 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 - 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" - end - - create_table "pages_domains", id: :serial, force: :cascade do |t| - t.integer "project_id" - t.text "certificate" - t.text "encrypted_key" - t.string "encrypted_key_iv" - t.string "encrypted_key_salt" - t.string "domain" - t.datetime_with_timezone "verified_at" - t.string "verification_code", null: false - t.datetime_with_timezone "enabled_until" - t.datetime_with_timezone "remove_at" - t.boolean "auto_ssl_enabled", default: false, null: false - t.datetime_with_timezone "certificate_valid_not_before" - t.datetime_with_timezone "certificate_valid_not_after" - t.integer "certificate_source", limit: 2, default: 0, null: false - t.boolean "wildcard", default: false, null: false - t.integer "usage", limit: 2, default: 0, null: false - t.integer "scope", limit: 2, default: 2, null: false - t.index "lower((domain)::text)", name: "index_pages_domains_on_domain_lowercase" - t.index ["certificate_source", "certificate_valid_not_after"], name: "index_pages_domains_need_auto_ssl_renewal", where: "(auto_ssl_enabled = true)" - t.index ["domain", "wildcard"], name: "index_pages_domains_on_domain_and_wildcard", unique: true - 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 ["scope"], name: "index_pages_domains_on_scope" - t.index ["usage"], name: "index_pages_domains_on_usage" - 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" - t.index ["wildcard"], name: "index_pages_domains_on_wildcard" - end - - create_table "path_locks", id: :serial, force: :cascade do |t| - t.string "path", null: false - t.integer "project_id" - t.integer "user_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - 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" - end - - create_table "personal_access_tokens", id: :serial, force: :cascade do |t| - t.integer "user_id", null: false - t.string "name", null: false - t.boolean "revoked", default: false - t.date "expires_at" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.string "scopes", default: "--- []\n", null: false - t.boolean "impersonation", default: false, null: false - t.string "token_digest" - t.boolean "expire_notification_delivered", default: false, null: false - t.index ["token_digest"], name: "index_personal_access_tokens_on_token_digest", unique: true - t.index ["user_id", "expires_at"], name: "index_pat_on_user_id_and_expires_at" - t.index ["user_id"], name: "index_personal_access_tokens_on_user_id" - end - - 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 - t.integer "project_hooks", default: 0, null: false - t.integer "group_hooks", default: 0, null: false - t.integer "ci_project_subscriptions", default: 0, null: false - t.integer "ci_pipeline_schedules", default: 0, null: false - t.index ["plan_id"], name: "index_plan_limits_on_plan_id", unique: true - end - - create_table "plans", id: :serial, force: :cascade do |t| - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.string "name" - t.string "title" - t.index ["name"], name: "index_plans_on_name" - end - - create_table "pool_repositories", force: :cascade do |t| - t.integer "shard_id", null: false - t.string "disk_path" - t.string "state" - t.integer "source_project_id" - t.index ["disk_path"], name: "index_pool_repositories_on_disk_path", unique: true - t.index ["shard_id"], name: "index_pool_repositories_on_shard_id" - t.index ["source_project_id", "shard_id"], name: "index_pool_repositories_on_source_project_id_and_shard_id", unique: true - end - - create_table "programming_languages", id: :serial, force: :cascade do |t| - t.string "name", null: false - t.string "color", null: false - t.datetime_with_timezone "created_at", null: false - t.index ["name"], name: "index_programming_languages_on_name", unique: true - end - - create_table "project_alerting_settings", primary_key: "project_id", id: :integer, default: nil, force: :cascade do |t| - t.string "encrypted_token", null: false - t.string "encrypted_token_iv", null: false - end - - 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 - t.index ["name"], name: "index_project_aliases_on_name", unique: true - t.index ["project_id"], name: "index_project_aliases_on_project_id" - end - - create_table "project_authorizations", id: false, force: :cascade do |t| - t.integer "user_id", null: false - t.integer "project_id", null: false - t.integer "access_level", null: false - 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 - end - - create_table "project_auto_devops", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.boolean "enabled" - t.integer "deploy_strategy", default: 0, null: false - t.index ["project_id"], name: "index_project_auto_devops_on_project_id", unique: true - end - - create_table "project_ci_cd_settings", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.boolean "group_runners_enabled", default: true, null: false - t.boolean "merge_pipelines_enabled" - t.integer "default_git_depth" - t.boolean "forward_deployment_enabled" - t.index ["project_id"], name: "index_project_ci_cd_settings_on_project_id", unique: true - end - - create_table "project_custom_attributes", id: :serial, force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.integer "project_id", null: false - t.string "key", null: false - t.string "value", null: false - 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 - end - - create_table "project_daily_statistics", force: :cascade do |t| - t.integer "project_id", null: false - t.integer "fetch_count", null: false - t.date "date" - t.index ["project_id", "date"], name: "index_project_daily_statistics_on_project_id_and_date", unique: true, order: { date: :desc } - end - - create_table "project_deploy_tokens", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.integer "deploy_token_id", null: false - t.datetime_with_timezone "created_at", null: false - 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 - end - - create_table "project_error_tracking_settings", primary_key: "project_id", id: :integer, default: nil, force: :cascade do |t| - t.boolean "enabled", default: false, null: false - t.string "api_url" - t.string "encrypted_token" - t.string "encrypted_token_iv" - t.string "project_name" - t.string "organization_name" - end - - create_table "project_export_jobs", 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.integer "status", limit: 2, default: 0, null: false - t.string "jid", limit: 100, null: false - t.index ["jid"], name: "index_project_export_jobs_on_jid", unique: true - t.index ["project_id", "jid"], name: "index_project_export_jobs_on_project_id_and_jid" - t.index ["project_id", "status"], name: "index_project_export_jobs_on_project_id_and_status" - t.index ["status"], name: "index_project_export_jobs_on_status" - end - - create_table "project_feature_usages", primary_key: "project_id", id: :integer, default: nil, force: :cascade do |t| - t.datetime "jira_dvcs_cloud_last_sync_at" - t.datetime "jira_dvcs_server_last_sync_at" - 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" - end - - create_table "project_features", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.integer "merge_requests_access_level" - t.integer "issues_access_level" - t.integer "wiki_access_level" - t.integer "snippets_access_level", default: 20, null: false - t.integer "builds_access_level" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "repository_access_level", default: 20, null: false - t.integer "pages_access_level", null: false - t.integer "forking_access_level" - t.index ["project_id"], name: "index_project_features_on_project_id", unique: true - t.index ["project_id"], name: "index_project_features_on_project_id_bal_20", where: "(builds_access_level = 20)" - t.index ["project_id"], name: "index_project_features_on_project_id_ral_20", where: "(repository_access_level = 20)" - end - - create_table "project_group_links", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.integer "group_id", null: false - t.datetime "created_at" - t.datetime "updated_at" - t.integer "group_access", default: 30, null: false - t.date "expires_at" - t.index ["group_id"], name: "index_project_group_links_on_group_id" - t.index ["project_id"], name: "index_project_group_links_on_project_id" - end - - create_table "project_import_data", id: :serial, force: :cascade do |t| - t.integer "project_id" - t.text "data" - t.text "encrypted_credentials" - t.string "encrypted_credentials_iv" - t.string "encrypted_credentials_salt" - t.index ["project_id"], name: "index_project_import_data_on_project_id" - end - - create_table "project_incident_management_settings", primary_key: "project_id", id: :serial, force: :cascade do |t| - t.boolean "create_issue", default: true, null: false - t.boolean "send_email", default: false, null: false - t.text "issue_template_key" - end - - 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 - - create_table "project_mirror_data", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.integer "retry_count", default: 0, null: false - t.datetime "last_update_started_at" - t.datetime "last_update_scheduled_at" - t.datetime "next_execution_timestamp" - t.string "status" - t.string "jid" - t.text "last_error" - t.datetime_with_timezone "last_update_at" - t.datetime_with_timezone "last_successful_update_at" - 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" - end - - 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 - - create_table "project_repositories", force: :cascade do |t| - t.integer "shard_id", null: false - t.string "disk_path", null: false - t.integer "project_id", null: false - 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" - end - - create_table "project_repository_states", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.binary "repository_verification_checksum" - t.binary "wiki_verification_checksum" - t.string "last_repository_verification_failure" - t.string "last_wiki_verification_failure" - t.datetime_with_timezone "repository_retry_at" - t.datetime_with_timezone "wiki_retry_at" - t.integer "repository_retry_count" - t.integer "wiki_retry_count" - t.datetime_with_timezone "last_repository_verification_ran_at" - t.datetime_with_timezone "last_wiki_verification_ran_at" - 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 - end - - create_table "project_settings", primary_key: "project_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 - end - - create_table "project_statistics", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.integer "namespace_id", null: false - 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 - t.datetime "shared_runners_seconds_last_reset" - t.bigint "packages_size", default: 0, null: false - t.bigint "wiki_size" - t.index ["namespace_id"], name: "index_project_statistics_on_namespace_id" - t.index ["project_id"], name: "index_project_statistics_on_project_id", unique: true - end - - create_table "project_tracing_settings", force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.integer "project_id", null: false - t.string "external_url", null: false - t.index ["project_id"], name: "index_project_tracing_settings_on_project_id", unique: true - end - - create_table "projects", id: :serial, force: :cascade do |t| - t.string "name" - t.string "path" - t.text "description" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "creator_id" - t.integer "namespace_id", null: false - t.datetime "last_activity_at" - 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 - t.boolean "merge_requests_rebase_enabled", default: false - 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 - t.boolean "merge_requests_ff_only_enabled", default: false - t.text "issues_template" - t.boolean "mirror", default: false, null: false - t.datetime "mirror_last_update_at" - t.datetime "mirror_last_successful_update_at" - 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" - t.datetime "last_repository_check_at" - t.boolean "container_registry_enabled" - t.boolean "only_allow_merge_if_pipeline_succeeds", default: false, null: false - t.boolean "has_external_issue_tracker" - t.string "repository_storage", default: "default", null: false - t.boolean "repository_read_only" - t.boolean "request_access_enabled", default: true, null: false - t.boolean "has_external_wiki" - t.string "ci_config_path" - t.boolean "lfs_enabled" - t.text "description_html" - t.boolean "only_allow_merge_if_all_discussions_are_resolved" - t.bigint "repository_size_limit" - t.boolean "printing_merge_request_link_enabled", default: true, null: false - t.integer "auto_cancel_pending_pipelines", default: 1, null: false - t.boolean "service_desk_enabled", default: true - t.integer "cached_markdown_version" - t.text "delete_error" - t.datetime "last_repository_updated_at" - t.boolean "disable_overriding_approvers_per_merge_request" - t.integer "storage_version", limit: 2 - t.boolean "resolve_outdated_diff_discussions" - t.boolean "remote_mirror_available_overridden" - t.boolean "only_mirror_protected_branches" - t.boolean "pull_mirror_available_overridden" - t.integer "jobs_cache_index" - t.string "external_authorization_classification_label" - t.boolean "mirror_overwrites_diverged_branches" - t.boolean "pages_https_only", default: true - t.string "external_webhook_token" - t.boolean "packages_enabled" - t.boolean "merge_requests_author_approval" - t.bigint "pool_repository_id" - t.string "runners_token_encrypted" - t.string "bfg_object_map" - t.boolean "detected_repository_languages" - t.boolean "merge_requests_disable_committers_approval" - t.boolean "require_password_to_approve" - t.boolean "emails_disabled" - t.integer "max_pages_size" - t.integer "max_artifacts_size" - t.string "pull_mirror_branch_prefix", limit: 50 - t.boolean "remove_source_branch_after_merge" - t.date "marked_for_deletion_at" - t.integer "marked_for_deletion_by_user_id" - t.boolean "autoclose_referenced_issues" - t.string "suggestion_commit_message", limit: 255 - t.index "lower((name)::text)", name: "index_projects_on_lower_name" - t.index ["created_at", "id"], name: "index_projects_api_created_at_id_desc", order: { id: :desc } - t.index ["created_at", "id"], name: "index_projects_api_vis20_created_at", where: "(visibility_level = 20)" - t.index ["created_at", "id"], name: "index_projects_on_created_at_and_id" - t.index ["creator_id", "created_at"], name: "index_projects_on_creator_id_and_created_at" - t.index ["creator_id", "created_at"], name: "index_projects_on_mirror_creator_id_created_at", where: "((mirror = true) AND (mirror_trigger_builds = true))" - 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" - t.index ["id"], name: "index_on_id_partial_with_legacy_storage", where: "((storage_version < 2) OR (storage_version IS NULL))" - 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_id_service_desk_enabled", where: "(service_desk_enabled = true)" - t.index ["id"], name: "index_projects_on_mirror_id_where_mirror_and_trigger_builds", where: "((mirror = true) AND (mirror_trigger_builds = true))" - t.index ["last_activity_at", "id"], name: "index_projects_api_last_activity_at_id_desc", order: { id: :desc } - t.index ["last_activity_at", "id"], name: "index_projects_api_vis20_last_activity_at", where: "(visibility_level = 20)" - t.index ["last_activity_at", "id"], name: "index_projects_on_last_activity_at_and_id" - 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" - t.index ["marked_for_deletion_at"], name: "index_projects_on_marked_for_deletion_at", where: "(marked_for_deletion_at IS NOT NULL)" - 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)" - 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", "id"], name: "index_projects_api_name_id_desc", order: { id: :desc } - t.index ["name", "id"], name: "index_projects_api_vis20_name", where: "(visibility_level = 20)" - t.index ["name", "id"], name: "index_projects_on_name_and_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", "id"], name: "index_projects_api_path_id_desc", order: { id: :desc } - t.index ["path", "id"], name: "index_projects_api_vis20_path", where: "(visibility_level = 20)" - t.index ["path", "id"], name: "index_projects_on_path_and_id" - 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" - t.index ["updated_at", "id"], name: "index_projects_api_updated_at_id_desc", order: { id: :desc } - t.index ["updated_at", "id"], name: "index_projects_api_vis20_updated_at", where: "(visibility_level = 20)" - t.index ["updated_at", "id"], name: "index_projects_on_updated_at_and_id" - end - - create_table "prometheus_alert_events", force: :cascade do |t| - 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" - 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 - end - - create_table "prometheus_alerts", id: :serial, force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.float "threshold", null: false - t.integer "operator", null: false - t.integer "environment_id", null: false - t.integer "project_id", null: false - t.integer "prometheus_metric_id", null: false - 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" - end - - create_table "prometheus_metrics", id: :serial, force: :cascade do |t| - t.integer "project_id" - t.string "title", null: false - t.string "query", null: false - t.string "y_label", null: false - t.string "unit", null: false - t.string "legend" - t.integer "group", null: false - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.boolean "common", default: false, null: false - t.string "identifier" - 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" - end - - create_table "protected_branch_merge_access_levels", id: :serial, force: :cascade do |t| - t.integer "protected_branch_id", null: false - t.integer "access_level", default: 40 - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "user_id" - t.integer "group_id" - 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" - end - - create_table "protected_branch_push_access_levels", id: :serial, force: :cascade do |t| - t.integer "protected_branch_id", null: false - t.integer "access_level", default: 40 - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "user_id" - t.integer "group_id" - 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" - end - - create_table "protected_branch_unprotect_access_levels", id: :serial, force: :cascade do |t| - t.integer "protected_branch_id", null: false - t.integer "access_level", default: 40 - t.integer "user_id" - t.integer "group_id" - 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" - end - - create_table "protected_branches", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.string "name", null: false - t.datetime "created_at" - t.datetime "updated_at" - 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)" - t.index ["project_id"], name: "index_protected_branches_on_project_id" - end - - create_table "protected_environment_deploy_access_levels", id: :serial, force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.integer "access_level", default: 40 - t.integer "protected_environment_id", null: false - t.integer "user_id" - t.integer "group_id" - 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" - end - - create_table "protected_environments", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.string "name", null: false - 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" - end - - create_table "protected_tag_create_access_levels", id: :serial, force: :cascade do |t| - 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 - 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" - end - - create_table "protected_tags", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.string "name", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - 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" - end - - create_table "push_event_payloads", id: false, force: :cascade do |t| - t.bigint "commit_count", null: false - t.integer "event_id", null: false - t.integer "action", limit: 2, null: false - t.integer "ref_type", limit: 2, null: false - t.binary "commit_from" - t.binary "commit_to" - t.text "ref" - t.string "commit_title", limit: 70 - t.integer "ref_count" - t.index ["event_id"], name: "index_push_event_payloads_on_event_id", unique: true - end - - create_table "push_rules", id: :serial, force: :cascade do |t| - t.string "force_push_regex" - t.string "delete_branch_regex" - t.string "commit_message_regex" - t.boolean "deny_delete_tag" - t.integer "project_id" - t.datetime "created_at" - t.datetime "updated_at" - 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 - t.string "branch_name_regex" - t.boolean "reject_unsigned_commits" - t.boolean "commit_committer_check" - t.boolean "regexp_uses_re2", default: true - t.string "commit_message_negative_regex" - 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" - end - - create_table "redirect_routes", id: :serial, force: :cascade do |t| - t.integer "source_id", null: false - t.string "source_type", null: false - t.string "path", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.index "lower((path)::text) varchar_pattern_ops", name: "index_redirect_routes_on_path_unique_text_pattern_ops", unique: true - 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" - end - - create_table "release_links", force: :cascade do |t| - 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 - t.string "filepath", limit: 128 - 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 - end - - create_table "releases", id: :serial, force: :cascade do |t| - t.string "tag" - t.text "description" - t.integer "project_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.text "description_html" - t.integer "cached_markdown_version" - t.integer "author_id" - t.string "name" - t.string "sha" - t.datetime_with_timezone "released_at", null: false - t.index ["author_id"], name: "index_releases_on_author_id" - t.index ["project_id", "tag"], name: "index_releases_on_project_id_and_tag" - end - - create_table "remote_mirrors", id: :serial, force: :cascade do |t| - t.integer "project_id" - t.string "url" - t.boolean "enabled", default: false - t.string "update_status" - t.datetime "last_update_at" - t.datetime "last_successful_update_at" - 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 - t.datetime "last_update_started_at" - t.boolean "only_protected_branches", default: false, null: false - t.string "remote_name" - t.boolean "error_notification_sent" - t.boolean "keep_divergent_refs" - 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" - end - - 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 - t.index ["project_id", "programming_language_id"], name: "index_repository_languages_on_project_and_languages_id", unique: true - end - - create_table "requirements", force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.integer "project_id", null: false - t.integer "author_id" - t.integer "iid", null: false - t.integer "cached_markdown_version" - t.integer "state", limit: 2, default: 1, null: false - t.string "title", limit: 255, null: false - t.text "title_html" - t.index ["author_id"], name: "index_requirements_on_author_id" - t.index ["created_at"], name: "index_requirements_on_created_at" - t.index ["project_id", "iid"], name: "index_requirements_on_project_id_and_iid", unique: true, where: "(project_id IS NOT NULL)" - t.index ["project_id"], name: "index_requirements_on_project_id" - t.index ["state"], name: "index_requirements_on_state" - t.index ["title"], name: "index_requirements_on_title_trigram", opclass: :gin_trgm_ops, using: :gin - t.index ["updated_at"], name: "index_requirements_on_updated_at" - end - - create_table "resource_label_events", force: :cascade do |t| - t.integer "action", null: false - t.integer "issue_id" - t.integer "merge_request_id" - t.integer "epic_id" - t.integer "label_id" - t.integer "user_id" - t.datetime_with_timezone "created_at", null: false - t.integer "cached_markdown_version" - t.text "reference" - t.text "reference_html" - t.index ["epic_id"], name: "index_resource_label_events_on_epic_id" - t.index ["issue_id"], name: "index_resource_label_events_on_issue_id" - t.index ["label_id", "action"], name: "index_resource_label_events_on_label_id_and_action" - 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" - end - - create_table "resource_milestone_events", force: :cascade do |t| - t.bigint "user_id", null: false - t.bigint "issue_id" - t.bigint "merge_request_id" - t.bigint "milestone_id" - t.integer "action", limit: 2, null: false - t.integer "state", limit: 2, null: false - t.integer "cached_markdown_version" - t.text "reference" - t.text "reference_html" - t.datetime_with_timezone "created_at", null: false - t.index ["issue_id"], name: "index_resource_milestone_events_on_issue_id" - t.index ["merge_request_id"], name: "index_resource_milestone_events_on_merge_request_id" - t.index ["milestone_id"], name: "index_resource_milestone_events_on_milestone_id" - t.index ["user_id"], name: "index_resource_milestone_events_on_user_id" - end - - create_table "resource_weight_events", force: :cascade do |t| - t.bigint "user_id", null: false - t.bigint "issue_id", null: false - 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 - - create_table "reviews", force: :cascade do |t| - 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 - 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" - end - - create_table "routes", id: :serial, force: :cascade do |t| - t.integer "source_id", null: false - t.string "source_type", null: false - t.string "path", null: false - t.datetime "created_at" - t.datetime "updated_at" - t.string "name" - 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 - end - - create_table "saml_providers", id: :serial, force: :cascade do |t| - t.integer "group_id", null: false - t.boolean "enabled", null: false - t.string "certificate_fingerprint", null: false - t.string "sso_url", null: false - t.boolean "enforced_sso", default: false, null: false - t.boolean "enforced_group_managed_accounts", default: false, null: false - t.boolean "prohibited_outer_forks", default: true, null: false - t.index ["group_id"], name: "index_saml_providers_on_group_id" - end - - create_table "scim_identities", force: :cascade do |t| - t.bigint "group_id", null: false - t.bigint "user_id", null: false - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.boolean "active", default: false - t.string "extern_uid", limit: 255, null: false - t.index "lower((extern_uid)::text), group_id", name: "index_scim_identities_on_lower_extern_uid_and_group_id", unique: true - t.index ["group_id"], name: "index_scim_identities_on_group_id" - t.index ["user_id", "group_id"], name: "index_scim_identities_on_user_id_and_group_id", unique: true - end - - create_table "scim_oauth_access_tokens", id: :serial, 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 "token_encrypted", null: false - t.index ["group_id", "token_encrypted"], name: "index_scim_oauth_access_tokens_on_group_id_and_token_encrypted", unique: true - end - - create_table "security_scans", force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.bigint "build_id", null: false - t.integer "scan_type", limit: 2, null: false - t.index ["build_id", "scan_type"], name: "idx_security_scans_on_build_and_scan_type", unique: true - t.index ["scan_type"], name: "idx_security_scans_on_scan_type" - end - - 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 - - create_table "sent_notifications", id: :serial, force: :cascade do |t| - t.integer "project_id" - t.integer "noteable_id" - t.string "noteable_type" - t.integer "recipient_id" - t.string "commit_id" - t.string "reply_key", null: false - t.string "line_code" - t.string "note_type" - t.text "position" - t.string "in_reply_to_discussion_id" - t.index ["noteable_id"], name: "index_sent_notifications_on_noteable_type_noteable_id", where: "((noteable_type)::text = 'Issue'::text)" - t.index ["reply_key"], name: "index_sent_notifications_on_reply_key", unique: true - end - - 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 - t.index ["sentry_issue_identifier"], name: "index_sentry_issues_on_sentry_issue_identifier" - end - - 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.text "encrypted_key" - t.string "encrypted_key_iv", limit: 255 - t.text "certificate" - 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 - - create_table "service_desk_settings", primary_key: "project_id", id: :bigint, default: nil, force: :cascade do |t| - t.string "issue_template_key", limit: 255 - t.string "outgoing_name", limit: 255 - t.string "project_key", limit: 255 - end - - create_table "services", id: :serial, force: :cascade do |t| - t.string "type" - t.string "title" - t.integer "project_id" - t.datetime "created_at" - t.datetime "updated_at" - t.boolean "active", default: false, null: false - t.text "properties" - 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 - t.boolean "commit_events", default: true, null: false - t.boolean "job_events", default: false, null: false - t.boolean "confidential_note_events", default: true - t.boolean "deployment_events", default: false, null: false - t.string "description", limit: 500 - t.boolean "comment_on_event_enabled", default: true, null: false - t.boolean "template", default: false - t.boolean "instance", default: false, null: false - t.index ["project_id", "type"], name: "index_services_on_project_id_and_type" - t.index ["template"], name: "index_services_on_template" - t.index ["type", "id", "template"], name: "index_services_on_type_and_id_and_template_when_active", where: "(active = true)" - t.index ["type", "instance"], name: "index_services_on_type_and_instance", unique: true, where: "(instance IS TRUE)" - t.index ["type", "template"], name: "index_services_on_type_and_template", unique: true, where: "(template IS TRUE)" - t.index ["type"], name: "index_services_on_type" - end - - create_table "shards", id: :serial, force: :cascade do |t| - t.string "name", null: false - t.index ["name"], name: "index_shards_on_name", unique: true - end - - create_table "slack_integrations", id: :serial, force: :cascade do |t| - t.integer "service_id", null: false - t.string "team_id", null: false - t.string "team_name", null: false - t.string "alias", null: false - t.string "user_id", null: false - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - 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 - end - - create_table "smartcard_identities", force: :cascade do |t| - t.integer "user_id", null: false - t.string "subject", null: false - t.string "issuer", null: false - 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" - end - - create_table "snippet_repositories", primary_key: "snippet_id", id: :bigint, default: nil, force: :cascade do |t| - t.bigint "shard_id", null: false - t.string "disk_path", limit: 80, null: false - t.index ["disk_path"], name: "index_snippet_repositories_on_disk_path", unique: true - t.index ["shard_id"], name: "index_snippet_repositories_on_shard_id" - end - - 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 - - create_table "snippets", id: :serial, force: :cascade do |t| - t.string "title" - t.text "content" - t.integer "author_id", null: false - t.integer "project_id" - t.datetime "created_at" - t.datetime "updated_at" - t.string "file_name" - t.string "type" - t.integer "visibility_level", default: 0, null: false - t.text "title_html" - t.text "content_html" - t.integer "cached_markdown_version" - t.text "description" - t.text "description_html" - t.string "encrypted_secret_token", limit: 255 - t.string "encrypted_secret_token_iv", limit: 255 - t.boolean "secret", default: false, null: false - t.index ["author_id"], name: "index_snippets_on_author_id" - t.index ["content"], name: "index_snippets_on_content_trigram", opclass: :gin_trgm_ops, using: :gin - t.index ["created_at"], name: "index_snippets_on_created_at" - t.index ["description"], name: "index_snippets_on_description_trigram", opclass: :gin_trgm_ops, using: :gin - t.index ["file_name"], name: "index_snippets_on_file_name_trigram", opclass: :gin_trgm_ops, using: :gin - t.index ["project_id", "visibility_level"], name: "index_snippets_on_project_id_and_visibility_level" - 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" - t.index ["visibility_level", "secret"], name: "index_snippets_on_visibility_level_and_secret" - end - - create_table "software_license_policies", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.integer "software_license_id", null: false - t.integer "classification", default: 0, null: false - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - 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" - end - - create_table "software_licenses", id: :serial, force: :cascade do |t| - t.string "name", null: false - t.string "spdx_identifier", limit: 255 - t.index ["name"], name: "index_software_licenses_on_unique_name", unique: true - t.index ["spdx_identifier"], name: "index_software_licenses_on_spdx_identifier" - end - - create_table "spam_logs", id: :serial, force: :cascade do |t| - 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 - t.boolean "recaptcha_verified", default: false, null: false - end - - create_table "status_page_settings", primary_key: "project_id", force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.boolean "enabled", default: false, null: false - t.string "aws_s3_bucket_name", limit: 63, null: false - t.string "aws_region", limit: 255, null: false - t.string "aws_access_key", limit: 255, null: false - t.string "encrypted_aws_secret_key", limit: 255, null: false - t.string "encrypted_aws_secret_key_iv", limit: 255, null: false - t.index ["project_id"], name: "index_status_page_settings_on_project_id" - end - - create_table "subscriptions", id: :serial, force: :cascade do |t| - t.integer "user_id" - t.integer "subscribable_id" - t.string "subscribable_type" - t.boolean "subscribed" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "project_id" - 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 - end - - create_table "suggestions", force: :cascade do |t| - 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 - t.integer "lines_above", default: 0, null: false - t.integer "lines_below", default: 0, null: false - t.boolean "outdated", default: false, null: false - t.index ["note_id", "relative_order"], name: "index_suggestions_on_note_id_and_relative_order", unique: true - end - - create_table "system_note_metadata", id: :serial, force: :cascade do |t| - t.integer "note_id", null: false - t.integer "commit_count" - t.string "action" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - 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)" - t.index ["note_id"], name: "index_system_note_metadata_on_note_id", unique: true - end - - create_table "taggings", id: :serial, force: :cascade do |t| - t.integer "tag_id" - t.integer "taggable_id" - t.string "taggable_type" - t.integer "tagger_id" - t.string "tagger_type" - t.string "context" - t.datetime "created_at" - 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" - end - - create_table "tags", id: :serial, force: :cascade do |t| - t.string "name" - t.integer "taggings_count", default: 0 - 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 - end - - create_table "term_agreements", id: :serial, force: :cascade do |t| - t.integer "term_id", null: false - t.integer "user_id", null: false - t.boolean "accepted", default: false, null: false - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - 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" - end - - create_table "timelogs", id: :serial, force: :cascade do |t| - t.integer "time_spent", null: false - t.integer "user_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "issue_id" - t.integer "merge_request_id" - t.datetime "spent_at" - t.index ["issue_id"], name: "index_timelogs_on_issue_id" - t.index ["merge_request_id"], name: "index_timelogs_on_merge_request_id" - t.index ["spent_at"], name: "index_timelogs_on_spent_at", where: "(spent_at IS NOT NULL)" - t.index ["user_id"], name: "index_timelogs_on_user_id" - end - - create_table "todos", id: :serial, force: :cascade do |t| - t.integer "user_id", null: false - t.integer "project_id" - t.integer "target_id" - t.string "target_type", null: false - t.integer "author_id", null: false - t.integer "action", null: false - t.string "state", null: false - t.datetime "created_at" - t.datetime "updated_at" - t.integer "note_id" - t.string "commit_id" - t.integer "group_id" - t.index ["author_id", "created_at"], name: "index_todos_on_author_id_and_created_at" - 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" - end - - create_table "trending_projects", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.index ["project_id"], name: "index_trending_projects_on_project_id", unique: true - end - - create_table "u2f_registrations", id: :serial, force: :cascade do |t| - 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" - t.index ["key_handle"], name: "index_u2f_registrations_on_key_handle" - t.index ["user_id"], name: "index_u2f_registrations_on_user_id" - end - - create_table "uploads", id: :serial, force: :cascade do |t| - t.bigint "size", null: false - t.string "path", limit: 511, null: false - t.string "checksum", limit: 64 - t.integer "model_id" - t.string "model_type" - t.string "uploader", null: false - t.datetime "created_at", null: false - t.integer "store" - t.string "mount_point" - t.string "secret" - 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" - end - - create_table "user_agent_details", id: :serial, force: :cascade do |t| - 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 - t.index ["subject_id", "subject_type"], name: "index_user_agent_details_on_subject_id_and_subject_type" - end - - create_table "user_callouts", id: :serial, force: :cascade do |t| - t.integer "feature_name", null: false - t.integer "user_id", null: false - t.datetime_with_timezone "dismissed_at" - 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" - end - - create_table "user_custom_attributes", id: :serial, force: :cascade do |t| - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.integer "user_id", null: false - t.string "key", null: false - t.string "value", null: false - 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 - end - - create_table "user_details", primary_key: "user_id", force: :cascade do |t| - t.string "job_title", limit: 200, default: "", null: false - t.index ["user_id"], name: "index_user_details_on_user_id", unique: true - end - - create_table "user_highest_roles", primary_key: "user_id", id: :bigint, default: nil, force: :cascade do |t| - t.datetime_with_timezone "updated_at", null: false - t.integer "highest_access_level" - t.index ["user_id", "highest_access_level"], name: "index_user_highest_roles_on_user_id_and_highest_access_level" - end - - create_table "user_interacted_projects", id: false, force: :cascade do |t| - t.integer "user_id", null: false - t.integer "project_id", null: false - 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" - end - - create_table "user_preferences", id: :serial, force: :cascade do |t| - 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 - t.string "epics_sort" - t.integer "roadmap_epics_state" - t.integer "epic_notes_filter", limit: 2, default: 0, null: false - t.string "issues_sort" - t.string "merge_requests_sort" - t.string "roadmaps_sort" - t.integer "first_day_of_week" - t.string "timezone" - t.boolean "time_display_relative" - t.boolean "time_format_in_24h" - t.string "projects_sort", limit: 64 - t.boolean "show_whitespace_in_diffs", default: true, null: false - t.boolean "sourcegraph_enabled" - t.boolean "setup_for_company" - t.boolean "render_whitespace_in_code" - t.integer "tab_width", limit: 2 - t.bigint "feature_filter_type" - t.index ["user_id"], name: "index_user_preferences_on_user_id", unique: true - end - - create_table "user_statuses", primary_key: "user_id", id: :serial, force: :cascade do |t| - t.integer "cached_markdown_version" - t.string "emoji", default: "speech_balloon", null: false - t.string "message", limit: 100 - t.string "message_html" - t.index ["user_id"], name: "index_user_statuses_on_user_id" - end - - create_table "user_synced_attributes_metadata", id: :serial, force: :cascade do |t| - t.boolean "name_synced", default: false - t.boolean "email_synced", default: false - t.boolean "location_synced", default: false - t.integer "user_id", null: false - t.string "provider" - t.index ["user_id"], name: "index_user_synced_attributes_metadata_on_user_id", unique: true - end - - create_table "users", id: :serial, force: :cascade do |t| - t.string "email", default: "", null: false - t.string "encrypted_password", default: "", null: false - t.string "reset_password_token" - t.datetime "reset_password_sent_at" - t.datetime "remember_created_at" - t.integer "sign_in_count", default: 0 - t.datetime "current_sign_in_at" - t.datetime "last_sign_in_at" - t.string "current_sign_in_ip" - t.string "last_sign_in_ip" - t.datetime "created_at" - t.datetime "updated_at" - t.string "name" - t.boolean "admin", default: false, null: false - t.integer "projects_limit", null: false - 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 - t.datetime "locked_at" - 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 - t.datetime "password_expires_at" - t.integer "created_by_id" - t.datetime "last_credential_check_at" - t.string "avatar" - t.string "confirmation_token" - t.datetime "confirmed_at" - t.datetime "confirmation_sent_at" - t.string "unconfirmed_email" - t.boolean "hide_no_ssh_key", default: false - t.string "website_url", default: "", null: false - t.datetime "admin_email_unsubscribed_at" - 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" - t.datetime "otp_grace_period_started_at" - t.boolean "external", default: false - t.string "incoming_email_token" - t.string "organization" - t.boolean "auditor", default: false, null: false - t.boolean "require_two_factor_authentication_from_group", default: false, null: false - t.integer "two_factor_grace_period", default: 48, null: false - t.boolean "ghost" - t.date "last_activity_on" - t.boolean "notified_of_own_activity" - t.string "preferred_language" - t.boolean "email_opted_in" - t.string "email_opted_in_ip" - t.integer "email_opted_in_source_id" - t.datetime "email_opted_in_at" - t.integer "theme_id", limit: 2 - t.integer "accepted_term_id" - t.string "feed_token" - t.boolean "private_profile", default: false, null: false - t.integer "roadmap_layout", limit: 2 - t.boolean "include_private_contributions" - t.string "commit_email" - t.integer "group_view" - t.integer "managing_group_id" - t.integer "bot_type", limit: 2 - t.string "first_name", limit: 255 - t.string "last_name", limit: 255 - t.string "static_object_token", limit: 255 - t.integer "role", limit: 2 - t.integer "user_type", limit: 2 - t.index "lower((name)::text)", name: "index_on_users_name_lower" - 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", "user_type"], name: "index_users_on_state_and_user_type_internal", where: "(ghost IS NOT TRUE)" - t.index ["state"], name: "index_users_on_state" - t.index ["static_object_token"], name: "index_users_on_static_object_token", unique: true - t.index ["unconfirmed_email"], name: "index_users_on_unconfirmed_email", where: "(unconfirmed_email IS NOT NULL)" - t.index ["unlock_token"], name: "index_users_on_unlock_token", unique: true - t.index ["user_type"], name: "index_users_on_user_type" - t.index ["username"], name: "index_users_on_username" - t.index ["username"], name: "index_users_on_username_trigram", opclass: :gin_trgm_ops, using: :gin - end - - create_table "users_ops_dashboard_projects", force: :cascade do |t| - 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 - 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 - end - - 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 - - create_table "users_star_projects", id: :serial, force: :cascade do |t| - t.integer "project_id", null: false - t.integer "user_id", null: false - t.datetime "created_at" - t.datetime "updated_at" - 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 - end - - create_table "users_statistics", force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.integer "without_groups_and_projects", default: 0, null: false - t.integer "with_highest_role_guest", default: 0, null: false - t.integer "with_highest_role_reporter", default: 0, null: false - t.integer "with_highest_role_developer", default: 0, null: false - t.integer "with_highest_role_maintainer", default: 0, null: false - t.integer "with_highest_role_owner", default: 0, null: false - t.integer "bots", default: 0, null: false - t.integer "blocked", default: 0, null: false - end - - 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 - t.text "title_html" - t.text "description" - t.text "description_html" - t.bigint "start_date_sourcing_milestone_id" - t.bigint "due_date_sourcing_milestone_id" - 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 - t.bigint "resolved_by_id" - t.datetime_with_timezone "resolved_at" - t.integer "report_type", limit: 2, null: false - t.integer "cached_markdown_version" - t.bigint "confirmed_by_id" - t.datetime_with_timezone "confirmed_at" - t.datetime_with_timezone "dismissed_at" - t.bigint "dismissed_by_id" - t.index ["author_id"], name: "index_vulnerabilities_on_author_id" - t.index ["confirmed_by_id"], name: "index_vulnerabilities_on_confirmed_by_id" - t.index ["dismissed_by_id"], name: "index_vulnerabilities_on_dismissed_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 ["id"], name: "undefined_vulnerability", where: "(severity = 0)" - 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" - t.index ["resolved_by_id"], name: "index_vulnerabilities_on_resolved_by_id" - 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 - - create_table "vulnerability_exports", force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.datetime_with_timezone "started_at" - t.datetime_with_timezone "finished_at" - t.string "status", limit: 255, null: false - t.string "file", limit: 255 - t.bigint "project_id", null: false - t.bigint "author_id", null: false - t.integer "file_store" - t.integer "format", limit: 2, default: 0, null: false - t.index ["author_id"], name: "index_vulnerability_exports_on_author_id" - t.index ["project_id", "id"], name: "index_vulnerability_exports_on_project_id_and_id", unique: true - end - - create_table "vulnerability_feedback", id: :serial, force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.integer "feedback_type", limit: 2, null: false - t.integer "category", limit: 2, null: false - t.integer "project_id", null: false - t.integer "author_id", null: false - t.integer "pipeline_id" - t.integer "issue_id" - t.string "project_fingerprint", limit: 40, null: false - t.integer "merge_request_id" - t.integer "comment_author_id" - t.text "comment" - t.datetime_with_timezone "comment_timestamp" - 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 - end - - create_table "vulnerability_identifiers", force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.integer "project_id", null: false - t.binary "fingerprint", null: false - t.string "external_type", null: false - t.string "external_id", null: false - t.string "name", null: false - t.text "url" - t.index ["project_id", "fingerprint"], name: "index_vulnerability_identifiers_on_project_id_and_fingerprint", unique: true - end - - 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 - - create_table "vulnerability_occurrence_identifiers", force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.bigint "occurrence_id", null: false - t.bigint "identifier_id", null: false - 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 - end - - create_table "vulnerability_occurrence_pipelines", force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.bigint "occurrence_id", null: false - t.integer "pipeline_id", null: false - 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" - end - - create_table "vulnerability_occurrences", force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.integer "severity", limit: 2, null: false - t.integer "confidence", limit: 2, null: false - t.integer "report_type", limit: 2, null: false - t.integer "project_id", null: false - t.bigint "scanner_id", null: false - t.bigint "primary_identifier_id", null: false - t.binary "project_fingerprint", null: false - t.binary "location_fingerprint", null: false - t.string "uuid", limit: 36, null: false - t.string "name", null: false - t.string "metadata_version", null: false - t.text "raw_metadata", null: false - t.bigint "vulnerability_id" - t.index ["id"], name: "undefined_vulnerabilities", where: "(severity = 0)" - 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 - t.index ["vulnerability_id"], name: "index_vulnerability_occurrences_on_vulnerability_id" - end - - create_table "vulnerability_scanners", force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.integer "project_id", null: false - t.string "external_id", null: false - t.string "name", null: false - t.index ["project_id", "external_id"], name: "index_vulnerability_scanners_on_project_id_and_external_id", unique: true - end - - create_table "web_hook_logs", id: :serial, force: :cascade do |t| - t.integer "web_hook_id", null: false - t.string "trigger" - t.string "url" - t.text "request_headers" - t.text "request_data" - t.text "response_headers" - t.text "response_body" - t.string "response_status" - t.float "execution_duration" - t.string "internal_error_message" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - 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" - end - - create_table "web_hooks", id: :serial, force: :cascade do |t| - t.integer "project_id" - t.datetime "created_at" - t.datetime "updated_at" - 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 - t.boolean "wiki_page_events", default: false, null: false - t.boolean "pipeline_events", default: false, null: false - t.boolean "confidential_issues_events", default: false, null: false - t.boolean "repository_update_events", default: false, null: false - t.boolean "job_events", default: false, null: false - t.boolean "confidential_note_events" - t.text "push_events_branch_filter" - t.string "encrypted_token" - t.string "encrypted_token_iv" - t.string "encrypted_url" - t.string "encrypted_url_iv" - t.index ["group_id"], name: "index_web_hooks_on_group_id", where: "((type)::text = 'GroupHook'::text)" - t.index ["project_id"], name: "index_web_hooks_on_project_id" - t.index ["type"], name: "index_web_hooks_on_type" - end - - create_table "wiki_page_meta", id: :serial, 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 "title", limit: 255, null: false - t.index ["project_id"], name: "index_wiki_page_meta_on_project_id" - end - - create_table "wiki_page_slugs", id: :serial, force: :cascade do |t| - t.boolean "canonical", default: false, null: false - t.bigint "wiki_page_meta_id", null: false - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.string "slug", limit: 2048, null: false - t.index ["slug", "wiki_page_meta_id"], name: "index_wiki_page_slugs_on_slug_and_wiki_page_meta_id", unique: true - t.index ["wiki_page_meta_id"], name: "index_wiki_page_slugs_on_wiki_page_meta_id" - t.index ["wiki_page_meta_id"], name: "one_canonical_wiki_page_slug_per_metadata", unique: true, where: "(canonical = true)" - end - - create_table "x509_certificates", force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.string "subject_key_identifier", limit: 255, null: false - t.string "subject", limit: 255, null: false - t.string "email", limit: 255, null: false - t.binary "serial_number", null: false - t.integer "certificate_status", limit: 2, default: 0, null: false - t.bigint "x509_issuer_id", null: false - t.index ["subject_key_identifier"], name: "index_x509_certificates_on_subject_key_identifier" - t.index ["x509_issuer_id"], name: "index_x509_certificates_on_x509_issuer_id" - end - - create_table "x509_commit_signatures", 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.bigint "x509_certificate_id", null: false - t.binary "commit_sha", null: false - t.integer "verification_status", limit: 2, default: 0, null: false - t.index ["commit_sha"], name: "index_x509_commit_signatures_on_commit_sha" - t.index ["project_id"], name: "index_x509_commit_signatures_on_project_id" - t.index ["x509_certificate_id"], name: "index_x509_commit_signatures_on_x509_certificate_id" - end - - create_table "x509_issuers", force: :cascade do |t| - t.datetime_with_timezone "created_at", null: false - t.datetime_with_timezone "updated_at", null: false - t.string "subject_key_identifier", limit: 255, null: false - t.string "subject", limit: 255, null: false - t.string "crl_url", limit: 255, null: false - t.index ["subject_key_identifier"], name: "index_x509_issuers_on_subject_key_identifier" - end - - 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" - t.index ["issue_status"], name: "index_zoom_meetings_on_issue_status" - t.index ["project_id"], name: "index_zoom_meetings_on_project_id" - end - - add_foreign_key "alerts_service_data", "services", on_delete: :cascade - add_foreign_key "allowed_email_domains", "namespaces", column: "group_id", on_delete: :cascade - 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 - 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 - add_foreign_key "application_settings", "namespaces", column: "custom_project_templates_group_id", on_delete: :nullify - add_foreign_key "application_settings", "namespaces", column: "instance_administrators_group_id", name: "fk_e8a145f3a7", on_delete: :nullify - add_foreign_key "application_settings", "projects", column: "file_template_project_id", name: "fk_ec757bd087", on_delete: :nullify - add_foreign_key "application_settings", "projects", column: "instance_administration_project_id", on_delete: :nullify - add_foreign_key "application_settings", "users", column: "usage_stats_set_by_user_id", name: "fk_964370041d", on_delete: :nullify - 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 - add_foreign_key "approval_merge_request_rules", "merge_requests", on_delete: :cascade - 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 - 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_protected_branches", "approval_project_rules", on_delete: :cascade - add_foreign_key "approval_project_rules_protected_branches", "protected_branches", 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 - add_foreign_key "approvals", "merge_requests", name: "fk_310d714958", on_delete: :cascade - add_foreign_key "approver_groups", "namespaces", column: "group_id", on_delete: :cascade - add_foreign_key "aws_roles", "users", on_delete: :cascade - add_foreign_key "badges", "namespaces", column: "group_id", on_delete: :cascade - add_foreign_key "badges", "projects", on_delete: :cascade - add_foreign_key "board_assignees", "boards", on_delete: :cascade - add_foreign_key "board_assignees", "users", column: "assignee_id", on_delete: :cascade - 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 - add_foreign_key "board_labels", "boards", on_delete: :cascade - add_foreign_key "board_labels", "labels", on_delete: :cascade - 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 - add_foreign_key "boards", "namespaces", column: "group_id", name: "fk_1e9a074a35", on_delete: :cascade - add_foreign_key "boards", "projects", name: "fk_f15266b5f9", on_delete: :cascade - add_foreign_key "chat_teams", "namespaces", on_delete: :cascade - add_foreign_key "ci_build_needs", "ci_builds", column: "build_id", on_delete: :cascade - add_foreign_key "ci_build_trace_chunks", "ci_builds", column: "build_id", on_delete: :cascade - 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 - add_foreign_key "ci_builds", "ci_pipelines", column: "auto_canceled_by_id", name: "fk_a2141b1522", on_delete: :nullify - add_foreign_key "ci_builds", "ci_pipelines", column: "commit_id", name: "fk_d3130c9a7f", on_delete: :cascade - add_foreign_key "ci_builds", "ci_pipelines", column: "upstream_pipeline_id", name: "fk_87f4cefcda", on_delete: :cascade - add_foreign_key "ci_builds", "ci_resource_groups", column: "resource_group_id", name: "fk_6661f4f0e8", on_delete: :nullify - add_foreign_key "ci_builds", "ci_stages", column: "stage_id", name: "fk_3a9eaa254d", on_delete: :cascade - add_foreign_key "ci_builds", "projects", name: "fk_befce0568a", on_delete: :cascade - add_foreign_key "ci_builds_metadata", "ci_builds", column: "build_id", on_delete: :cascade - add_foreign_key "ci_builds_metadata", "projects", on_delete: :cascade - add_foreign_key "ci_builds_runner_session", "ci_builds", column: "build_id", on_delete: :cascade - add_foreign_key "ci_daily_report_results", "ci_pipelines", column: "last_pipeline_id", on_delete: :cascade - add_foreign_key "ci_daily_report_results", "projects", on_delete: :cascade - add_foreign_key "ci_group_variables", "namespaces", column: "group_id", name: "fk_33ae4d58d8", on_delete: :cascade - add_foreign_key "ci_job_artifacts", "ci_builds", column: "job_id", on_delete: :cascade - add_foreign_key "ci_job_artifacts", "projects", on_delete: :cascade - add_foreign_key "ci_job_variables", "ci_builds", column: "job_id", on_delete: :cascade - 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 - add_foreign_key "ci_pipeline_schedule_variables", "ci_pipeline_schedules", column: "pipeline_schedule_id", name: "fk_41c35fda51", on_delete: :cascade - add_foreign_key "ci_pipeline_schedules", "projects", name: "fk_8ead60fcc4", on_delete: :cascade - add_foreign_key "ci_pipeline_schedules", "users", column: "owner_id", name: "fk_9ea99f58d2", on_delete: :nullify - add_foreign_key "ci_pipeline_variables", "ci_pipelines", column: "pipeline_id", name: "fk_f29c5f4380", on_delete: :cascade - 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 - add_foreign_key "ci_pipelines", "external_pull_requests", name: "fk_190998ef09", on_delete: :nullify - add_foreign_key "ci_pipelines", "merge_requests", name: "fk_a23be95014", on_delete: :cascade - add_foreign_key "ci_pipelines", "projects", name: "fk_86635dbd80", on_delete: :cascade - add_foreign_key "ci_pipelines_config", "ci_pipelines", column: "pipeline_id", on_delete: :cascade - add_foreign_key "ci_refs", "ci_pipelines", column: "last_updated_by_pipeline_id", on_delete: :nullify - add_foreign_key "ci_refs", "projects", on_delete: :cascade - 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 - add_foreign_key "ci_runner_namespaces", "ci_runners", column: "runner_id", on_delete: :cascade - add_foreign_key "ci_runner_namespaces", "namespaces", on_delete: :cascade - add_foreign_key "ci_runner_projects", "projects", name: "fk_4478a6f1e4", on_delete: :cascade - 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 - add_foreign_key "ci_sources_projects", "ci_pipelines", column: "pipeline_id", on_delete: :cascade - add_foreign_key "ci_sources_projects", "projects", column: "source_project_id", on_delete: :cascade - add_foreign_key "ci_stages", "ci_pipelines", column: "pipeline_id", name: "fk_fb57e6cc56", on_delete: :cascade - add_foreign_key "ci_stages", "projects", name: "fk_2360681d1d", on_delete: :cascade - 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 - add_foreign_key "ci_trigger_requests", "ci_triggers", column: "trigger_id", name: "fk_b8ec8b7245", on_delete: :cascade - add_foreign_key "ci_triggers", "projects", name: "fk_e3e63f966e", on_delete: :cascade - add_foreign_key "ci_triggers", "users", column: "owner_id", name: "fk_e8e10d1964", on_delete: :cascade - add_foreign_key "ci_variables", "projects", name: "fk_ada5eb64b3", on_delete: :cascade - add_foreign_key "cluster_groups", "clusters", on_delete: :cascade - add_foreign_key "cluster_groups", "namespaces", column: "group_id", on_delete: :cascade - add_foreign_key "cluster_platforms_kubernetes", "clusters", on_delete: :cascade - add_foreign_key "cluster_projects", "clusters", on_delete: :cascade - add_foreign_key "cluster_projects", "projects", on_delete: :cascade - add_foreign_key "cluster_providers_aws", "clusters", on_delete: :cascade - add_foreign_key "cluster_providers_aws", "users", column: "created_by_user_id", on_delete: :nullify - add_foreign_key "cluster_providers_gcp", "clusters", on_delete: :cascade - add_foreign_key "clusters", "projects", column: "management_project_id", name: "fk_f05c5e5a42", on_delete: :nullify - add_foreign_key "clusters", "users", on_delete: :nullify - add_foreign_key "clusters_applications_cert_managers", "clusters", on_delete: :cascade - add_foreign_key "clusters_applications_crossplane", "clusters", on_delete: :cascade - add_foreign_key "clusters_applications_elastic_stacks", "clusters", on_delete: :cascade - add_foreign_key "clusters_applications_helm", "clusters", on_delete: :cascade - add_foreign_key "clusters_applications_ingress", "clusters", on_delete: :cascade - add_foreign_key "clusters_applications_jupyter", "clusters", on_delete: :cascade - add_foreign_key "clusters_applications_jupyter", "oauth_applications", on_delete: :nullify - add_foreign_key "clusters_applications_knative", "clusters", on_delete: :cascade - add_foreign_key "clusters_applications_prometheus", "clusters", name: "fk_557e773639", on_delete: :cascade - 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 - add_foreign_key "clusters_kubernetes_namespaces", "cluster_projects", on_delete: :nullify - add_foreign_key "clusters_kubernetes_namespaces", "clusters", on_delete: :cascade - add_foreign_key "clusters_kubernetes_namespaces", "environments", on_delete: :nullify - add_foreign_key "clusters_kubernetes_namespaces", "projects", on_delete: :nullify - add_foreign_key "commit_user_mentions", "notes", on_delete: :cascade - add_foreign_key "container_expiration_policies", "projects", on_delete: :cascade - add_foreign_key "container_repositories", "projects" - 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 - add_foreign_key "deploy_keys_projects", "projects", name: "fk_58a901ca7e", on_delete: :cascade - add_foreign_key "deployment_clusters", "clusters", on_delete: :cascade - add_foreign_key "deployment_clusters", "deployments", on_delete: :cascade - add_foreign_key "deployment_merge_requests", "deployments", on_delete: :cascade - add_foreign_key "deployment_merge_requests", "environments", name: "fk_a064ff4453", on_delete: :cascade - add_foreign_key "deployment_merge_requests", "merge_requests", on_delete: :cascade - add_foreign_key "deployments", "clusters", name: "fk_289bba3222", on_delete: :nullify - add_foreign_key "deployments", "projects", name: "fk_b9a3851b82", on_delete: :cascade - 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 - add_foreign_key "design_management_designs", "issues", on_delete: :cascade - add_foreign_key "design_management_designs", "projects", on_delete: :cascade - 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 - add_foreign_key "design_management_versions", "users", column: "author_id", name: "fk_c1440b4896", on_delete: :nullify - 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 - add_foreign_key "draft_notes", "merge_requests", on_delete: :cascade - add_foreign_key "draft_notes", "users", column: "author_id", on_delete: :cascade - add_foreign_key "elasticsearch_indexed_namespaces", "namespaces", on_delete: :cascade - add_foreign_key "elasticsearch_indexed_projects", "projects", on_delete: :cascade - add_foreign_key "environments", "projects", name: "fk_d1c8c1da6a", on_delete: :cascade - add_foreign_key "epic_issues", "epics", on_delete: :cascade - add_foreign_key "epic_issues", "issues", on_delete: :cascade - add_foreign_key "epic_metrics", "epics", on_delete: :cascade - add_foreign_key "epic_user_mentions", "epics", on_delete: :cascade - add_foreign_key "epic_user_mentions", "notes", on_delete: :cascade - add_foreign_key "epics", "epics", column: "due_date_sourcing_epic_id", name: "fk_013c9f36ca", on_delete: :nullify - add_foreign_key "epics", "epics", column: "parent_id", name: "fk_25b99c1be3", on_delete: :cascade - add_foreign_key "epics", "epics", column: "start_date_sourcing_epic_id", name: "fk_9d480c64b2", on_delete: :nullify - add_foreign_key "epics", "milestones", column: "due_date_sourcing_milestone_id", name: "fk_3c1fd1cccc", on_delete: :nullify - add_foreign_key "epics", "milestones", column: "start_date_sourcing_milestone_id", name: "fk_1fbed67632", 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 - add_foreign_key "epics", "users", column: "closed_by_id", name: "fk_aa5798e761", on_delete: :nullify - add_foreign_key "events", "namespaces", column: "group_id", name: "fk_61fbf6ca48", on_delete: :cascade - add_foreign_key "events", "projects", on_delete: :cascade - add_foreign_key "events", "users", column: "author_id", name: "fk_edfd187b6f", on_delete: :cascade - add_foreign_key "evidences", "releases", on_delete: :cascade - add_foreign_key "external_pull_requests", "projects", on_delete: :cascade - 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 - add_foreign_key "fork_networks", "projects", column: "root_project_id", name: "fk_e7b436b2b5", on_delete: :nullify - add_foreign_key "geo_container_repository_updated_events", "container_repositories", name: "fk_212c89c706", on_delete: :cascade - add_foreign_key "geo_event_log", "geo_cache_invalidation_events", column: "cache_invalidation_event_id", name: "fk_42c3b54bed", on_delete: :cascade - add_foreign_key "geo_event_log", "geo_container_repository_updated_events", column: "container_repository_updated_event_id", name: "fk_6ada82d42a", on_delete: :cascade - add_foreign_key "geo_event_log", "geo_events", name: "fk_geo_event_log_on_geo_event_id", on_delete: :cascade - add_foreign_key "geo_event_log", "geo_hashed_storage_migrated_events", column: "hashed_storage_migrated_event_id", name: "fk_27548c6db3", on_delete: :cascade - add_foreign_key "geo_event_log", "geo_job_artifact_deleted_events", column: "job_artifact_deleted_event_id", name: "fk_176d3fbb5d", on_delete: :cascade - add_foreign_key "geo_event_log", "geo_lfs_object_deleted_events", column: "lfs_object_deleted_event_id", name: "fk_d5af95fcd9", on_delete: :cascade - add_foreign_key "geo_event_log", "geo_repositories_changed_events", column: "repositories_changed_event_id", name: "fk_4a99ebfd60", on_delete: :cascade - add_foreign_key "geo_event_log", "geo_repository_created_events", column: "repository_created_event_id", name: "fk_9b9afb1916", on_delete: :cascade - add_foreign_key "geo_event_log", "geo_repository_deleted_events", column: "repository_deleted_event_id", name: "fk_c4b1c1f66e", on_delete: :cascade - add_foreign_key "geo_event_log", "geo_repository_renamed_events", column: "repository_renamed_event_id", name: "fk_86c84214ec", on_delete: :cascade - add_foreign_key "geo_event_log", "geo_repository_updated_events", column: "repository_updated_event_id", name: "fk_78a6492f68", on_delete: :cascade - add_foreign_key "geo_event_log", "geo_reset_checksum_events", column: "reset_checksum_event_id", name: "fk_cff7185ad2", on_delete: :cascade - add_foreign_key "geo_event_log", "geo_upload_deleted_events", column: "upload_deleted_event_id", name: "fk_c1f241c70d", on_delete: :cascade - add_foreign_key "geo_hashed_storage_attachments_events", "projects", on_delete: :cascade - add_foreign_key "geo_hashed_storage_migrated_events", "projects", on_delete: :cascade - add_foreign_key "geo_node_namespace_links", "geo_nodes", on_delete: :cascade - add_foreign_key "geo_node_namespace_links", "namespaces", on_delete: :cascade - add_foreign_key "geo_node_statuses", "geo_nodes", on_delete: :cascade - add_foreign_key "geo_repositories_changed_events", "geo_nodes", on_delete: :cascade - add_foreign_key "geo_repository_created_events", "projects", on_delete: :cascade - add_foreign_key "geo_repository_renamed_events", "projects", on_delete: :cascade - add_foreign_key "geo_repository_updated_events", "projects", on_delete: :cascade - add_foreign_key "geo_reset_checksum_events", "projects", on_delete: :cascade - add_foreign_key "gitlab_subscriptions", "namespaces", name: "fk_e2595d00a1", on_delete: :cascade - add_foreign_key "gitlab_subscriptions", "plans", column: "hosted_plan_id", name: "fk_bd0c4019c3", on_delete: :cascade - add_foreign_key "gpg_key_subkeys", "gpg_keys", on_delete: :cascade - add_foreign_key "gpg_keys", "users", on_delete: :cascade - add_foreign_key "gpg_signatures", "gpg_key_subkeys", on_delete: :nullify - add_foreign_key "gpg_signatures", "gpg_keys", on_delete: :nullify - add_foreign_key "gpg_signatures", "projects", on_delete: :cascade - add_foreign_key "grafana_integrations", "projects", on_delete: :cascade - add_foreign_key "group_custom_attributes", "namespaces", column: "group_id", on_delete: :cascade - add_foreign_key "group_deletion_schedules", "namespaces", column: "group_id", on_delete: :cascade - add_foreign_key "group_deletion_schedules", "users", name: "fk_11e3ebfcdd", on_delete: :cascade - add_foreign_key "group_deploy_tokens", "deploy_tokens", on_delete: :cascade - add_foreign_key "group_deploy_tokens", "namespaces", column: "group_id", on_delete: :cascade - 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 - add_foreign_key "identities", "saml_providers", name: "fk_aade90f0fc", on_delete: :cascade - add_foreign_key "import_export_uploads", "namespaces", column: "group_id", name: "fk_83319d9721", on_delete: :cascade - add_foreign_key "import_export_uploads", "projects", on_delete: :cascade - add_foreign_key "import_failures", "namespaces", column: "group_id", name: "fk_24b824da43", on_delete: :cascade - add_foreign_key "index_statuses", "projects", name: "fk_74b2492545", on_delete: :cascade - add_foreign_key "insights", "namespaces", on_delete: :cascade - add_foreign_key "insights", "projects", on_delete: :cascade - add_foreign_key "internal_ids", "namespaces", name: "fk_162941d509", on_delete: :cascade - add_foreign_key "internal_ids", "projects", on_delete: :cascade - add_foreign_key "ip_restrictions", "namespaces", column: "group_id", on_delete: :cascade - add_foreign_key "issue_assignees", "issues", name: "fk_b7d881734a", on_delete: :cascade - add_foreign_key "issue_assignees", "users", name: "fk_5e0c8d9154", on_delete: :cascade - 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 - add_foreign_key "issue_metrics", "issues", on_delete: :cascade - add_foreign_key "issue_tracker_data", "services", on_delete: :cascade - add_foreign_key "issue_user_mentions", "issues", on_delete: :cascade - add_foreign_key "issue_user_mentions", "notes", on_delete: :cascade - add_foreign_key "issues", "epics", column: "promoted_to_epic_id", name: "fk_df75a7c8b8", on_delete: :nullify - add_foreign_key "issues", "issues", column: "duplicated_to_id", name: "fk_9c4516d665", on_delete: :nullify - 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 - add_foreign_key "issues", "projects", name: "fk_899c8f3231", on_delete: :cascade - add_foreign_key "issues", "users", column: "author_id", name: "fk_05f1e72feb", on_delete: :nullify - add_foreign_key "issues", "users", column: "closed_by_id", name: "fk_c63cbf6c25", on_delete: :nullify - add_foreign_key "issues", "users", column: "updated_by_id", name: "fk_ffed080f01", on_delete: :nullify - add_foreign_key "issues_prometheus_alert_events", "issues", on_delete: :cascade - add_foreign_key "issues_prometheus_alert_events", "prometheus_alert_events", on_delete: :cascade - 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 - add_foreign_key "jira_connect_subscriptions", "jira_connect_installations", on_delete: :cascade - add_foreign_key "jira_connect_subscriptions", "namespaces", on_delete: :cascade - add_foreign_key "jira_tracker_data", "services", on_delete: :cascade - add_foreign_key "label_links", "labels", name: "fk_d97dd08678", on_delete: :cascade - add_foreign_key "label_priorities", "labels", on_delete: :cascade - add_foreign_key "label_priorities", "projects", on_delete: :cascade - add_foreign_key "labels", "namespaces", column: "group_id", on_delete: :cascade - add_foreign_key "labels", "projects", name: "fk_7de4989a69", on_delete: :cascade - add_foreign_key "lfs_file_locks", "projects", on_delete: :cascade - add_foreign_key "lfs_file_locks", "users", on_delete: :cascade - add_foreign_key "list_user_preferences", "lists", on_delete: :cascade - add_foreign_key "list_user_preferences", "users", on_delete: :cascade - add_foreign_key "lists", "boards", name: "fk_0d3f677137", on_delete: :cascade - add_foreign_key "lists", "labels", name: "fk_7a5553d60f", on_delete: :cascade - add_foreign_key "lists", "milestones", on_delete: :cascade - add_foreign_key "lists", "users", name: "fk_d6cf4279f7", on_delete: :cascade - add_foreign_key "members", "users", name: "fk_2e88fb7ce9", on_delete: :cascade - add_foreign_key "merge_request_assignees", "merge_requests", on_delete: :cascade - add_foreign_key "merge_request_assignees", "users", on_delete: :cascade - 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 - add_foreign_key "merge_request_context_commit_diff_files", "merge_request_context_commits", on_delete: :cascade - add_foreign_key "merge_request_context_commits", "merge_requests", on_delete: :cascade - add_foreign_key "merge_request_diff_commits", "merge_request_diffs", on_delete: :cascade - add_foreign_key "merge_request_diff_files", "merge_request_diffs", on_delete: :cascade - add_foreign_key "merge_request_diffs", "merge_requests", name: "fk_8483f3258f", on_delete: :cascade - add_foreign_key "merge_request_metrics", "ci_pipelines", column: "pipeline_id", on_delete: :cascade - add_foreign_key "merge_request_metrics", "merge_requests", on_delete: :cascade - 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 - add_foreign_key "merge_request_user_mentions", "merge_requests", on_delete: :cascade - add_foreign_key "merge_request_user_mentions", "notes", on_delete: :cascade - add_foreign_key "merge_requests", "ci_pipelines", column: "head_pipeline_id", name: "fk_fd82eae0b9", on_delete: :nullify - add_foreign_key "merge_requests", "merge_request_diffs", column: "latest_merge_request_diff_id", name: "fk_06067f5644", on_delete: :nullify - 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 - add_foreign_key "merge_requests", "projects", column: "target_project_id", name: "fk_a6963e8447", on_delete: :cascade - 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 - add_foreign_key "merge_requests_closing_issues", "issues", on_delete: :cascade - add_foreign_key "merge_requests_closing_issues", "merge_requests", on_delete: :cascade - add_foreign_key "merge_trains", "ci_pipelines", column: "pipeline_id", on_delete: :nullify - add_foreign_key "merge_trains", "merge_requests", on_delete: :cascade - add_foreign_key "merge_trains", "projects", column: "target_project_id", on_delete: :cascade - add_foreign_key "merge_trains", "users", on_delete: :cascade - add_foreign_key "milestone_releases", "milestones", on_delete: :cascade - add_foreign_key "milestone_releases", "releases", on_delete: :cascade - add_foreign_key "milestones", "namespaces", column: "group_id", name: "fk_95650a40d4", on_delete: :cascade - add_foreign_key "milestones", "projects", name: "fk_9bd0a0c791", on_delete: :cascade - add_foreign_key "namespace_aggregation_schedules", "namespaces", on_delete: :cascade - add_foreign_key "namespace_root_storage_statistics", "namespaces", on_delete: :cascade - add_foreign_key "namespace_statistics", "namespaces", on_delete: :cascade - add_foreign_key "namespaces", "namespaces", column: "custom_project_templates_group_id", name: "fk_e7a0b20a6b", on_delete: :nullify - add_foreign_key "namespaces", "plans", name: "fk_fdd12e5b80", on_delete: :nullify - add_foreign_key "namespaces", "projects", column: "file_template_project_id", name: "fk_319256d87a", on_delete: :nullify - add_foreign_key "note_diff_files", "notes", column: "diff_note_id", on_delete: :cascade - add_foreign_key "notes", "projects", name: "fk_99e097b079", on_delete: :cascade - add_foreign_key "notes", "reviews", name: "fk_2e82291620", on_delete: :nullify - add_foreign_key "notification_settings", "users", name: "fk_0c95e91db7", on_delete: :cascade - add_foreign_key "oauth_openid_requests", "oauth_access_grants", column: "access_grant_id", name: "fk_77114b3b09", on_delete: :cascade - add_foreign_key "open_project_tracker_data", "services", on_delete: :cascade - add_foreign_key "operations_feature_flag_scopes", "operations_feature_flags", column: "feature_flag_id", on_delete: :cascade - add_foreign_key "operations_feature_flags", "projects", on_delete: :cascade - add_foreign_key "operations_feature_flags_clients", "projects", on_delete: :cascade - add_foreign_key "operations_scopes", "operations_strategies", column: "strategy_id", on_delete: :cascade - add_foreign_key "operations_strategies", "operations_feature_flags", column: "feature_flag_id", on_delete: :cascade - 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 - 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 - 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 - 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 - add_foreign_key "packages_packages", "projects", on_delete: :cascade - add_foreign_key "packages_tags", "packages_packages", column: "package_id", on_delete: :cascade - add_foreign_key "pages_domain_acme_orders", "pages_domains", on_delete: :cascade - add_foreign_key "pages_domains", "projects", name: "fk_ea2f6dfc6f", on_delete: :cascade - add_foreign_key "path_locks", "projects", name: "fk_5265c98f24", on_delete: :cascade - add_foreign_key "path_locks", "users" - add_foreign_key "personal_access_tokens", "users", name: "fk_personal_access_tokens_user_id", on_delete: :cascade - add_foreign_key "plan_limits", "plans", on_delete: :cascade - add_foreign_key "pool_repositories", "projects", column: "source_project_id", on_delete: :nullify - add_foreign_key "pool_repositories", "shards", on_delete: :restrict - add_foreign_key "project_alerting_settings", "projects", on_delete: :cascade - add_foreign_key "project_aliases", "projects", on_delete: :cascade - add_foreign_key "project_authorizations", "projects", on_delete: :cascade - add_foreign_key "project_authorizations", "users", on_delete: :cascade - add_foreign_key "project_auto_devops", "projects", on_delete: :cascade - add_foreign_key "project_ci_cd_settings", "projects", name: "fk_24c15d2f2e", on_delete: :cascade - add_foreign_key "project_custom_attributes", "projects", on_delete: :cascade - add_foreign_key "project_daily_statistics", "projects", on_delete: :cascade - add_foreign_key "project_deploy_tokens", "deploy_tokens", on_delete: :cascade - add_foreign_key "project_deploy_tokens", "projects", on_delete: :cascade - add_foreign_key "project_error_tracking_settings", "projects", on_delete: :cascade - add_foreign_key "project_export_jobs", "projects", on_delete: :cascade - add_foreign_key "project_feature_usages", "projects", on_delete: :cascade - 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 - add_foreign_key "project_incident_management_settings", "projects", on_delete: :cascade - add_foreign_key "project_metrics_settings", "projects", on_delete: :cascade - add_foreign_key "project_mirror_data", "projects", name: "fk_d1aad367d7", on_delete: :cascade - add_foreign_key "project_pages_metadata", "projects", on_delete: :cascade - add_foreign_key "project_repositories", "projects", on_delete: :cascade - add_foreign_key "project_repositories", "shards", on_delete: :restrict - add_foreign_key "project_repository_states", "projects", on_delete: :cascade - add_foreign_key "project_settings", "projects", on_delete: :cascade - add_foreign_key "project_statistics", "projects", on_delete: :cascade - add_foreign_key "project_tracing_settings", "projects", on_delete: :cascade - add_foreign_key "projects", "pool_repositories", name: "fk_6e5c14658a", on_delete: :nullify - add_foreign_key "projects", "users", column: "marked_for_deletion_by_user_id", name: "fk_25d8780d11", on_delete: :nullify - add_foreign_key "prometheus_alert_events", "projects", on_delete: :cascade - add_foreign_key "prometheus_alert_events", "prometheus_alerts", on_delete: :cascade - 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 - add_foreign_key "prometheus_metrics", "projects", on_delete: :cascade - add_foreign_key "protected_branch_merge_access_levels", "namespaces", column: "group_id", name: "fk_98f3d044fe", on_delete: :cascade - add_foreign_key "protected_branch_merge_access_levels", "protected_branches", name: "fk_8a3072ccb3", on_delete: :cascade - add_foreign_key "protected_branch_merge_access_levels", "users" - add_foreign_key "protected_branch_push_access_levels", "namespaces", column: "group_id", name: "fk_7111b68cdb", on_delete: :cascade - add_foreign_key "protected_branch_push_access_levels", "protected_branches", name: "fk_9ffc86a3d9", on_delete: :cascade - add_foreign_key "protected_branch_push_access_levels", "users" - 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 - add_foreign_key "protected_branches", "projects", name: "fk_7a9c6d93e7", on_delete: :cascade - 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 - add_foreign_key "protected_tag_create_access_levels", "namespaces", column: "group_id", name: "fk_b4eb82fe3c", on_delete: :cascade - add_foreign_key "protected_tag_create_access_levels", "protected_tags", name: "fk_f7dfda8c51", on_delete: :cascade - add_foreign_key "protected_tag_create_access_levels", "users" - add_foreign_key "protected_tags", "projects", name: "fk_8e4af87648", on_delete: :cascade - add_foreign_key "push_event_payloads", "events", name: "fk_36c74129da", on_delete: :cascade - add_foreign_key "push_rules", "projects", name: "fk_83b29894de", on_delete: :cascade - add_foreign_key "release_links", "releases", on_delete: :cascade - add_foreign_key "releases", "projects", name: "fk_47fe2a0596", on_delete: :cascade - add_foreign_key "releases", "users", column: "author_id", name: "fk_8e4456f90f", on_delete: :nullify - add_foreign_key "remote_mirrors", "projects", name: "fk_43a9aa4ca8", on_delete: :cascade - add_foreign_key "repository_languages", "projects", on_delete: :cascade - add_foreign_key "requirements", "projects", on_delete: :cascade - add_foreign_key "requirements", "users", column: "author_id", on_delete: :nullify - add_foreign_key "resource_label_events", "epics", on_delete: :cascade - 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 - add_foreign_key "resource_milestone_events", "issues", on_delete: :cascade - add_foreign_key "resource_milestone_events", "merge_requests", on_delete: :cascade - add_foreign_key "resource_milestone_events", "milestones", on_delete: :cascade - add_foreign_key "resource_milestone_events", "users", on_delete: :nullify - add_foreign_key "resource_weight_events", "issues", on_delete: :cascade - add_foreign_key "resource_weight_events", "users", on_delete: :nullify - 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 - add_foreign_key "saml_providers", "namespaces", column: "group_id", on_delete: :cascade - add_foreign_key "scim_identities", "namespaces", column: "group_id", on_delete: :cascade - add_foreign_key "scim_identities", "users", on_delete: :cascade - add_foreign_key "scim_oauth_access_tokens", "namespaces", column: "group_id", on_delete: :cascade - add_foreign_key "security_scans", "ci_builds", column: "build_id", on_delete: :cascade - add_foreign_key "self_managed_prometheus_alert_events", "environments", on_delete: :cascade - add_foreign_key "self_managed_prometheus_alert_events", "projects", on_delete: :cascade - add_foreign_key "sentry_issues", "issues", on_delete: :cascade - 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 - add_foreign_key "service_desk_settings", "projects", on_delete: :cascade - add_foreign_key "services", "projects", name: "fk_71cce407f9", on_delete: :cascade - add_foreign_key "slack_integrations", "services", on_delete: :cascade - add_foreign_key "smartcard_identities", "users", on_delete: :cascade - add_foreign_key "snippet_repositories", "shards", on_delete: :restrict - add_foreign_key "snippet_repositories", "snippets", on_delete: :cascade - add_foreign_key "snippet_user_mentions", "notes", on_delete: :cascade - add_foreign_key "snippet_user_mentions", "snippets", on_delete: :cascade - add_foreign_key "snippets", "projects", name: "fk_be41fd4bb7", on_delete: :cascade - add_foreign_key "software_license_policies", "projects", on_delete: :cascade - add_foreign_key "software_license_policies", "software_licenses", on_delete: :cascade - add_foreign_key "status_page_settings", "projects", on_delete: :cascade - add_foreign_key "subscriptions", "projects", on_delete: :cascade - add_foreign_key "suggestions", "notes", on_delete: :cascade - add_foreign_key "system_note_metadata", "description_versions", name: "fk_fbd87415c9", on_delete: :nullify - add_foreign_key "system_note_metadata", "notes", name: "fk_d83a918cb1", on_delete: :cascade - add_foreign_key "term_agreements", "application_setting_terms", column: "term_id" - add_foreign_key "term_agreements", "users", on_delete: :cascade - 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 - add_foreign_key "todos", "namespaces", column: "group_id", on_delete: :cascade - add_foreign_key "todos", "notes", name: "fk_91d1f47b13", on_delete: :cascade - add_foreign_key "todos", "projects", name: "fk_45054f9c45", on_delete: :cascade - 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 - add_foreign_key "trending_projects", "projects", on_delete: :cascade - add_foreign_key "u2f_registrations", "users" - add_foreign_key "user_callouts", "users", on_delete: :cascade - add_foreign_key "user_custom_attributes", "users", on_delete: :cascade - add_foreign_key "user_details", "users", on_delete: :cascade - add_foreign_key "user_highest_roles", "users", on_delete: :cascade - 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 - add_foreign_key "user_preferences", "users", on_delete: :cascade - add_foreign_key "user_statuses", "users", on_delete: :cascade - add_foreign_key "user_synced_attributes_metadata", "users", on_delete: :cascade - add_foreign_key "users", "application_setting_terms", column: "accepted_term_id", name: "fk_789cd90b35", on_delete: :cascade - add_foreign_key "users", "namespaces", column: "managing_group_id", name: "fk_a4b8fefe3e", on_delete: :nullify - add_foreign_key "users_ops_dashboard_projects", "projects", on_delete: :cascade - add_foreign_key "users_ops_dashboard_projects", "users", on_delete: :cascade - add_foreign_key "users_security_dashboard_projects", "projects", on_delete: :cascade - add_foreign_key "users_security_dashboard_projects", "users", on_delete: :cascade - add_foreign_key "users_star_projects", "projects", name: "fk_22cd27ddfc", on_delete: :cascade - 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: "confirmed_by_id", name: "fk_959d40ad0a", on_delete: :nullify - add_foreign_key "vulnerabilities", "users", column: "dismissed_by_id", name: "fk_725465b774", on_delete: :nullify - add_foreign_key "vulnerabilities", "users", column: "last_edited_by_id", name: "fk_1302949740", on_delete: :nullify - add_foreign_key "vulnerabilities", "users", column: "resolved_by_id", name: "fk_76bc5f5455", on_delete: :nullify - add_foreign_key "vulnerabilities", "users", column: "updated_by_id", name: "fk_7ac31eacb9", on_delete: :nullify - add_foreign_key "vulnerability_exports", "projects", on_delete: :cascade - add_foreign_key "vulnerability_exports", "users", column: "author_id", on_delete: :cascade - add_foreign_key "vulnerability_feedback", "ci_pipelines", column: "pipeline_id", on_delete: :nullify - add_foreign_key "vulnerability_feedback", "issues", on_delete: :nullify - add_foreign_key "vulnerability_feedback", "merge_requests", name: "fk_563ff1912e", on_delete: :nullify - add_foreign_key "vulnerability_feedback", "projects", on_delete: :cascade - add_foreign_key "vulnerability_feedback", "users", column: "author_id", on_delete: :cascade - add_foreign_key "vulnerability_feedback", "users", column: "comment_author_id", name: "fk_94f7c8a81e", on_delete: :nullify - add_foreign_key "vulnerability_identifiers", "projects", on_delete: :cascade - add_foreign_key "vulnerability_issue_links", "issues", on_delete: :cascade - add_foreign_key "vulnerability_issue_links", "vulnerabilities", on_delete: :cascade - add_foreign_key "vulnerability_occurrence_identifiers", "vulnerability_identifiers", column: "identifier_id", on_delete: :cascade - add_foreign_key "vulnerability_occurrence_identifiers", "vulnerability_occurrences", column: "occurrence_id", on_delete: :cascade - add_foreign_key "vulnerability_occurrence_pipelines", "ci_pipelines", column: "pipeline_id", on_delete: :cascade - add_foreign_key "vulnerability_occurrence_pipelines", "vulnerability_occurrences", column: "occurrence_id", on_delete: :cascade - add_foreign_key "vulnerability_occurrences", "projects", on_delete: :cascade - add_foreign_key "vulnerability_occurrences", "vulnerabilities", name: "fk_97ffe77653", on_delete: :nullify - add_foreign_key "vulnerability_occurrences", "vulnerability_identifiers", column: "primary_identifier_id", on_delete: :cascade - add_foreign_key "vulnerability_occurrences", "vulnerability_scanners", column: "scanner_id", on_delete: :cascade - add_foreign_key "vulnerability_scanners", "projects", on_delete: :cascade - add_foreign_key "web_hook_logs", "web_hooks", on_delete: :cascade - add_foreign_key "web_hooks", "projects", name: "fk_0c8ca6d9d1", on_delete: :cascade - add_foreign_key "wiki_page_meta", "projects", on_delete: :cascade - add_foreign_key "wiki_page_slugs", "wiki_page_meta", column: "wiki_page_meta_id", on_delete: :cascade - add_foreign_key "x509_certificates", "x509_issuers", on_delete: :cascade - add_foreign_key "x509_commit_signatures", "projects", on_delete: :cascade - add_foreign_key "x509_commit_signatures", "x509_certificates", on_delete: :cascade - add_foreign_key "zoom_meetings", "issues", on_delete: :cascade - add_foreign_key "zoom_meetings", "projects", on_delete: :cascade -end diff --git a/db/structure.sql b/db/structure.sql new file mode 100644 index 00000000000..2af6dcba3fd --- /dev/null +++ b/db/structure.sql @@ -0,0 +1,12712 @@ +SET search_path=public; + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + +CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA public; + +CREATE TABLE public.abuse_reports ( + id integer NOT NULL, + reporter_id integer, + user_id integer, + message text, + created_at timestamp without time zone, + updated_at timestamp without time zone, + message_html text, + cached_markdown_version integer +); + +CREATE SEQUENCE public.abuse_reports_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.abuse_reports_id_seq OWNED BY public.abuse_reports.id; + +CREATE TABLE public.alerts_service_data ( + id bigint NOT NULL, + service_id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + encrypted_token character varying(255), + encrypted_token_iv character varying(255) +); + +CREATE SEQUENCE public.alerts_service_data_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.alerts_service_data_id_seq OWNED BY public.alerts_service_data.id; + +CREATE TABLE public.allowed_email_domains ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + group_id integer NOT NULL, + domain character varying(255) NOT NULL +); + +CREATE SEQUENCE public.allowed_email_domains_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.allowed_email_domains_id_seq OWNED BY public.allowed_email_domains.id; + +CREATE TABLE public.analytics_cycle_analytics_group_stages ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + relative_position integer, + start_event_identifier integer NOT NULL, + end_event_identifier integer NOT NULL, + group_id bigint NOT NULL, + start_event_label_id bigint, + end_event_label_id bigint, + hidden boolean DEFAULT false NOT NULL, + custom boolean DEFAULT true NOT NULL, + name character varying(255) NOT NULL +); + +CREATE SEQUENCE public.analytics_cycle_analytics_group_stages_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.analytics_cycle_analytics_group_stages_id_seq OWNED BY public.analytics_cycle_analytics_group_stages.id; + +CREATE TABLE public.analytics_cycle_analytics_project_stages ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + relative_position integer, + start_event_identifier integer NOT NULL, + end_event_identifier integer NOT NULL, + project_id bigint NOT NULL, + start_event_label_id bigint, + end_event_label_id bigint, + hidden boolean DEFAULT false NOT NULL, + custom boolean DEFAULT true NOT NULL, + name character varying(255) NOT NULL +); + +CREATE SEQUENCE public.analytics_cycle_analytics_project_stages_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.analytics_cycle_analytics_project_stages_id_seq OWNED BY public.analytics_cycle_analytics_project_stages.id; + +CREATE TABLE public.analytics_language_trend_repository_languages ( + file_count integer DEFAULT 0 NOT NULL, + programming_language_id bigint NOT NULL, + project_id bigint NOT NULL, + loc integer DEFAULT 0 NOT NULL, + bytes integer DEFAULT 0 NOT NULL, + percentage smallint DEFAULT 0 NOT NULL, + snapshot_date date NOT NULL +); + +CREATE TABLE public.appearances ( + id integer NOT NULL, + title character varying NOT NULL, + description text NOT NULL, + logo character varying, + updated_by integer, + header_logo character varying, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + description_html text, + cached_markdown_version integer, + new_project_guidelines text, + new_project_guidelines_html text, + header_message text, + header_message_html text, + footer_message text, + footer_message_html text, + message_background_color text, + message_font_color text, + favicon character varying, + email_header_and_footer_enabled boolean DEFAULT false NOT NULL +); + +CREATE SEQUENCE public.appearances_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.appearances_id_seq OWNED BY public.appearances.id; + +CREATE TABLE public.application_setting_terms ( + id integer NOT NULL, + cached_markdown_version integer, + terms text NOT NULL, + terms_html text +); + +CREATE SEQUENCE public.application_setting_terms_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.application_setting_terms_id_seq OWNED BY public.application_setting_terms.id; + +CREATE TABLE public.application_settings ( + id integer NOT NULL, + default_projects_limit integer, + signup_enabled boolean, + gravatar_enabled boolean, + sign_in_text text, + created_at timestamp without time zone, + updated_at timestamp without time zone, + home_page_url character varying, + default_branch_protection integer DEFAULT 2, + help_text text, + restricted_visibility_levels text, + version_check_enabled boolean DEFAULT true, + max_attachment_size integer DEFAULT 10 NOT NULL, + default_project_visibility integer DEFAULT 0 NOT NULL, + default_snippet_visibility integer DEFAULT 0 NOT NULL, + domain_whitelist text, + user_oauth_applications boolean DEFAULT true, + after_sign_out_path character varying, + session_expire_delay integer DEFAULT 10080 NOT NULL, + import_sources text, + help_page_text text, + admin_notification_email character varying, + shared_runners_enabled boolean DEFAULT true NOT NULL, + max_artifacts_size integer DEFAULT 100 NOT NULL, + runners_registration_token character varying, + max_pages_size integer DEFAULT 100 NOT NULL, + require_two_factor_authentication boolean DEFAULT false, + two_factor_grace_period integer DEFAULT 48, + metrics_enabled boolean DEFAULT false, + metrics_host character varying DEFAULT 'localhost'::character varying, + metrics_pool_size integer DEFAULT 16, + metrics_timeout integer DEFAULT 10, + metrics_method_call_threshold integer DEFAULT 10, + recaptcha_enabled boolean DEFAULT false, + metrics_port integer DEFAULT 8089, + akismet_enabled boolean DEFAULT false, + metrics_sample_interval integer DEFAULT 15, + email_author_in_body boolean DEFAULT false, + default_group_visibility integer, + repository_checks_enabled boolean DEFAULT false, + shared_runners_text text, + metrics_packet_size integer DEFAULT 1, + disabled_oauth_sign_in_sources text, + health_check_access_token character varying, + send_user_confirmation_email boolean DEFAULT false, + container_registry_token_expire_delay integer DEFAULT 5, + after_sign_up_text text, + user_default_external boolean DEFAULT false NOT NULL, + elasticsearch_indexing boolean DEFAULT false NOT NULL, + elasticsearch_search boolean DEFAULT false NOT NULL, + repository_storages character varying DEFAULT 'default'::character varying, + enabled_git_access_protocol character varying, + domain_blacklist_enabled boolean DEFAULT false, + domain_blacklist text, + usage_ping_enabled boolean DEFAULT true NOT NULL, + sign_in_text_html text, + help_page_text_html text, + shared_runners_text_html text, + after_sign_up_text_html text, + rsa_key_restriction integer DEFAULT 0 NOT NULL, + dsa_key_restriction integer DEFAULT '-1'::integer NOT NULL, + ecdsa_key_restriction integer DEFAULT 0 NOT NULL, + ed25519_key_restriction integer DEFAULT 0 NOT NULL, + housekeeping_enabled boolean DEFAULT true NOT NULL, + housekeeping_bitmaps_enabled boolean DEFAULT true NOT NULL, + housekeeping_incremental_repack_period integer DEFAULT 10 NOT NULL, + housekeeping_full_repack_period integer DEFAULT 50 NOT NULL, + housekeeping_gc_period integer DEFAULT 200 NOT NULL, + html_emails_enabled boolean DEFAULT true, + plantuml_url character varying, + plantuml_enabled boolean, + shared_runners_minutes integer DEFAULT 0 NOT NULL, + repository_size_limit bigint DEFAULT 0, + terminal_max_session_time integer DEFAULT 0 NOT NULL, + unique_ips_limit_per_user integer, + unique_ips_limit_time_window integer, + unique_ips_limit_enabled boolean DEFAULT false NOT NULL, + default_artifacts_expire_in character varying DEFAULT '0'::character varying NOT NULL, + elasticsearch_url character varying DEFAULT 'http://localhost:9200'::character varying, + elasticsearch_aws boolean DEFAULT false NOT NULL, + elasticsearch_aws_region character varying DEFAULT 'us-east-1'::character varying, + elasticsearch_aws_access_key character varying, + geo_status_timeout integer DEFAULT 10, + uuid character varying, + polling_interval_multiplier numeric DEFAULT 1.0 NOT NULL, + elasticsearch_experimental_indexer boolean, + cached_markdown_version integer, + check_namespace_plan boolean DEFAULT false NOT NULL, + mirror_max_delay integer DEFAULT 300 NOT NULL, + mirror_max_capacity integer DEFAULT 100 NOT NULL, + mirror_capacity_threshold integer DEFAULT 50 NOT NULL, + prometheus_metrics_enabled boolean DEFAULT true NOT NULL, + authorized_keys_enabled boolean DEFAULT true NOT NULL, + help_page_hide_commercial_content boolean DEFAULT false, + help_page_support_url character varying, + slack_app_enabled boolean DEFAULT false, + slack_app_id character varying, + performance_bar_allowed_group_id integer, + allow_group_owners_to_manage_ldap boolean DEFAULT true NOT NULL, + hashed_storage_enabled boolean DEFAULT true NOT NULL, + project_export_enabled boolean DEFAULT true NOT NULL, + auto_devops_enabled boolean DEFAULT true NOT NULL, + throttle_unauthenticated_enabled boolean DEFAULT false NOT NULL, + throttle_unauthenticated_requests_per_period integer DEFAULT 3600 NOT NULL, + throttle_unauthenticated_period_in_seconds integer DEFAULT 3600 NOT NULL, + throttle_authenticated_api_enabled boolean DEFAULT false NOT NULL, + throttle_authenticated_api_requests_per_period integer DEFAULT 7200 NOT NULL, + throttle_authenticated_api_period_in_seconds integer DEFAULT 3600 NOT NULL, + throttle_authenticated_web_enabled boolean DEFAULT false NOT NULL, + throttle_authenticated_web_requests_per_period integer DEFAULT 7200 NOT NULL, + throttle_authenticated_web_period_in_seconds integer DEFAULT 3600 NOT NULL, + gitaly_timeout_default integer DEFAULT 55 NOT NULL, + gitaly_timeout_medium integer DEFAULT 30 NOT NULL, + gitaly_timeout_fast integer DEFAULT 10 NOT NULL, + mirror_available boolean DEFAULT true NOT NULL, + password_authentication_enabled_for_web boolean, + password_authentication_enabled_for_git boolean DEFAULT true NOT NULL, + auto_devops_domain character varying, + external_authorization_service_enabled boolean DEFAULT false NOT NULL, + external_authorization_service_url character varying, + external_authorization_service_default_label character varying, + pages_domain_verification_enabled boolean DEFAULT true NOT NULL, + user_default_internal_regex character varying, + external_authorization_service_timeout double precision DEFAULT 0.5, + external_auth_client_cert text, + encrypted_external_auth_client_key text, + encrypted_external_auth_client_key_iv character varying, + encrypted_external_auth_client_key_pass character varying, + encrypted_external_auth_client_key_pass_iv character varying, + email_additional_text character varying, + enforce_terms boolean DEFAULT false, + file_template_project_id integer, + pseudonymizer_enabled boolean DEFAULT false NOT NULL, + hide_third_party_offers boolean DEFAULT false NOT NULL, + snowplow_enabled boolean DEFAULT false NOT NULL, + snowplow_collector_hostname character varying, + snowplow_cookie_domain character varying, + instance_statistics_visibility_private boolean DEFAULT false NOT NULL, + web_ide_clientside_preview_enabled boolean DEFAULT false NOT NULL, + user_show_add_ssh_key_message boolean DEFAULT true NOT NULL, + custom_project_templates_group_id integer, + usage_stats_set_by_user_id integer, + receive_max_input_size integer, + diff_max_patch_bytes integer DEFAULT 102400 NOT NULL, + archive_builds_in_seconds integer, + commit_email_hostname character varying, + protected_ci_variables boolean DEFAULT false NOT NULL, + runners_registration_token_encrypted character varying, + local_markdown_version integer DEFAULT 0 NOT NULL, + first_day_of_week integer DEFAULT 0 NOT NULL, + elasticsearch_limit_indexing boolean DEFAULT false NOT NULL, + default_project_creation integer DEFAULT 2 NOT NULL, + lets_encrypt_notification_email character varying, + lets_encrypt_terms_of_service_accepted boolean DEFAULT false NOT NULL, + geo_node_allowed_ips character varying DEFAULT '0.0.0.0/0, ::/0'::character varying, + elasticsearch_shards integer DEFAULT 5 NOT NULL, + elasticsearch_replicas integer DEFAULT 1 NOT NULL, + encrypted_lets_encrypt_private_key text, + encrypted_lets_encrypt_private_key_iv text, + required_instance_ci_template character varying, + dns_rebinding_protection_enabled boolean DEFAULT true NOT NULL, + default_project_deletion_protection boolean DEFAULT false NOT NULL, + grafana_enabled boolean DEFAULT false NOT NULL, + lock_memberships_to_ldap boolean DEFAULT false NOT NULL, + time_tracking_limit_to_hours boolean DEFAULT false NOT NULL, + grafana_url character varying DEFAULT '/-/grafana'::character varying NOT NULL, + login_recaptcha_protection_enabled boolean DEFAULT false NOT NULL, + outbound_local_requests_whitelist character varying(255)[] DEFAULT '{}'::character varying[] NOT NULL, + raw_blob_request_limit integer DEFAULT 300 NOT NULL, + allow_local_requests_from_web_hooks_and_services boolean DEFAULT false NOT NULL, + allow_local_requests_from_system_hooks boolean DEFAULT true NOT NULL, + instance_administration_project_id bigint, + asset_proxy_enabled boolean DEFAULT false NOT NULL, + asset_proxy_url character varying, + asset_proxy_whitelist text, + encrypted_asset_proxy_secret_key text, + encrypted_asset_proxy_secret_key_iv character varying, + static_objects_external_storage_url character varying(255), + static_objects_external_storage_auth_token character varying(255), + max_personal_access_token_lifetime integer, + throttle_protected_paths_enabled boolean DEFAULT false NOT NULL, + throttle_protected_paths_requests_per_period integer DEFAULT 10 NOT NULL, + throttle_protected_paths_period_in_seconds integer DEFAULT 60 NOT NULL, + protected_paths character varying(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}'::character varying[], + throttle_incident_management_notification_enabled boolean DEFAULT false NOT NULL, + throttle_incident_management_notification_period_in_seconds integer DEFAULT 3600, + throttle_incident_management_notification_per_period integer DEFAULT 3600, + snowplow_iglu_registry_url character varying(255), + push_event_hooks_limit integer DEFAULT 3 NOT NULL, + push_event_activities_limit integer DEFAULT 3 NOT NULL, + custom_http_clone_url_root character varying(511), + deletion_adjourned_period integer DEFAULT 7 NOT NULL, + license_trial_ends_on date, + eks_integration_enabled boolean DEFAULT false NOT NULL, + eks_account_id character varying(128), + eks_access_key_id character varying(128), + encrypted_eks_secret_access_key_iv character varying(255), + encrypted_eks_secret_access_key text, + snowplow_app_id character varying, + productivity_analytics_start_date timestamp with time zone, + default_ci_config_path character varying(255), + sourcegraph_enabled boolean DEFAULT false NOT NULL, + sourcegraph_url character varying(255), + sourcegraph_public_only boolean DEFAULT true NOT NULL, + snippet_size_limit bigint DEFAULT 52428800 NOT NULL, + minimum_password_length integer DEFAULT 8 NOT NULL, + encrypted_akismet_api_key text, + encrypted_akismet_api_key_iv character varying(255), + encrypted_elasticsearch_aws_secret_access_key text, + encrypted_elasticsearch_aws_secret_access_key_iv character varying(255), + encrypted_recaptcha_private_key text, + encrypted_recaptcha_private_key_iv character varying(255), + encrypted_recaptcha_site_key text, + encrypted_recaptcha_site_key_iv character varying(255), + encrypted_slack_app_secret text, + encrypted_slack_app_secret_iv character varying(255), + encrypted_slack_app_verification_token text, + encrypted_slack_app_verification_token_iv character varying(255), + force_pages_access_control boolean DEFAULT false NOT NULL, + updating_name_disabled_for_users boolean DEFAULT false NOT NULL, + instance_administrators_group_id integer, + elasticsearch_indexed_field_length_limit integer DEFAULT 0 NOT NULL, + elasticsearch_max_bulk_size_mb smallint DEFAULT 10 NOT NULL, + elasticsearch_max_bulk_concurrency smallint DEFAULT 10 NOT NULL, + disable_overriding_approvers_per_merge_request boolean DEFAULT false NOT NULL, + prevent_merge_requests_author_approval boolean DEFAULT false NOT NULL, + prevent_merge_requests_committers_approval boolean DEFAULT false NOT NULL, + email_restrictions_enabled boolean DEFAULT false NOT NULL, + email_restrictions text, + npm_package_requests_forwarding boolean DEFAULT true NOT NULL +); + +CREATE SEQUENCE public.application_settings_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.application_settings_id_seq OWNED BY public.application_settings.id; + +CREATE TABLE public.approval_merge_request_rule_sources ( + id bigint NOT NULL, + approval_merge_request_rule_id bigint NOT NULL, + approval_project_rule_id bigint NOT NULL +); + +CREATE SEQUENCE public.approval_merge_request_rule_sources_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.approval_merge_request_rule_sources_id_seq OWNED BY public.approval_merge_request_rule_sources.id; + +CREATE TABLE public.approval_merge_request_rules ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + merge_request_id integer NOT NULL, + approvals_required smallint DEFAULT 0 NOT NULL, + code_owner boolean DEFAULT false NOT NULL, + name character varying NOT NULL, + rule_type smallint DEFAULT 1 NOT NULL, + report_type smallint +); + +CREATE TABLE public.approval_merge_request_rules_approved_approvers ( + id bigint NOT NULL, + approval_merge_request_rule_id bigint NOT NULL, + user_id integer NOT NULL +); + +CREATE SEQUENCE public.approval_merge_request_rules_approved_approvers_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.approval_merge_request_rules_approved_approvers_id_seq OWNED BY public.approval_merge_request_rules_approved_approvers.id; + +CREATE TABLE public.approval_merge_request_rules_groups ( + id bigint NOT NULL, + approval_merge_request_rule_id bigint NOT NULL, + group_id integer NOT NULL +); + +CREATE SEQUENCE public.approval_merge_request_rules_groups_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.approval_merge_request_rules_groups_id_seq OWNED BY public.approval_merge_request_rules_groups.id; + +CREATE SEQUENCE public.approval_merge_request_rules_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.approval_merge_request_rules_id_seq OWNED BY public.approval_merge_request_rules.id; + +CREATE TABLE public.approval_merge_request_rules_users ( + id bigint NOT NULL, + approval_merge_request_rule_id bigint NOT NULL, + user_id integer NOT NULL +); + +CREATE SEQUENCE public.approval_merge_request_rules_users_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.approval_merge_request_rules_users_id_seq OWNED BY public.approval_merge_request_rules_users.id; + +CREATE TABLE public.approval_project_rules ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + project_id integer NOT NULL, + approvals_required smallint DEFAULT 0 NOT NULL, + name character varying NOT NULL, + rule_type smallint DEFAULT 0 NOT NULL +); + +CREATE TABLE public.approval_project_rules_groups ( + id bigint NOT NULL, + approval_project_rule_id bigint NOT NULL, + group_id integer NOT NULL +); + +CREATE SEQUENCE public.approval_project_rules_groups_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.approval_project_rules_groups_id_seq OWNED BY public.approval_project_rules_groups.id; + +CREATE SEQUENCE public.approval_project_rules_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.approval_project_rules_id_seq OWNED BY public.approval_project_rules.id; + +CREATE TABLE public.approval_project_rules_protected_branches ( + approval_project_rule_id bigint NOT NULL, + protected_branch_id bigint NOT NULL +); + +CREATE TABLE public.approval_project_rules_users ( + id bigint NOT NULL, + approval_project_rule_id bigint NOT NULL, + user_id integer NOT NULL +); + +CREATE SEQUENCE public.approval_project_rules_users_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.approval_project_rules_users_id_seq OWNED BY public.approval_project_rules_users.id; + +CREATE TABLE public.approvals ( + id integer NOT NULL, + merge_request_id integer NOT NULL, + user_id integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone +); + +CREATE SEQUENCE public.approvals_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.approvals_id_seq OWNED BY public.approvals.id; + +CREATE TABLE public.approver_groups ( + id integer NOT NULL, + target_id integer NOT NULL, + target_type character varying NOT NULL, + group_id integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone +); + +CREATE SEQUENCE public.approver_groups_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.approver_groups_id_seq OWNED BY public.approver_groups.id; + +CREATE TABLE public.approvers ( + id integer NOT NULL, + target_id integer NOT NULL, + target_type character varying, + user_id integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone +); + +CREATE SEQUENCE public.approvers_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.approvers_id_seq OWNED BY public.approvers.id; + +CREATE TABLE public.ar_internal_metadata ( + key character varying NOT NULL, + value character varying, + created_at timestamp(6) without time zone NOT NULL, + updated_at timestamp(6) without time zone NOT NULL +); + +CREATE TABLE public.audit_events ( + id integer NOT NULL, + author_id integer NOT NULL, + type character varying NOT NULL, + entity_id integer NOT NULL, + entity_type character varying NOT NULL, + details text, + created_at timestamp without time zone, + updated_at timestamp without time zone +); + +CREATE SEQUENCE public.audit_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.audit_events_id_seq OWNED BY public.audit_events.id; + +CREATE TABLE public.award_emoji ( + id integer NOT NULL, + name character varying, + user_id integer, + awardable_id integer, + awardable_type character varying, + created_at timestamp without time zone, + updated_at timestamp without time zone +); + +CREATE SEQUENCE public.award_emoji_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.award_emoji_id_seq OWNED BY public.award_emoji.id; + +CREATE TABLE public.aws_roles ( + user_id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + role_arn character varying(2048) NOT NULL, + role_external_id character varying(64) NOT NULL +); + +CREATE TABLE public.badges ( + id integer NOT NULL, + link_url character varying NOT NULL, + image_url character varying NOT NULL, + project_id integer, + group_id integer, + type character varying NOT NULL, + name character varying(255), + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL +); + +CREATE SEQUENCE public.badges_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.badges_id_seq OWNED BY public.badges.id; + +CREATE TABLE public.board_assignees ( + id integer NOT NULL, + board_id integer NOT NULL, + assignee_id integer NOT NULL +); + +CREATE SEQUENCE public.board_assignees_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.board_assignees_id_seq OWNED BY public.board_assignees.id; + +CREATE TABLE public.board_group_recent_visits ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + user_id integer, + board_id integer, + group_id integer +); + +CREATE SEQUENCE public.board_group_recent_visits_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.board_group_recent_visits_id_seq OWNED BY public.board_group_recent_visits.id; + +CREATE TABLE public.board_labels ( + id integer NOT NULL, + board_id integer NOT NULL, + label_id integer NOT NULL +); + +CREATE SEQUENCE public.board_labels_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.board_labels_id_seq OWNED BY public.board_labels.id; + +CREATE TABLE public.board_project_recent_visits ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + user_id integer, + project_id integer, + board_id integer +); + +CREATE SEQUENCE public.board_project_recent_visits_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.board_project_recent_visits_id_seq OWNED BY public.board_project_recent_visits.id; + +CREATE TABLE public.boards ( + id integer NOT NULL, + project_id integer, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + name character varying DEFAULT 'Development'::character varying NOT NULL, + milestone_id integer, + group_id integer, + weight integer +); + +CREATE SEQUENCE public.boards_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.boards_id_seq OWNED BY public.boards.id; + +CREATE TABLE public.broadcast_messages ( + id integer NOT NULL, + message text NOT NULL, + starts_at timestamp without time zone NOT NULL, + ends_at timestamp without time zone NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + color character varying, + font character varying, + message_html text NOT NULL, + cached_markdown_version integer, + target_path character varying(255), + broadcast_type smallint DEFAULT 1 NOT NULL, + dismissable boolean +); + +CREATE SEQUENCE public.broadcast_messages_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.broadcast_messages_id_seq OWNED BY public.broadcast_messages.id; + +CREATE TABLE public.chat_names ( + id integer NOT NULL, + user_id integer NOT NULL, + service_id integer NOT NULL, + team_id character varying NOT NULL, + team_domain character varying, + chat_id character varying NOT NULL, + chat_name character varying, + last_used_at timestamp without time zone, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL +); + +CREATE SEQUENCE public.chat_names_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.chat_names_id_seq OWNED BY public.chat_names.id; + +CREATE TABLE public.chat_teams ( + id integer NOT NULL, + namespace_id integer NOT NULL, + team_id character varying, + name character varying, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL +); + +CREATE SEQUENCE public.chat_teams_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.chat_teams_id_seq OWNED BY public.chat_teams.id; + +CREATE TABLE public.ci_build_needs ( + id integer NOT NULL, + build_id integer NOT NULL, + name text NOT NULL, + artifacts boolean DEFAULT true NOT NULL +); + +CREATE SEQUENCE public.ci_build_needs_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_build_needs_id_seq OWNED BY public.ci_build_needs.id; + +CREATE TABLE public.ci_build_trace_chunks ( + id bigint NOT NULL, + build_id integer NOT NULL, + chunk_index integer NOT NULL, + data_store integer NOT NULL, + raw_data bytea +); + +CREATE SEQUENCE public.ci_build_trace_chunks_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_build_trace_chunks_id_seq OWNED BY public.ci_build_trace_chunks.id; + +CREATE TABLE public.ci_build_trace_section_names ( + id integer NOT NULL, + project_id integer NOT NULL, + name character varying NOT NULL +); + +CREATE SEQUENCE public.ci_build_trace_section_names_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_build_trace_section_names_id_seq OWNED BY public.ci_build_trace_section_names.id; + +CREATE TABLE public.ci_build_trace_sections ( + project_id integer NOT NULL, + date_start timestamp without time zone NOT NULL, + date_end timestamp without time zone NOT NULL, + byte_start bigint NOT NULL, + byte_end bigint NOT NULL, + build_id integer NOT NULL, + section_name_id integer NOT NULL +); + +CREATE TABLE public.ci_builds ( + id integer NOT NULL, + status character varying, + finished_at timestamp without time zone, + trace text, + created_at timestamp without time zone, + updated_at timestamp without time zone, + started_at timestamp without time zone, + runner_id integer, + coverage double precision, + commit_id integer, + commands text, + name character varying, + options text, + allow_failure boolean DEFAULT false NOT NULL, + stage character varying, + trigger_request_id integer, + stage_idx integer, + tag boolean, + ref character varying, + user_id integer, + type character varying, + target_url character varying, + description character varying, + artifacts_file text, + project_id integer, + artifacts_metadata text, + erased_by_id integer, + erased_at timestamp without time zone, + artifacts_expire_at timestamp without time zone, + environment character varying, + artifacts_size bigint, + "when" character varying, + yaml_variables text, + queued_at timestamp without time zone, + token character varying, + lock_version integer DEFAULT 0, + coverage_regex character varying, + auto_canceled_by_id integer, + retried boolean, + stage_id integer, + artifacts_file_store integer, + artifacts_metadata_store integer, + protected boolean, + failure_reason integer, + scheduled_at timestamp with time zone, + token_encrypted character varying, + upstream_pipeline_id integer, + resource_group_id bigint, + waiting_for_resource_at timestamp with time zone, + processed boolean, + scheduling_type smallint +); + +CREATE SEQUENCE public.ci_builds_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_builds_id_seq OWNED BY public.ci_builds.id; + +CREATE TABLE public.ci_builds_metadata ( + id integer NOT NULL, + build_id integer NOT NULL, + project_id integer NOT NULL, + timeout integer, + timeout_source integer DEFAULT 1 NOT NULL, + interruptible boolean, + config_options jsonb, + config_variables jsonb, + has_exposed_artifacts boolean, + environment_auto_stop_in character varying(255), + expanded_environment_name character varying(255) +); + +CREATE SEQUENCE public.ci_builds_metadata_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_builds_metadata_id_seq OWNED BY public.ci_builds_metadata.id; + +CREATE TABLE public.ci_builds_runner_session ( + id bigint NOT NULL, + build_id integer NOT NULL, + url character varying NOT NULL, + certificate character varying, + "authorization" character varying +); + +CREATE SEQUENCE public.ci_builds_runner_session_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_builds_runner_session_id_seq OWNED BY public.ci_builds_runner_session.id; + +CREATE TABLE public.ci_daily_report_results ( + id bigint NOT NULL, + date date NOT NULL, + project_id bigint NOT NULL, + last_pipeline_id bigint NOT NULL, + value double precision NOT NULL, + param_type bigint NOT NULL, + ref_path character varying NOT NULL, + title character varying NOT NULL +); + +CREATE SEQUENCE public.ci_daily_report_results_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_daily_report_results_id_seq OWNED BY public.ci_daily_report_results.id; + +CREATE TABLE public.ci_group_variables ( + id integer NOT NULL, + key character varying NOT NULL, + value text, + encrypted_value text, + encrypted_value_salt character varying, + encrypted_value_iv character varying, + group_id integer NOT NULL, + protected boolean DEFAULT false NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + masked boolean DEFAULT false NOT NULL, + variable_type smallint DEFAULT 1 NOT NULL +); + +CREATE SEQUENCE public.ci_group_variables_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_group_variables_id_seq OWNED BY public.ci_group_variables.id; + +CREATE TABLE public.ci_job_artifacts ( + id integer NOT NULL, + project_id integer NOT NULL, + job_id integer NOT NULL, + file_type integer NOT NULL, + size bigint, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + expire_at timestamp with time zone, + file character varying, + file_store integer, + file_sha256 bytea, + file_format smallint, + file_location smallint +); + +CREATE SEQUENCE public.ci_job_artifacts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_job_artifacts_id_seq OWNED BY public.ci_job_artifacts.id; + +CREATE TABLE public.ci_job_variables ( + id bigint NOT NULL, + key character varying NOT NULL, + encrypted_value text, + encrypted_value_iv character varying, + job_id bigint NOT NULL, + variable_type smallint DEFAULT 1 NOT NULL, + source smallint DEFAULT 0 NOT NULL +); + +CREATE SEQUENCE public.ci_job_variables_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_job_variables_id_seq OWNED BY public.ci_job_variables.id; + +CREATE TABLE public.ci_pipeline_chat_data ( + id bigint NOT NULL, + pipeline_id integer NOT NULL, + chat_name_id integer NOT NULL, + response_url text NOT NULL +); + +CREATE SEQUENCE public.ci_pipeline_chat_data_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_pipeline_chat_data_id_seq OWNED BY public.ci_pipeline_chat_data.id; + +CREATE TABLE public.ci_pipeline_schedule_variables ( + id integer NOT NULL, + key character varying NOT NULL, + value text, + encrypted_value text, + encrypted_value_salt character varying, + encrypted_value_iv character varying, + pipeline_schedule_id integer NOT NULL, + created_at timestamp with time zone, + updated_at timestamp with time zone, + variable_type smallint DEFAULT 1 NOT NULL +); + +CREATE SEQUENCE public.ci_pipeline_schedule_variables_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_pipeline_schedule_variables_id_seq OWNED BY public.ci_pipeline_schedule_variables.id; + +CREATE TABLE public.ci_pipeline_schedules ( + id integer NOT NULL, + description character varying, + ref character varying, + cron character varying, + cron_timezone character varying, + next_run_at timestamp without time zone, + project_id integer, + owner_id integer, + active boolean DEFAULT true, + created_at timestamp without time zone, + updated_at timestamp without time zone +); + +CREATE SEQUENCE public.ci_pipeline_schedules_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_pipeline_schedules_id_seq OWNED BY public.ci_pipeline_schedules.id; + +CREATE TABLE public.ci_pipeline_variables ( + id integer NOT NULL, + key character varying NOT NULL, + value text, + encrypted_value text, + encrypted_value_salt character varying, + encrypted_value_iv character varying, + pipeline_id integer NOT NULL, + variable_type smallint DEFAULT 1 NOT NULL +); + +CREATE SEQUENCE public.ci_pipeline_variables_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_pipeline_variables_id_seq OWNED BY public.ci_pipeline_variables.id; + +CREATE TABLE public.ci_pipelines ( + id integer NOT NULL, + ref character varying, + sha character varying, + before_sha character varying, + created_at timestamp without time zone, + updated_at timestamp without time zone, + tag boolean DEFAULT false, + yaml_errors text, + committed_at timestamp without time zone, + project_id integer, + status character varying, + started_at timestamp without time zone, + finished_at timestamp without time zone, + duration integer, + user_id integer, + lock_version integer DEFAULT 0, + auto_canceled_by_id integer, + pipeline_schedule_id integer, + source integer, + config_source integer, + protected boolean, + failure_reason integer, + iid integer, + merge_request_id integer, + source_sha bytea, + target_sha bytea, + external_pull_request_id bigint +); + +CREATE TABLE public.ci_pipelines_config ( + pipeline_id bigint NOT NULL, + content text NOT NULL +); + +CREATE SEQUENCE public.ci_pipelines_config_pipeline_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_pipelines_config_pipeline_id_seq OWNED BY public.ci_pipelines_config.pipeline_id; + +CREATE SEQUENCE public.ci_pipelines_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_pipelines_id_seq OWNED BY public.ci_pipelines.id; + +CREATE TABLE public.ci_refs ( + id bigint NOT NULL, + project_id integer NOT NULL, + lock_version integer DEFAULT 0, + last_updated_by_pipeline_id integer, + tag boolean DEFAULT false NOT NULL, + ref character varying(255) NOT NULL, + status character varying(255) NOT NULL +); + +CREATE SEQUENCE public.ci_refs_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_refs_id_seq OWNED BY public.ci_refs.id; + +CREATE TABLE public.ci_resource_groups ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + project_id bigint NOT NULL, + key character varying(255) NOT NULL +); + +CREATE SEQUENCE public.ci_resource_groups_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_resource_groups_id_seq OWNED BY public.ci_resource_groups.id; + +CREATE TABLE public.ci_resources ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + resource_group_id bigint NOT NULL, + build_id bigint +); + +CREATE SEQUENCE public.ci_resources_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_resources_id_seq OWNED BY public.ci_resources.id; + +CREATE TABLE public.ci_runner_namespaces ( + id integer NOT NULL, + runner_id integer, + namespace_id integer +); + +CREATE SEQUENCE public.ci_runner_namespaces_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_runner_namespaces_id_seq OWNED BY public.ci_runner_namespaces.id; + +CREATE TABLE public.ci_runner_projects ( + id integer NOT NULL, + runner_id integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + project_id integer +); + +CREATE SEQUENCE public.ci_runner_projects_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_runner_projects_id_seq OWNED BY public.ci_runner_projects.id; + +CREATE TABLE public.ci_runners ( + id integer NOT NULL, + token character varying, + created_at timestamp without time zone, + updated_at timestamp without time zone, + description character varying, + contacted_at timestamp without time zone, + active boolean DEFAULT true NOT NULL, + is_shared boolean DEFAULT false, + name character varying, + version character varying, + revision character varying, + platform character varying, + architecture character varying, + run_untagged boolean DEFAULT true NOT NULL, + locked boolean DEFAULT false NOT NULL, + access_level integer DEFAULT 0 NOT NULL, + ip_address character varying, + maximum_timeout integer, + runner_type smallint NOT NULL, + token_encrypted character varying +); + +CREATE SEQUENCE public.ci_runners_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_runners_id_seq OWNED BY public.ci_runners.id; + +CREATE TABLE public.ci_sources_pipelines ( + id integer NOT NULL, + project_id integer, + pipeline_id integer, + source_project_id integer, + source_job_id integer, + source_pipeline_id integer +); + +CREATE SEQUENCE public.ci_sources_pipelines_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_sources_pipelines_id_seq OWNED BY public.ci_sources_pipelines.id; + +CREATE TABLE public.ci_sources_projects ( + id bigint NOT NULL, + pipeline_id bigint NOT NULL, + source_project_id bigint NOT NULL +); + +CREATE SEQUENCE public.ci_sources_projects_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_sources_projects_id_seq OWNED BY public.ci_sources_projects.id; + +CREATE TABLE public.ci_stages ( + id integer NOT NULL, + project_id integer, + pipeline_id integer, + created_at timestamp without time zone, + updated_at timestamp without time zone, + name character varying, + status integer, + lock_version integer DEFAULT 0, + "position" integer +); + +CREATE SEQUENCE public.ci_stages_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_stages_id_seq OWNED BY public.ci_stages.id; + +CREATE TABLE public.ci_subscriptions_projects ( + id bigint NOT NULL, + downstream_project_id bigint NOT NULL, + upstream_project_id bigint NOT NULL +); + +CREATE SEQUENCE public.ci_subscriptions_projects_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_subscriptions_projects_id_seq OWNED BY public.ci_subscriptions_projects.id; + +CREATE TABLE public.ci_trigger_requests ( + id integer NOT NULL, + trigger_id integer NOT NULL, + variables text, + created_at timestamp without time zone, + updated_at timestamp without time zone, + commit_id integer +); + +CREATE SEQUENCE public.ci_trigger_requests_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_trigger_requests_id_seq OWNED BY public.ci_trigger_requests.id; + +CREATE TABLE public.ci_triggers ( + id integer NOT NULL, + token character varying, + created_at timestamp without time zone, + updated_at timestamp without time zone, + project_id integer, + owner_id integer NOT NULL, + description character varying, + ref character varying +); + +CREATE SEQUENCE public.ci_triggers_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_triggers_id_seq OWNED BY public.ci_triggers.id; + +CREATE TABLE public.ci_variables ( + id integer NOT NULL, + key character varying NOT NULL, + value text, + encrypted_value text, + encrypted_value_salt character varying, + encrypted_value_iv character varying, + project_id integer NOT NULL, + protected boolean DEFAULT false NOT NULL, + environment_scope character varying DEFAULT '*'::character varying NOT NULL, + masked boolean DEFAULT false NOT NULL, + variable_type smallint DEFAULT 1 NOT NULL +); + +CREATE SEQUENCE public.ci_variables_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ci_variables_id_seq OWNED BY public.ci_variables.id; + +CREATE TABLE public.cluster_groups ( + id integer NOT NULL, + cluster_id integer NOT NULL, + group_id integer NOT NULL +); + +CREATE SEQUENCE public.cluster_groups_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.cluster_groups_id_seq OWNED BY public.cluster_groups.id; + +CREATE TABLE public.cluster_platforms_kubernetes ( + id integer NOT NULL, + cluster_id integer NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + api_url text, + ca_cert text, + namespace character varying, + username character varying, + encrypted_password text, + encrypted_password_iv character varying, + encrypted_token text, + encrypted_token_iv character varying, + authorization_type smallint +); + +CREATE SEQUENCE public.cluster_platforms_kubernetes_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.cluster_platforms_kubernetes_id_seq OWNED BY public.cluster_platforms_kubernetes.id; + +CREATE TABLE public.cluster_projects ( + id integer NOT NULL, + project_id integer NOT NULL, + cluster_id integer NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL +); + +CREATE SEQUENCE public.cluster_projects_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.cluster_projects_id_seq OWNED BY public.cluster_projects.id; + +CREATE TABLE public.cluster_providers_aws ( + id bigint NOT NULL, + cluster_id bigint NOT NULL, + created_by_user_id integer, + num_nodes integer NOT NULL, + status integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + key_name character varying(255) NOT NULL, + role_arn character varying(2048) NOT NULL, + region character varying(255) NOT NULL, + vpc_id character varying(255) NOT NULL, + subnet_ids character varying(255)[] DEFAULT '{}'::character varying[] NOT NULL, + security_group_id character varying(255) NOT NULL, + instance_type character varying(255) NOT NULL, + access_key_id character varying(255), + encrypted_secret_access_key_iv character varying(255), + encrypted_secret_access_key text, + session_token text, + status_reason text +); + +CREATE SEQUENCE public.cluster_providers_aws_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.cluster_providers_aws_id_seq OWNED BY public.cluster_providers_aws.id; + +CREATE TABLE public.cluster_providers_gcp ( + id integer NOT NULL, + cluster_id integer NOT NULL, + status integer, + num_nodes integer NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + status_reason text, + gcp_project_id character varying NOT NULL, + zone character varying NOT NULL, + machine_type character varying, + operation_id character varying, + endpoint character varying, + encrypted_access_token text, + encrypted_access_token_iv character varying, + legacy_abac boolean DEFAULT false NOT NULL, + cloud_run boolean DEFAULT false NOT NULL +); + +CREATE SEQUENCE public.cluster_providers_gcp_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.cluster_providers_gcp_id_seq OWNED BY public.cluster_providers_gcp.id; + +CREATE TABLE public.clusters ( + id integer NOT NULL, + user_id integer, + provider_type integer, + platform_type integer, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + enabled boolean DEFAULT true, + name character varying NOT NULL, + environment_scope character varying DEFAULT '*'::character varying NOT NULL, + cluster_type smallint DEFAULT 3 NOT NULL, + domain character varying, + managed boolean DEFAULT true NOT NULL, + namespace_per_environment boolean DEFAULT true NOT NULL, + management_project_id integer, + cleanup_status smallint DEFAULT 1 NOT NULL, + cleanup_status_reason text +); + +CREATE TABLE public.clusters_applications_cert_managers ( + id integer NOT NULL, + cluster_id integer NOT NULL, + status integer NOT NULL, + version character varying NOT NULL, + email character varying NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + status_reason text +); + +CREATE SEQUENCE public.clusters_applications_cert_managers_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.clusters_applications_cert_managers_id_seq OWNED BY public.clusters_applications_cert_managers.id; + +CREATE TABLE public.clusters_applications_crossplane ( + id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + cluster_id bigint NOT NULL, + status integer NOT NULL, + version character varying(255) NOT NULL, + stack character varying(255) NOT NULL, + status_reason text +); + +CREATE SEQUENCE public.clusters_applications_crossplane_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.clusters_applications_crossplane_id_seq OWNED BY public.clusters_applications_crossplane.id; + +CREATE TABLE public.clusters_applications_elastic_stacks ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + cluster_id bigint NOT NULL, + status integer NOT NULL, + version character varying(255) NOT NULL, + status_reason text +); + +CREATE SEQUENCE public.clusters_applications_elastic_stacks_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.clusters_applications_elastic_stacks_id_seq OWNED BY public.clusters_applications_elastic_stacks.id; + +CREATE TABLE public.clusters_applications_helm ( + id integer NOT NULL, + cluster_id integer NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + status integer NOT NULL, + version character varying NOT NULL, + status_reason text, + encrypted_ca_key text, + encrypted_ca_key_iv text, + ca_cert text +); + +CREATE SEQUENCE public.clusters_applications_helm_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.clusters_applications_helm_id_seq OWNED BY public.clusters_applications_helm.id; + +CREATE TABLE public.clusters_applications_ingress ( + id integer NOT NULL, + cluster_id integer NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + status integer NOT NULL, + ingress_type integer NOT NULL, + version character varying NOT NULL, + cluster_ip character varying, + status_reason text, + external_ip character varying, + external_hostname character varying, + modsecurity_enabled boolean, + modsecurity_mode smallint DEFAULT 0 NOT NULL +); + +CREATE SEQUENCE public.clusters_applications_ingress_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.clusters_applications_ingress_id_seq OWNED BY public.clusters_applications_ingress.id; + +CREATE TABLE public.clusters_applications_jupyter ( + id integer NOT NULL, + cluster_id integer NOT NULL, + oauth_application_id integer, + status integer NOT NULL, + version character varying NOT NULL, + hostname character varying, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + status_reason text +); + +CREATE SEQUENCE public.clusters_applications_jupyter_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.clusters_applications_jupyter_id_seq OWNED BY public.clusters_applications_jupyter.id; + +CREATE TABLE public.clusters_applications_knative ( + id integer NOT NULL, + cluster_id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + status integer NOT NULL, + version character varying NOT NULL, + hostname character varying, + status_reason text, + external_ip character varying, + external_hostname character varying +); + +CREATE SEQUENCE public.clusters_applications_knative_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.clusters_applications_knative_id_seq OWNED BY public.clusters_applications_knative.id; + +CREATE TABLE public.clusters_applications_prometheus ( + id integer NOT NULL, + cluster_id integer NOT NULL, + status integer NOT NULL, + version character varying NOT NULL, + status_reason text, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + last_update_started_at timestamp with time zone, + encrypted_alert_manager_token character varying, + encrypted_alert_manager_token_iv character varying +); + +CREATE SEQUENCE public.clusters_applications_prometheus_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.clusters_applications_prometheus_id_seq OWNED BY public.clusters_applications_prometheus.id; + +CREATE TABLE public.clusters_applications_runners ( + id integer NOT NULL, + cluster_id integer NOT NULL, + runner_id integer, + status integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + version character varying NOT NULL, + status_reason text, + privileged boolean DEFAULT true NOT NULL +); + +CREATE SEQUENCE public.clusters_applications_runners_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.clusters_applications_runners_id_seq OWNED BY public.clusters_applications_runners.id; + +CREATE SEQUENCE public.clusters_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.clusters_id_seq OWNED BY public.clusters.id; + +CREATE TABLE public.clusters_kubernetes_namespaces ( + id bigint NOT NULL, + cluster_id integer NOT NULL, + project_id integer, + cluster_project_id integer, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + encrypted_service_account_token text, + encrypted_service_account_token_iv character varying, + namespace character varying NOT NULL, + service_account_name character varying, + environment_id bigint +); + +CREATE SEQUENCE public.clusters_kubernetes_namespaces_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.clusters_kubernetes_namespaces_id_seq OWNED BY public.clusters_kubernetes_namespaces.id; + +CREATE TABLE public.commit_user_mentions ( + id bigint NOT NULL, + note_id integer NOT NULL, + mentioned_users_ids integer[], + mentioned_projects_ids integer[], + mentioned_groups_ids integer[], + commit_id character varying NOT NULL +); + +CREATE SEQUENCE public.commit_user_mentions_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.commit_user_mentions_id_seq OWNED BY public.commit_user_mentions.id; + +CREATE TABLE public.container_expiration_policies ( + project_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + next_run_at timestamp with time zone, + name_regex character varying(255), + cadence character varying(12) DEFAULT '7d'::character varying NOT NULL, + older_than character varying(12), + keep_n integer, + enabled boolean DEFAULT false NOT NULL +); + +CREATE TABLE public.container_repositories ( + id integer NOT NULL, + project_id integer NOT NULL, + name character varying NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL +); + +CREATE SEQUENCE public.container_repositories_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.container_repositories_id_seq OWNED BY public.container_repositories.id; + +CREATE TABLE public.conversational_development_index_metrics ( + id integer NOT NULL, + leader_issues double precision NOT NULL, + instance_issues double precision NOT NULL, + leader_notes double precision NOT NULL, + instance_notes double precision NOT NULL, + leader_milestones double precision NOT NULL, + instance_milestones double precision NOT NULL, + leader_boards double precision NOT NULL, + instance_boards double precision NOT NULL, + leader_merge_requests double precision NOT NULL, + instance_merge_requests double precision NOT NULL, + leader_ci_pipelines double precision NOT NULL, + instance_ci_pipelines double precision NOT NULL, + leader_environments double precision NOT NULL, + instance_environments double precision NOT NULL, + leader_deployments double precision NOT NULL, + instance_deployments double precision NOT NULL, + leader_projects_prometheus_active double precision NOT NULL, + instance_projects_prometheus_active double precision NOT NULL, + leader_service_desk_issues double precision NOT NULL, + instance_service_desk_issues double precision NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + percentage_boards double precision DEFAULT 0.0 NOT NULL, + percentage_ci_pipelines double precision DEFAULT 0.0 NOT NULL, + percentage_deployments double precision DEFAULT 0.0 NOT NULL, + percentage_environments double precision DEFAULT 0.0 NOT NULL, + percentage_issues double precision DEFAULT 0.0 NOT NULL, + percentage_merge_requests double precision DEFAULT 0.0 NOT NULL, + percentage_milestones double precision DEFAULT 0.0 NOT NULL, + percentage_notes double precision DEFAULT 0.0 NOT NULL, + percentage_projects_prometheus_active double precision DEFAULT 0.0 NOT NULL, + percentage_service_desk_issues double precision DEFAULT 0.0 NOT NULL +); + +CREATE SEQUENCE public.conversational_development_index_metrics_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.conversational_development_index_metrics_id_seq OWNED BY public.conversational_development_index_metrics.id; + +CREATE TABLE public.dependency_proxy_blobs ( + id integer NOT NULL, + group_id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + size bigint, + file_store integer, + file_name character varying NOT NULL, + file text NOT NULL +); + +CREATE SEQUENCE public.dependency_proxy_blobs_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.dependency_proxy_blobs_id_seq OWNED BY public.dependency_proxy_blobs.id; + +CREATE TABLE public.dependency_proxy_group_settings ( + id integer NOT NULL, + group_id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + enabled boolean DEFAULT false NOT NULL +); + +CREATE SEQUENCE public.dependency_proxy_group_settings_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.dependency_proxy_group_settings_id_seq OWNED BY public.dependency_proxy_group_settings.id; + +CREATE TABLE public.deploy_keys_projects ( + id integer NOT NULL, + deploy_key_id integer NOT NULL, + project_id integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + can_push boolean DEFAULT false NOT NULL +); + +CREATE SEQUENCE public.deploy_keys_projects_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.deploy_keys_projects_id_seq OWNED BY public.deploy_keys_projects.id; + +CREATE TABLE public.deploy_tokens ( + id integer NOT NULL, + revoked boolean DEFAULT false, + read_repository boolean DEFAULT false NOT NULL, + read_registry boolean DEFAULT false NOT NULL, + expires_at timestamp with time zone NOT NULL, + created_at timestamp with time zone NOT NULL, + name character varying NOT NULL, + token character varying, + username character varying, + token_encrypted character varying(255), + deploy_token_type smallint DEFAULT 2 NOT NULL +); + +CREATE SEQUENCE public.deploy_tokens_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.deploy_tokens_id_seq OWNED BY public.deploy_tokens.id; + +CREATE TABLE public.deployment_clusters ( + deployment_id integer NOT NULL, + cluster_id integer NOT NULL, + kubernetes_namespace character varying(255) +); + +CREATE TABLE public.deployment_merge_requests ( + deployment_id integer NOT NULL, + merge_request_id integer NOT NULL, + environment_id integer +); + +CREATE TABLE public.deployments ( + id integer NOT NULL, + iid integer NOT NULL, + project_id integer NOT NULL, + environment_id integer NOT NULL, + ref character varying NOT NULL, + tag boolean NOT NULL, + sha character varying NOT NULL, + user_id integer, + deployable_id integer, + deployable_type character varying, + created_at timestamp without time zone, + updated_at timestamp without time zone, + on_stop character varying, + status smallint NOT NULL, + finished_at timestamp with time zone, + cluster_id integer +); + +CREATE SEQUENCE public.deployments_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.deployments_id_seq OWNED BY public.deployments.id; + +CREATE TABLE public.description_versions ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + issue_id integer, + merge_request_id integer, + epic_id integer, + description text, + deleted_at timestamp with time zone +); + +CREATE SEQUENCE public.description_versions_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.description_versions_id_seq OWNED BY public.description_versions.id; + +CREATE TABLE public.design_management_designs ( + id bigint NOT NULL, + project_id integer NOT NULL, + issue_id integer, + filename character varying NOT NULL +); + +CREATE SEQUENCE public.design_management_designs_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.design_management_designs_id_seq OWNED BY public.design_management_designs.id; + +CREATE TABLE public.design_management_designs_versions ( + id bigint NOT NULL, + design_id bigint NOT NULL, + version_id bigint NOT NULL, + event smallint DEFAULT 0 NOT NULL, + image_v432x230 character varying(255) +); + +CREATE SEQUENCE public.design_management_designs_versions_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.design_management_designs_versions_id_seq OWNED BY public.design_management_designs_versions.id; + +CREATE TABLE public.design_management_versions ( + id bigint NOT NULL, + sha bytea NOT NULL, + issue_id bigint, + created_at timestamp with time zone NOT NULL, + author_id integer +); + +CREATE SEQUENCE public.design_management_versions_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.design_management_versions_id_seq OWNED BY public.design_management_versions.id; + +CREATE TABLE public.design_user_mentions ( + id bigint NOT NULL, + design_id integer NOT NULL, + note_id integer NOT NULL, + mentioned_users_ids integer[], + mentioned_projects_ids integer[], + mentioned_groups_ids integer[] +); + +CREATE SEQUENCE public.design_user_mentions_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.design_user_mentions_id_seq OWNED BY public.design_user_mentions.id; + +CREATE TABLE public.draft_notes ( + id bigint NOT NULL, + merge_request_id integer NOT NULL, + author_id integer NOT NULL, + resolve_discussion boolean DEFAULT false NOT NULL, + discussion_id character varying, + note text NOT NULL, + "position" text, + original_position text, + change_position text, + commit_id bytea +); + +CREATE SEQUENCE public.draft_notes_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.draft_notes_id_seq OWNED BY public.draft_notes.id; + +CREATE TABLE public.elasticsearch_indexed_namespaces ( + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + namespace_id integer +); + +CREATE TABLE public.elasticsearch_indexed_projects ( + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + project_id integer +); + +CREATE TABLE public.emails ( + id integer NOT NULL, + user_id integer NOT NULL, + email character varying NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + confirmation_token character varying, + confirmed_at timestamp without time zone, + confirmation_sent_at timestamp without time zone +); + +CREATE SEQUENCE public.emails_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.emails_id_seq OWNED BY public.emails.id; + +CREATE TABLE public.environments ( + id integer NOT NULL, + project_id integer NOT NULL, + name character varying NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + external_url character varying, + environment_type character varying, + state character varying DEFAULT 'available'::character varying NOT NULL, + slug character varying NOT NULL, + auto_stop_at timestamp with time zone +); + +CREATE SEQUENCE public.environments_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.environments_id_seq OWNED BY public.environments.id; + +CREATE TABLE public.epic_issues ( + id integer NOT NULL, + epic_id integer NOT NULL, + issue_id integer NOT NULL, + relative_position integer +); + +CREATE SEQUENCE public.epic_issues_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.epic_issues_id_seq OWNED BY public.epic_issues.id; + +CREATE TABLE public.epic_metrics ( + id integer NOT NULL, + epic_id integer NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL +); + +CREATE SEQUENCE public.epic_metrics_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.epic_metrics_id_seq OWNED BY public.epic_metrics.id; + +CREATE TABLE public.epic_user_mentions ( + id bigint NOT NULL, + epic_id integer NOT NULL, + note_id integer, + mentioned_users_ids integer[], + mentioned_projects_ids integer[], + mentioned_groups_ids integer[] +); + +CREATE SEQUENCE public.epic_user_mentions_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.epic_user_mentions_id_seq OWNED BY public.epic_user_mentions.id; + +CREATE TABLE public.epics ( + id integer NOT NULL, + group_id integer NOT NULL, + author_id integer NOT NULL, + assignee_id integer, + iid integer NOT NULL, + cached_markdown_version integer, + updated_by_id integer, + last_edited_by_id integer, + lock_version integer DEFAULT 0, + start_date date, + end_date date, + last_edited_at timestamp without time zone, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + title character varying NOT NULL, + title_html character varying NOT NULL, + description text, + description_html text, + start_date_sourcing_milestone_id integer, + due_date_sourcing_milestone_id integer, + start_date_fixed date, + due_date_fixed date, + start_date_is_fixed boolean, + due_date_is_fixed boolean, + closed_by_id integer, + closed_at timestamp without time zone, + parent_id integer, + relative_position integer, + state_id smallint DEFAULT 1 NOT NULL, + start_date_sourcing_epic_id integer, + due_date_sourcing_epic_id integer, + health_status smallint, + external_key character varying(255) +); + +CREATE SEQUENCE public.epics_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.epics_id_seq OWNED BY public.epics.id; + +CREATE TABLE public.events ( + id integer NOT NULL, + project_id integer, + author_id integer NOT NULL, + target_id integer, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + action smallint NOT NULL, + target_type character varying, + group_id bigint +); + +CREATE SEQUENCE public.events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.events_id_seq OWNED BY public.events.id; + +CREATE TABLE public.evidences ( + id bigint NOT NULL, + release_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + summary_sha bytea, + summary jsonb DEFAULT '{}'::jsonb NOT NULL +); + +CREATE SEQUENCE public.evidences_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.evidences_id_seq OWNED BY public.evidences.id; + +CREATE TABLE public.external_pull_requests ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + project_id bigint NOT NULL, + pull_request_iid integer NOT NULL, + status smallint NOT NULL, + source_branch character varying(255) NOT NULL, + target_branch character varying(255) NOT NULL, + source_repository character varying(255) NOT NULL, + target_repository character varying(255) NOT NULL, + source_sha bytea NOT NULL, + target_sha bytea NOT NULL +); + +CREATE SEQUENCE public.external_pull_requests_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.external_pull_requests_id_seq OWNED BY public.external_pull_requests.id; + +CREATE TABLE public.feature_gates ( + id integer NOT NULL, + feature_key character varying NOT NULL, + key character varying NOT NULL, + value character varying, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL +); + +CREATE SEQUENCE public.feature_gates_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.feature_gates_id_seq OWNED BY public.feature_gates.id; + +CREATE TABLE public.features ( + id integer NOT NULL, + key character varying NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL +); + +CREATE SEQUENCE public.features_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.features_id_seq OWNED BY public.features.id; + +CREATE TABLE public.fork_network_members ( + id integer NOT NULL, + fork_network_id integer NOT NULL, + project_id integer NOT NULL, + forked_from_project_id integer +); + +CREATE SEQUENCE public.fork_network_members_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.fork_network_members_id_seq OWNED BY public.fork_network_members.id; + +CREATE TABLE public.fork_networks ( + id integer NOT NULL, + root_project_id integer, + deleted_root_project_name character varying +); + +CREATE SEQUENCE public.fork_networks_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.fork_networks_id_seq OWNED BY public.fork_networks.id; + +CREATE TABLE public.geo_cache_invalidation_events ( + id bigint NOT NULL, + key character varying NOT NULL +); + +CREATE SEQUENCE public.geo_cache_invalidation_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.geo_cache_invalidation_events_id_seq OWNED BY public.geo_cache_invalidation_events.id; + +CREATE TABLE public.geo_container_repository_updated_events ( + id bigint NOT NULL, + container_repository_id integer NOT NULL +); + +CREATE SEQUENCE public.geo_container_repository_updated_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.geo_container_repository_updated_events_id_seq OWNED BY public.geo_container_repository_updated_events.id; + +CREATE TABLE public.geo_event_log ( + id bigint NOT NULL, + created_at timestamp without time zone NOT NULL, + repository_updated_event_id bigint, + repository_deleted_event_id bigint, + repository_renamed_event_id bigint, + repositories_changed_event_id bigint, + repository_created_event_id bigint, + hashed_storage_migrated_event_id bigint, + lfs_object_deleted_event_id bigint, + hashed_storage_attachments_event_id bigint, + upload_deleted_event_id bigint, + job_artifact_deleted_event_id bigint, + reset_checksum_event_id bigint, + cache_invalidation_event_id bigint, + container_repository_updated_event_id bigint, + geo_event_id integer +); + +CREATE SEQUENCE public.geo_event_log_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.geo_event_log_id_seq OWNED BY public.geo_event_log.id; + +CREATE TABLE public.geo_events ( + id bigint NOT NULL, + replicable_name character varying(255) NOT NULL, + event_name character varying(255) NOT NULL, + payload jsonb DEFAULT '{}'::jsonb NOT NULL, + created_at timestamp with time zone NOT NULL +); + +CREATE SEQUENCE public.geo_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.geo_events_id_seq OWNED BY public.geo_events.id; + +CREATE TABLE public.geo_hashed_storage_attachments_events ( + id bigint NOT NULL, + project_id integer NOT NULL, + old_attachments_path text NOT NULL, + new_attachments_path text NOT NULL +); + +CREATE SEQUENCE public.geo_hashed_storage_attachments_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.geo_hashed_storage_attachments_events_id_seq OWNED BY public.geo_hashed_storage_attachments_events.id; + +CREATE TABLE public.geo_hashed_storage_migrated_events ( + id bigint NOT NULL, + project_id integer NOT NULL, + repository_storage_name text NOT NULL, + old_disk_path text NOT NULL, + new_disk_path text NOT NULL, + old_wiki_disk_path text NOT NULL, + new_wiki_disk_path text NOT NULL, + old_storage_version smallint, + new_storage_version smallint NOT NULL, + old_design_disk_path text, + new_design_disk_path text +); + +CREATE SEQUENCE public.geo_hashed_storage_migrated_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.geo_hashed_storage_migrated_events_id_seq OWNED BY public.geo_hashed_storage_migrated_events.id; + +CREATE TABLE public.geo_job_artifact_deleted_events ( + id bigint NOT NULL, + job_artifact_id integer NOT NULL, + file_path character varying NOT NULL +); + +CREATE SEQUENCE public.geo_job_artifact_deleted_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.geo_job_artifact_deleted_events_id_seq OWNED BY public.geo_job_artifact_deleted_events.id; + +CREATE TABLE public.geo_lfs_object_deleted_events ( + id bigint NOT NULL, + lfs_object_id integer NOT NULL, + oid character varying NOT NULL, + file_path character varying NOT NULL +); + +CREATE SEQUENCE public.geo_lfs_object_deleted_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.geo_lfs_object_deleted_events_id_seq OWNED BY public.geo_lfs_object_deleted_events.id; + +CREATE TABLE public.geo_node_namespace_links ( + id integer NOT NULL, + geo_node_id integer NOT NULL, + namespace_id integer NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL +); + +CREATE SEQUENCE public.geo_node_namespace_links_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.geo_node_namespace_links_id_seq OWNED BY public.geo_node_namespace_links.id; + +CREATE TABLE public.geo_node_statuses ( + id integer NOT NULL, + geo_node_id integer NOT NULL, + db_replication_lag_seconds integer, + repositories_synced_count integer, + repositories_failed_count integer, + lfs_objects_count integer, + lfs_objects_synced_count integer, + lfs_objects_failed_count integer, + attachments_count integer, + attachments_synced_count integer, + attachments_failed_count integer, + last_event_id integer, + last_event_date timestamp without time zone, + cursor_last_event_id integer, + cursor_last_event_date timestamp without time zone, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + last_successful_status_check_at timestamp without time zone, + status_message character varying, + replication_slots_count integer, + replication_slots_used_count integer, + replication_slots_max_retained_wal_bytes bigint, + wikis_synced_count integer, + wikis_failed_count integer, + job_artifacts_count integer, + job_artifacts_synced_count integer, + job_artifacts_failed_count integer, + version character varying, + revision character varying, + repositories_verified_count integer, + repositories_verification_failed_count integer, + wikis_verified_count integer, + wikis_verification_failed_count integer, + lfs_objects_synced_missing_on_primary_count integer, + job_artifacts_synced_missing_on_primary_count integer, + attachments_synced_missing_on_primary_count integer, + repositories_checksummed_count integer, + repositories_checksum_failed_count integer, + repositories_checksum_mismatch_count integer, + wikis_checksummed_count integer, + wikis_checksum_failed_count integer, + wikis_checksum_mismatch_count integer, + storage_configuration_digest bytea, + repositories_retrying_verification_count integer, + wikis_retrying_verification_count integer, + projects_count integer, + container_repositories_count integer, + container_repositories_synced_count integer, + container_repositories_failed_count integer, + container_repositories_registry_count integer, + design_repositories_count integer, + design_repositories_synced_count integer, + design_repositories_failed_count integer, + design_repositories_registry_count integer +); + +CREATE SEQUENCE public.geo_node_statuses_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.geo_node_statuses_id_seq OWNED BY public.geo_node_statuses.id; + +CREATE TABLE public.geo_nodes ( + id integer NOT NULL, + "primary" boolean DEFAULT false NOT NULL, + oauth_application_id integer, + enabled boolean DEFAULT true NOT NULL, + access_key character varying, + encrypted_secret_access_key character varying, + encrypted_secret_access_key_iv character varying, + clone_url_prefix character varying, + files_max_capacity integer DEFAULT 10 NOT NULL, + repos_max_capacity integer DEFAULT 25 NOT NULL, + url character varying NOT NULL, + selective_sync_type character varying, + selective_sync_shards text, + verification_max_capacity integer DEFAULT 100 NOT NULL, + minimum_reverification_interval integer DEFAULT 7 NOT NULL, + internal_url character varying, + name character varying NOT NULL, + container_repositories_max_capacity integer DEFAULT 10 NOT NULL, + created_at timestamp with time zone, + updated_at timestamp with time zone, + sync_object_storage boolean DEFAULT false NOT NULL +); + +CREATE SEQUENCE public.geo_nodes_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.geo_nodes_id_seq OWNED BY public.geo_nodes.id; + +CREATE TABLE public.geo_repositories_changed_events ( + id bigint NOT NULL, + geo_node_id integer NOT NULL +); + +CREATE SEQUENCE public.geo_repositories_changed_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.geo_repositories_changed_events_id_seq OWNED BY public.geo_repositories_changed_events.id; + +CREATE TABLE public.geo_repository_created_events ( + id bigint NOT NULL, + project_id integer NOT NULL, + repository_storage_name text NOT NULL, + repo_path text NOT NULL, + wiki_path text, + project_name text NOT NULL +); + +CREATE SEQUENCE public.geo_repository_created_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.geo_repository_created_events_id_seq OWNED BY public.geo_repository_created_events.id; + +CREATE TABLE public.geo_repository_deleted_events ( + id bigint NOT NULL, + project_id integer NOT NULL, + repository_storage_name text NOT NULL, + deleted_path text NOT NULL, + deleted_wiki_path text, + deleted_project_name text NOT NULL +); + +CREATE SEQUENCE public.geo_repository_deleted_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.geo_repository_deleted_events_id_seq OWNED BY public.geo_repository_deleted_events.id; + +CREATE TABLE public.geo_repository_renamed_events ( + id bigint NOT NULL, + project_id integer NOT NULL, + repository_storage_name text NOT NULL, + old_path_with_namespace text NOT NULL, + new_path_with_namespace text NOT NULL, + old_wiki_path_with_namespace text NOT NULL, + new_wiki_path_with_namespace text NOT NULL, + old_path text NOT NULL, + new_path text NOT NULL +); + +CREATE SEQUENCE public.geo_repository_renamed_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.geo_repository_renamed_events_id_seq OWNED BY public.geo_repository_renamed_events.id; + +CREATE TABLE public.geo_repository_updated_events ( + id bigint NOT NULL, + branches_affected integer NOT NULL, + tags_affected integer NOT NULL, + project_id integer NOT NULL, + source smallint NOT NULL, + new_branch boolean DEFAULT false NOT NULL, + remove_branch boolean DEFAULT false NOT NULL, + ref text +); + +CREATE SEQUENCE public.geo_repository_updated_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.geo_repository_updated_events_id_seq OWNED BY public.geo_repository_updated_events.id; + +CREATE TABLE public.geo_reset_checksum_events ( + id bigint NOT NULL, + project_id integer NOT NULL +); + +CREATE SEQUENCE public.geo_reset_checksum_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.geo_reset_checksum_events_id_seq OWNED BY public.geo_reset_checksum_events.id; + +CREATE TABLE public.geo_upload_deleted_events ( + id bigint NOT NULL, + upload_id integer NOT NULL, + file_path character varying NOT NULL, + model_id integer NOT NULL, + model_type character varying NOT NULL, + uploader character varying NOT NULL +); + +CREATE SEQUENCE public.geo_upload_deleted_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.geo_upload_deleted_events_id_seq OWNED BY public.geo_upload_deleted_events.id; + +CREATE TABLE public.gitlab_subscription_histories ( + id bigint NOT NULL, + gitlab_subscription_created_at timestamp with time zone, + gitlab_subscription_updated_at timestamp with time zone, + start_date date, + end_date date, + trial_ends_on date, + namespace_id integer, + hosted_plan_id integer, + max_seats_used integer, + seats integer, + trial boolean, + change_type smallint, + gitlab_subscription_id bigint NOT NULL, + created_at timestamp with time zone, + trial_starts_on date, + auto_renew boolean +); + +CREATE SEQUENCE public.gitlab_subscription_histories_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.gitlab_subscription_histories_id_seq OWNED BY public.gitlab_subscription_histories.id; + +CREATE TABLE public.gitlab_subscriptions ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + start_date date, + end_date date, + trial_ends_on date, + namespace_id integer, + hosted_plan_id integer, + max_seats_used integer DEFAULT 0, + seats integer DEFAULT 0, + trial boolean DEFAULT false, + trial_starts_on date, + auto_renew boolean +); + +CREATE SEQUENCE public.gitlab_subscriptions_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.gitlab_subscriptions_id_seq OWNED BY public.gitlab_subscriptions.id; + +CREATE TABLE public.gpg_key_subkeys ( + id integer NOT NULL, + gpg_key_id integer NOT NULL, + keyid bytea, + fingerprint bytea +); + +CREATE SEQUENCE public.gpg_key_subkeys_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.gpg_key_subkeys_id_seq OWNED BY public.gpg_key_subkeys.id; + +CREATE TABLE public.gpg_keys ( + id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + user_id integer, + primary_keyid bytea, + fingerprint bytea, + key text +); + +CREATE SEQUENCE public.gpg_keys_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.gpg_keys_id_seq OWNED BY public.gpg_keys.id; + +CREATE TABLE public.gpg_signatures ( + id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + project_id integer, + gpg_key_id integer, + commit_sha bytea, + gpg_key_primary_keyid bytea, + gpg_key_user_name text, + gpg_key_user_email text, + verification_status smallint DEFAULT 0 NOT NULL, + gpg_key_subkey_id integer +); + +CREATE SEQUENCE public.gpg_signatures_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.gpg_signatures_id_seq OWNED BY public.gpg_signatures.id; + +CREATE TABLE public.grafana_integrations ( + id bigint NOT NULL, + project_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + encrypted_token character varying(255) NOT NULL, + encrypted_token_iv character varying(255) NOT NULL, + grafana_url character varying(1024) NOT NULL, + enabled boolean DEFAULT false NOT NULL +); + +CREATE SEQUENCE public.grafana_integrations_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.grafana_integrations_id_seq OWNED BY public.grafana_integrations.id; + +CREATE TABLE public.group_custom_attributes ( + id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + group_id integer NOT NULL, + key character varying NOT NULL, + value character varying NOT NULL +); + +CREATE SEQUENCE public.group_custom_attributes_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.group_custom_attributes_id_seq OWNED BY public.group_custom_attributes.id; + +CREATE TABLE public.group_deletion_schedules ( + group_id bigint NOT NULL, + user_id bigint NOT NULL, + marked_for_deletion_on date NOT NULL +); + +CREATE TABLE public.group_deploy_tokens ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + group_id bigint NOT NULL, + deploy_token_id bigint NOT NULL +); + +CREATE SEQUENCE public.group_deploy_tokens_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.group_deploy_tokens_id_seq OWNED BY public.group_deploy_tokens.id; + +CREATE TABLE public.group_group_links ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + shared_group_id bigint NOT NULL, + shared_with_group_id bigint NOT NULL, + expires_at date, + group_access smallint DEFAULT 30 NOT NULL +); + +CREATE SEQUENCE public.group_group_links_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.group_group_links_id_seq OWNED BY public.group_group_links.id; + +CREATE TABLE public.historical_data ( + id integer NOT NULL, + date date NOT NULL, + active_user_count integer, + created_at timestamp without time zone, + updated_at timestamp without time zone +); + +CREATE SEQUENCE public.historical_data_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.historical_data_id_seq OWNED BY public.historical_data.id; + +CREATE TABLE public.identities ( + id integer NOT NULL, + extern_uid character varying, + provider character varying, + user_id integer, + created_at timestamp without time zone, + updated_at timestamp without time zone, + secondary_extern_uid character varying, + saml_provider_id integer +); + +CREATE SEQUENCE public.identities_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.identities_id_seq OWNED BY public.identities.id; + +CREATE TABLE public.import_export_uploads ( + id integer NOT NULL, + updated_at timestamp with time zone NOT NULL, + project_id integer, + import_file text, + export_file text, + group_id bigint +); + +CREATE SEQUENCE public.import_export_uploads_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.import_export_uploads_id_seq OWNED BY public.import_export_uploads.id; + +CREATE TABLE public.import_failures ( + id bigint NOT NULL, + relation_index integer, + project_id bigint, + created_at timestamp with time zone NOT NULL, + relation_key character varying(64), + exception_class character varying(128), + correlation_id_value character varying(128), + exception_message character varying(255), + retry_count integer, + group_id integer, + source character varying(128) +); + +CREATE SEQUENCE public.import_failures_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.import_failures_id_seq OWNED BY public.import_failures.id; + +CREATE TABLE public.index_statuses ( + id integer NOT NULL, + project_id integer NOT NULL, + indexed_at timestamp without time zone, + note text, + last_commit character varying, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + last_wiki_commit bytea, + wiki_indexed_at timestamp with time zone +); + +CREATE SEQUENCE public.index_statuses_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.index_statuses_id_seq OWNED BY public.index_statuses.id; + +CREATE TABLE public.insights ( + id integer NOT NULL, + namespace_id integer NOT NULL, + project_id integer NOT NULL +); + +CREATE SEQUENCE public.insights_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.insights_id_seq OWNED BY public.insights.id; + +CREATE TABLE public.internal_ids ( + id bigint NOT NULL, + project_id integer, + usage integer NOT NULL, + last_value integer NOT NULL, + namespace_id integer +); + +CREATE SEQUENCE public.internal_ids_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.internal_ids_id_seq OWNED BY public.internal_ids.id; + +CREATE TABLE public.ip_restrictions ( + id bigint NOT NULL, + group_id integer NOT NULL, + range character varying NOT NULL +); + +CREATE SEQUENCE public.ip_restrictions_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ip_restrictions_id_seq OWNED BY public.ip_restrictions.id; + +CREATE TABLE public.issue_assignees ( + user_id integer NOT NULL, + issue_id integer NOT NULL +); + +CREATE TABLE public.issue_links ( + id integer NOT NULL, + source_id integer NOT NULL, + target_id integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + link_type smallint DEFAULT 0 NOT NULL +); + +CREATE SEQUENCE public.issue_links_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.issue_links_id_seq OWNED BY public.issue_links.id; + +CREATE TABLE public.issue_metrics ( + id integer NOT NULL, + issue_id integer NOT NULL, + first_mentioned_in_commit_at timestamp without time zone, + first_associated_with_milestone_at timestamp without time zone, + first_added_to_board_at timestamp without time zone, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL +); + +CREATE SEQUENCE public.issue_metrics_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.issue_metrics_id_seq OWNED BY public.issue_metrics.id; + +CREATE TABLE public.issue_tracker_data ( + id bigint NOT NULL, + service_id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + encrypted_project_url character varying, + encrypted_project_url_iv character varying, + encrypted_issues_url character varying, + encrypted_issues_url_iv character varying, + encrypted_new_issue_url character varying, + encrypted_new_issue_url_iv character varying +); + +CREATE SEQUENCE public.issue_tracker_data_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.issue_tracker_data_id_seq OWNED BY public.issue_tracker_data.id; + +CREATE TABLE public.issue_user_mentions ( + id bigint NOT NULL, + issue_id integer NOT NULL, + note_id integer, + mentioned_users_ids integer[], + mentioned_projects_ids integer[], + mentioned_groups_ids integer[] +); + +CREATE SEQUENCE public.issue_user_mentions_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.issue_user_mentions_id_seq OWNED BY public.issue_user_mentions.id; + +CREATE TABLE public.issues ( + id integer NOT NULL, + title character varying, + author_id integer, + project_id integer, + created_at timestamp without time zone, + updated_at timestamp without time zone, + description text, + milestone_id integer, + iid integer, + updated_by_id integer, + weight integer, + confidential boolean DEFAULT false NOT NULL, + due_date date, + moved_to_id integer, + lock_version integer DEFAULT 0, + title_html text, + description_html text, + time_estimate integer, + relative_position integer, + service_desk_reply_to character varying, + cached_markdown_version integer, + last_edited_at timestamp without time zone, + last_edited_by_id integer, + discussion_locked boolean, + closed_at timestamp with time zone, + closed_by_id integer, + state_id smallint DEFAULT 1 NOT NULL, + duplicated_to_id integer, + promoted_to_epic_id integer, + health_status smallint, + external_key character varying(255) +); + +CREATE SEQUENCE public.issues_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.issues_id_seq OWNED BY public.issues.id; + +CREATE TABLE public.issues_prometheus_alert_events ( + issue_id bigint NOT NULL, + prometheus_alert_event_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL +); + +CREATE TABLE public.issues_self_managed_prometheus_alert_events ( + issue_id bigint NOT NULL, + self_managed_prometheus_alert_event_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL +); + +CREATE TABLE public.jira_connect_installations ( + id bigint NOT NULL, + client_key character varying, + encrypted_shared_secret character varying, + encrypted_shared_secret_iv character varying, + base_url character varying +); + +CREATE SEQUENCE public.jira_connect_installations_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.jira_connect_installations_id_seq OWNED BY public.jira_connect_installations.id; + +CREATE TABLE public.jira_connect_subscriptions ( + id bigint NOT NULL, + jira_connect_installation_id bigint NOT NULL, + namespace_id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL +); + +CREATE SEQUENCE public.jira_connect_subscriptions_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.jira_connect_subscriptions_id_seq OWNED BY public.jira_connect_subscriptions.id; + +CREATE TABLE public.jira_tracker_data ( + id bigint NOT NULL, + service_id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + encrypted_url character varying, + encrypted_url_iv character varying, + encrypted_api_url character varying, + encrypted_api_url_iv character varying, + encrypted_username character varying, + encrypted_username_iv character varying, + encrypted_password character varying, + encrypted_password_iv character varying, + jira_issue_transition_id character varying +); + +CREATE SEQUENCE public.jira_tracker_data_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.jira_tracker_data_id_seq OWNED BY public.jira_tracker_data.id; + +CREATE TABLE public.keys ( + id integer NOT NULL, + user_id integer, + created_at timestamp without time zone, + updated_at timestamp without time zone, + key text, + title character varying, + type character varying, + fingerprint character varying, + public boolean DEFAULT false NOT NULL, + last_used_at timestamp without time zone, + fingerprint_sha256 bytea, + expires_at timestamp with time zone +); + +CREATE SEQUENCE public.keys_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.keys_id_seq OWNED BY public.keys.id; + +CREATE TABLE public.label_links ( + id integer NOT NULL, + label_id integer, + target_id integer, + target_type character varying, + created_at timestamp without time zone, + updated_at timestamp without time zone +); + +CREATE SEQUENCE public.label_links_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.label_links_id_seq OWNED BY public.label_links.id; + +CREATE TABLE public.label_priorities ( + id integer NOT NULL, + project_id integer NOT NULL, + label_id integer NOT NULL, + priority integer NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL +); + +CREATE SEQUENCE public.label_priorities_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.label_priorities_id_seq OWNED BY public.label_priorities.id; + +CREATE TABLE public.labels ( + id integer NOT NULL, + title character varying, + color character varying, + project_id integer, + created_at timestamp without time zone, + updated_at timestamp without time zone, + template boolean DEFAULT false, + description character varying, + description_html text, + type character varying, + group_id integer, + cached_markdown_version integer +); + +CREATE SEQUENCE public.labels_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.labels_id_seq OWNED BY public.labels.id; + +CREATE TABLE public.ldap_group_links ( + id integer NOT NULL, + cn character varying, + group_access integer NOT NULL, + group_id integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + provider character varying, + filter character varying +); + +CREATE SEQUENCE public.ldap_group_links_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.ldap_group_links_id_seq OWNED BY public.ldap_group_links.id; + +CREATE TABLE public.lfs_file_locks ( + id integer NOT NULL, + project_id integer NOT NULL, + user_id integer NOT NULL, + created_at timestamp without time zone NOT NULL, + path character varying(511) +); + +CREATE SEQUENCE public.lfs_file_locks_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.lfs_file_locks_id_seq OWNED BY public.lfs_file_locks.id; + +CREATE TABLE public.lfs_objects ( + id integer NOT NULL, + oid character varying NOT NULL, + size bigint NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + file character varying, + file_store integer +); + +CREATE SEQUENCE public.lfs_objects_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.lfs_objects_id_seq OWNED BY public.lfs_objects.id; + +CREATE TABLE public.lfs_objects_projects ( + id integer NOT NULL, + lfs_object_id integer NOT NULL, + project_id integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + repository_type smallint +); + +CREATE SEQUENCE public.lfs_objects_projects_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.lfs_objects_projects_id_seq OWNED BY public.lfs_objects_projects.id; + +CREATE TABLE public.licenses ( + id integer NOT NULL, + data text NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone +); + +CREATE SEQUENCE public.licenses_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.licenses_id_seq OWNED BY public.licenses.id; + +CREATE TABLE public.list_user_preferences ( + id bigint NOT NULL, + user_id bigint NOT NULL, + list_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + collapsed boolean +); + +CREATE SEQUENCE public.list_user_preferences_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.list_user_preferences_id_seq OWNED BY public.list_user_preferences.id; + +CREATE TABLE public.lists ( + id integer NOT NULL, + board_id integer NOT NULL, + label_id integer, + list_type integer DEFAULT 1 NOT NULL, + "position" integer, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + user_id integer, + milestone_id integer, + max_issue_count integer DEFAULT 0 NOT NULL, + max_issue_weight integer DEFAULT 0 NOT NULL, + limit_metric character varying(20) +); + +CREATE SEQUENCE public.lists_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.lists_id_seq OWNED BY public.lists.id; + +CREATE TABLE public.members ( + id integer NOT NULL, + access_level integer NOT NULL, + source_id integer NOT NULL, + source_type character varying NOT NULL, + user_id integer, + notification_level integer NOT NULL, + type character varying, + created_at timestamp without time zone, + updated_at timestamp without time zone, + created_by_id integer, + invite_email character varying, + invite_token character varying, + invite_accepted_at timestamp without time zone, + requested_at timestamp without time zone, + expires_at date, + ldap boolean DEFAULT false NOT NULL, + override boolean DEFAULT false NOT NULL +); + +CREATE SEQUENCE public.members_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.members_id_seq OWNED BY public.members.id; + +CREATE TABLE public.merge_request_assignees ( + id bigint NOT NULL, + user_id integer NOT NULL, + merge_request_id integer NOT NULL, + created_at timestamp with time zone +); + +CREATE SEQUENCE public.merge_request_assignees_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.merge_request_assignees_id_seq OWNED BY public.merge_request_assignees.id; + +CREATE TABLE public.merge_request_blocks ( + id bigint NOT NULL, + blocking_merge_request_id integer NOT NULL, + blocked_merge_request_id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL +); + +CREATE SEQUENCE public.merge_request_blocks_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.merge_request_blocks_id_seq OWNED BY public.merge_request_blocks.id; + +CREATE TABLE public.merge_request_context_commit_diff_files ( + sha bytea NOT NULL, + relative_order integer NOT NULL, + new_file boolean NOT NULL, + renamed_file boolean NOT NULL, + deleted_file boolean NOT NULL, + too_large boolean NOT NULL, + a_mode character varying(255) NOT NULL, + b_mode character varying(255) NOT NULL, + new_path text NOT NULL, + old_path text NOT NULL, + diff text, + "binary" boolean, + merge_request_context_commit_id bigint +); + +CREATE TABLE public.merge_request_context_commits ( + id bigint NOT NULL, + authored_date timestamp with time zone, + committed_date timestamp with time zone, + relative_order integer NOT NULL, + sha bytea NOT NULL, + author_name text, + author_email text, + committer_name text, + committer_email text, + message text, + merge_request_id bigint +); + +CREATE SEQUENCE public.merge_request_context_commits_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.merge_request_context_commits_id_seq OWNED BY public.merge_request_context_commits.id; + +CREATE TABLE public.merge_request_diff_commits ( + authored_date timestamp without time zone, + committed_date timestamp without time zone, + merge_request_diff_id integer NOT NULL, + relative_order integer NOT NULL, + sha bytea NOT NULL, + author_name text, + author_email text, + committer_name text, + committer_email text, + message text +); + +CREATE TABLE public.merge_request_diff_files ( + merge_request_diff_id integer NOT NULL, + relative_order integer NOT NULL, + new_file boolean NOT NULL, + renamed_file boolean NOT NULL, + deleted_file boolean NOT NULL, + too_large boolean NOT NULL, + a_mode character varying NOT NULL, + b_mode character varying NOT NULL, + new_path text NOT NULL, + old_path text NOT NULL, + diff text, + "binary" boolean, + external_diff_offset integer, + external_diff_size integer +); + +CREATE TABLE public.merge_request_diffs ( + id integer NOT NULL, + state character varying, + merge_request_id integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + base_commit_sha character varying, + real_size character varying, + head_commit_sha character varying, + start_commit_sha character varying, + commits_count integer, + external_diff character varying, + external_diff_store integer, + stored_externally boolean +); + +CREATE SEQUENCE public.merge_request_diffs_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.merge_request_diffs_id_seq OWNED BY public.merge_request_diffs.id; + +CREATE TABLE public.merge_request_metrics ( + id integer NOT NULL, + merge_request_id integer NOT NULL, + latest_build_started_at timestamp without time zone, + latest_build_finished_at timestamp without time zone, + first_deployed_to_production_at timestamp without time zone, + merged_at timestamp without time zone, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + pipeline_id integer, + merged_by_id integer, + latest_closed_by_id integer, + latest_closed_at timestamp with time zone, + first_comment_at timestamp with time zone, + first_commit_at timestamp with time zone, + last_commit_at timestamp with time zone, + diff_size integer, + modified_paths_size integer, + commits_count integer, + first_approved_at timestamp with time zone, + first_reassigned_at timestamp with time zone +); + +CREATE SEQUENCE public.merge_request_metrics_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.merge_request_metrics_id_seq OWNED BY public.merge_request_metrics.id; + +CREATE TABLE public.merge_request_user_mentions ( + id bigint NOT NULL, + merge_request_id integer NOT NULL, + note_id integer, + mentioned_users_ids integer[], + mentioned_projects_ids integer[], + mentioned_groups_ids integer[] +); + +CREATE SEQUENCE public.merge_request_user_mentions_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.merge_request_user_mentions_id_seq OWNED BY public.merge_request_user_mentions.id; + +CREATE TABLE public.merge_requests ( + id integer NOT NULL, + target_branch character varying NOT NULL, + source_branch character varying NOT NULL, + source_project_id integer, + author_id integer, + assignee_id integer, + title character varying, + created_at timestamp without time zone, + updated_at timestamp without time zone, + milestone_id integer, + merge_status character varying DEFAULT 'unchecked'::character varying NOT NULL, + target_project_id integer NOT NULL, + iid integer, + description text, + updated_by_id integer, + merge_error text, + merge_params text, + merge_when_pipeline_succeeds boolean DEFAULT false NOT NULL, + merge_user_id integer, + merge_commit_sha character varying, + approvals_before_merge integer, + rebase_commit_sha character varying, + in_progress_merge_commit_sha character varying, + lock_version integer DEFAULT 0, + title_html text, + description_html text, + time_estimate integer, + squash boolean DEFAULT false NOT NULL, + cached_markdown_version integer, + last_edited_at timestamp without time zone, + last_edited_by_id integer, + head_pipeline_id integer, + merge_jid character varying, + discussion_locked boolean, + latest_merge_request_diff_id integer, + allow_maintainer_to_push boolean, + state_id smallint DEFAULT 1 NOT NULL, + rebase_jid character varying, + squash_commit_sha bytea +); + +CREATE TABLE public.merge_requests_closing_issues ( + id integer NOT NULL, + merge_request_id integer NOT NULL, + issue_id integer NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL +); + +CREATE SEQUENCE public.merge_requests_closing_issues_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.merge_requests_closing_issues_id_seq OWNED BY public.merge_requests_closing_issues.id; + +CREATE SEQUENCE public.merge_requests_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.merge_requests_id_seq OWNED BY public.merge_requests.id; + +CREATE TABLE public.merge_trains ( + id bigint NOT NULL, + merge_request_id integer NOT NULL, + user_id integer NOT NULL, + pipeline_id integer, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + target_project_id integer NOT NULL, + target_branch text NOT NULL, + status smallint DEFAULT 0 NOT NULL, + merged_at timestamp with time zone, + duration integer +); + +CREATE SEQUENCE public.merge_trains_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.merge_trains_id_seq OWNED BY public.merge_trains.id; + +CREATE TABLE public.milestone_releases ( + milestone_id bigint NOT NULL, + release_id bigint NOT NULL +); + +CREATE TABLE public.milestones ( + id integer NOT NULL, + title character varying NOT NULL, + project_id integer, + description text, + due_date date, + created_at timestamp without time zone, + updated_at timestamp without time zone, + state character varying, + iid integer, + title_html text, + description_html text, + start_date date, + cached_markdown_version integer, + group_id integer +); + +CREATE SEQUENCE public.milestones_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.milestones_id_seq OWNED BY public.milestones.id; + +CREATE TABLE public.namespace_aggregation_schedules ( + namespace_id integer NOT NULL +); + +CREATE TABLE public.namespace_root_storage_statistics ( + namespace_id integer NOT NULL, + updated_at timestamp with time zone NOT NULL, + repository_size bigint DEFAULT 0 NOT NULL, + lfs_objects_size bigint DEFAULT 0 NOT NULL, + wiki_size bigint DEFAULT 0 NOT NULL, + build_artifacts_size bigint DEFAULT 0 NOT NULL, + storage_size bigint DEFAULT 0 NOT NULL, + packages_size bigint DEFAULT 0 NOT NULL +); + +CREATE TABLE public.namespace_statistics ( + id integer NOT NULL, + namespace_id integer NOT NULL, + shared_runners_seconds integer DEFAULT 0 NOT NULL, + shared_runners_seconds_last_reset timestamp without time zone +); + +CREATE SEQUENCE public.namespace_statistics_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.namespace_statistics_id_seq OWNED BY public.namespace_statistics.id; + +CREATE TABLE public.namespaces ( + id integer NOT NULL, + name character varying NOT NULL, + path character varying NOT NULL, + owner_id integer, + created_at timestamp without time zone, + updated_at timestamp without time zone, + type character varying, + description character varying DEFAULT ''::character varying NOT NULL, + avatar character varying, + membership_lock boolean DEFAULT false, + share_with_group_lock boolean DEFAULT false, + visibility_level integer DEFAULT 20 NOT NULL, + request_access_enabled boolean DEFAULT true NOT NULL, + ldap_sync_status character varying DEFAULT 'ready'::character varying NOT NULL, + ldap_sync_error character varying, + ldap_sync_last_update_at timestamp without time zone, + ldap_sync_last_successful_update_at timestamp without time zone, + ldap_sync_last_sync_at timestamp without time zone, + description_html text, + lfs_enabled boolean, + parent_id integer, + shared_runners_minutes_limit integer, + repository_size_limit bigint, + require_two_factor_authentication boolean DEFAULT false NOT NULL, + two_factor_grace_period integer DEFAULT 48 NOT NULL, + cached_markdown_version integer, + plan_id integer, + project_creation_level integer, + runners_token character varying, + trial_ends_on timestamp with time zone, + file_template_project_id integer, + saml_discovery_token character varying, + runners_token_encrypted character varying, + custom_project_templates_group_id integer, + auto_devops_enabled boolean, + extra_shared_runners_minutes_limit integer, + last_ci_minutes_notification_at timestamp with time zone, + last_ci_minutes_usage_notification_level integer, + subgroup_creation_level integer DEFAULT 1, + emails_disabled boolean, + max_pages_size integer, + max_artifacts_size integer, + mentions_disabled boolean, + default_branch_protection smallint, + unlock_membership_to_ldap boolean +); + +CREATE SEQUENCE public.namespaces_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.namespaces_id_seq OWNED BY public.namespaces.id; + +CREATE TABLE public.note_diff_files ( + id integer NOT NULL, + diff_note_id integer NOT NULL, + diff text NOT NULL, + new_file boolean NOT NULL, + renamed_file boolean NOT NULL, + deleted_file boolean NOT NULL, + a_mode character varying NOT NULL, + b_mode character varying NOT NULL, + new_path text NOT NULL, + old_path text NOT NULL +); + +CREATE SEQUENCE public.note_diff_files_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.note_diff_files_id_seq OWNED BY public.note_diff_files.id; + +CREATE TABLE public.notes ( + id integer NOT NULL, + note text, + noteable_type character varying, + author_id integer, + created_at timestamp without time zone, + updated_at timestamp without time zone, + project_id integer, + attachment character varying, + line_code character varying, + commit_id character varying, + noteable_id integer, + system boolean DEFAULT false NOT NULL, + st_diff text, + updated_by_id integer, + type character varying, + "position" text, + original_position text, + resolved_at timestamp without time zone, + resolved_by_id integer, + discussion_id character varying, + note_html text, + cached_markdown_version integer, + change_position text, + resolved_by_push boolean, + review_id bigint, + confidential boolean +); + +CREATE SEQUENCE public.notes_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.notes_id_seq OWNED BY public.notes.id; + +CREATE TABLE public.notification_settings ( + id integer NOT NULL, + user_id integer NOT NULL, + source_id integer, + source_type character varying, + level integer DEFAULT 0 NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + new_note boolean, + new_issue boolean, + reopen_issue boolean, + close_issue boolean, + reassign_issue boolean, + new_merge_request boolean, + reopen_merge_request boolean, + close_merge_request boolean, + reassign_merge_request boolean, + merge_merge_request boolean, + failed_pipeline boolean, + success_pipeline boolean, + push_to_merge_request boolean, + issue_due boolean, + new_epic boolean, + notification_email character varying, + fixed_pipeline boolean, + new_release boolean +); + +CREATE SEQUENCE public.notification_settings_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.notification_settings_id_seq OWNED BY public.notification_settings.id; + +CREATE TABLE public.oauth_access_grants ( + id integer NOT NULL, + resource_owner_id integer NOT NULL, + application_id integer NOT NULL, + token character varying NOT NULL, + expires_in integer NOT NULL, + redirect_uri text NOT NULL, + created_at timestamp without time zone NOT NULL, + revoked_at timestamp without time zone, + scopes character varying +); + +CREATE SEQUENCE public.oauth_access_grants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.oauth_access_grants_id_seq OWNED BY public.oauth_access_grants.id; + +CREATE TABLE public.oauth_access_tokens ( + id integer NOT NULL, + resource_owner_id integer, + application_id integer, + token character varying NOT NULL, + refresh_token character varying, + expires_in integer, + revoked_at timestamp without time zone, + created_at timestamp without time zone NOT NULL, + scopes character varying +); + +CREATE SEQUENCE public.oauth_access_tokens_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.oauth_access_tokens_id_seq OWNED BY public.oauth_access_tokens.id; + +CREATE TABLE public.oauth_applications ( + id integer NOT NULL, + name character varying NOT NULL, + uid character varying NOT NULL, + secret character varying NOT NULL, + redirect_uri text NOT NULL, + scopes character varying DEFAULT ''::character varying NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + owner_id integer, + owner_type character varying, + trusted boolean DEFAULT false NOT NULL, + confidential boolean DEFAULT true NOT NULL +); + +CREATE SEQUENCE public.oauth_applications_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.oauth_applications_id_seq OWNED BY public.oauth_applications.id; + +CREATE TABLE public.oauth_openid_requests ( + id integer NOT NULL, + access_grant_id integer NOT NULL, + nonce character varying NOT NULL +); + +CREATE SEQUENCE public.oauth_openid_requests_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.oauth_openid_requests_id_seq OWNED BY public.oauth_openid_requests.id; + +CREATE TABLE public.open_project_tracker_data ( + id bigint NOT NULL, + service_id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + encrypted_url character varying(255), + encrypted_url_iv character varying(255), + encrypted_api_url character varying(255), + encrypted_api_url_iv character varying(255), + encrypted_token character varying(255), + encrypted_token_iv character varying(255), + closed_status_id character varying(5), + project_identifier_code character varying(100) +); + +CREATE SEQUENCE public.open_project_tracker_data_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.open_project_tracker_data_id_seq OWNED BY public.open_project_tracker_data.id; + +CREATE TABLE public.operations_feature_flag_scopes ( + id bigint NOT NULL, + feature_flag_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + active boolean NOT NULL, + environment_scope character varying DEFAULT '*'::character varying NOT NULL, + strategies jsonb DEFAULT '[{"name": "default", "parameters": {}}]'::jsonb NOT NULL +); + +CREATE SEQUENCE public.operations_feature_flag_scopes_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.operations_feature_flag_scopes_id_seq OWNED BY public.operations_feature_flag_scopes.id; + +CREATE TABLE public.operations_feature_flags ( + id bigint NOT NULL, + project_id integer NOT NULL, + active boolean NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + name character varying NOT NULL, + description text, + iid integer NOT NULL, + version smallint DEFAULT 1 NOT NULL +); + +CREATE TABLE public.operations_feature_flags_clients ( + id bigint NOT NULL, + project_id integer NOT NULL, + token_encrypted character varying +); + +CREATE SEQUENCE public.operations_feature_flags_clients_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.operations_feature_flags_clients_id_seq OWNED BY public.operations_feature_flags_clients.id; + +CREATE SEQUENCE public.operations_feature_flags_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.operations_feature_flags_id_seq OWNED BY public.operations_feature_flags.id; + +CREATE TABLE public.operations_scopes ( + id bigint NOT NULL, + strategy_id bigint NOT NULL, + environment_scope character varying(255) NOT NULL +); + +CREATE SEQUENCE public.operations_scopes_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.operations_scopes_id_seq OWNED BY public.operations_scopes.id; + +CREATE TABLE public.operations_strategies ( + id bigint NOT NULL, + feature_flag_id bigint NOT NULL, + name character varying(255) NOT NULL, + parameters jsonb DEFAULT '{}'::jsonb NOT NULL +); + +CREATE SEQUENCE public.operations_strategies_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.operations_strategies_id_seq OWNED BY public.operations_strategies.id; + +CREATE TABLE public.packages_build_infos ( + id bigint NOT NULL, + package_id integer NOT NULL, + pipeline_id integer +); + +CREATE SEQUENCE public.packages_build_infos_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.packages_build_infos_id_seq OWNED BY public.packages_build_infos.id; + +CREATE TABLE public.packages_conan_file_metadata ( + id bigint NOT NULL, + package_file_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + recipe_revision character varying(255) DEFAULT '0'::character varying NOT NULL, + package_revision character varying(255), + conan_package_reference character varying(255), + conan_file_type smallint NOT NULL +); + +CREATE SEQUENCE public.packages_conan_file_metadata_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.packages_conan_file_metadata_id_seq OWNED BY public.packages_conan_file_metadata.id; + +CREATE TABLE public.packages_conan_metadata ( + id bigint NOT NULL, + package_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + package_username character varying(255) NOT NULL, + package_channel character varying(255) NOT NULL +); + +CREATE SEQUENCE public.packages_conan_metadata_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.packages_conan_metadata_id_seq OWNED BY public.packages_conan_metadata.id; + +CREATE TABLE public.packages_dependencies ( + id bigint NOT NULL, + name character varying(255) NOT NULL, + version_pattern character varying(255) NOT NULL +); + +CREATE SEQUENCE public.packages_dependencies_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.packages_dependencies_id_seq OWNED BY public.packages_dependencies.id; + +CREATE TABLE public.packages_dependency_links ( + id bigint NOT NULL, + package_id bigint NOT NULL, + dependency_id bigint NOT NULL, + dependency_type smallint NOT NULL +); + +CREATE SEQUENCE public.packages_dependency_links_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.packages_dependency_links_id_seq OWNED BY public.packages_dependency_links.id; + +CREATE TABLE public.packages_maven_metadata ( + id bigint NOT NULL, + package_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + app_group character varying NOT NULL, + app_name character varying NOT NULL, + app_version character varying, + path character varying(512) NOT NULL +); + +CREATE SEQUENCE public.packages_maven_metadata_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.packages_maven_metadata_id_seq OWNED BY public.packages_maven_metadata.id; + +CREATE TABLE public.packages_package_files ( + id bigint NOT NULL, + package_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + size bigint, + file_store integer, + file_md5 bytea, + file_sha1 bytea, + file_name character varying NOT NULL, + file text NOT NULL, + file_sha256 bytea +); + +CREATE SEQUENCE public.packages_package_files_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.packages_package_files_id_seq OWNED BY public.packages_package_files.id; + +CREATE TABLE public.packages_packages ( + id bigint NOT NULL, + project_id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + name character varying NOT NULL, + version character varying, + package_type smallint NOT NULL +); + +CREATE SEQUENCE public.packages_packages_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.packages_packages_id_seq OWNED BY public.packages_packages.id; + +CREATE TABLE public.packages_tags ( + id bigint NOT NULL, + package_id integer NOT NULL, + name character varying(255) NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL +); + +CREATE SEQUENCE public.packages_tags_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.packages_tags_id_seq OWNED BY public.packages_tags.id; + +CREATE TABLE public.pages_domain_acme_orders ( + id bigint NOT NULL, + pages_domain_id integer NOT NULL, + expires_at timestamp with time zone NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + url character varying NOT NULL, + challenge_token character varying NOT NULL, + challenge_file_content text NOT NULL, + encrypted_private_key text NOT NULL, + encrypted_private_key_iv text NOT NULL +); + +CREATE SEQUENCE public.pages_domain_acme_orders_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.pages_domain_acme_orders_id_seq OWNED BY public.pages_domain_acme_orders.id; + +CREATE TABLE public.pages_domains ( + id integer NOT NULL, + project_id integer, + certificate text, + encrypted_key text, + encrypted_key_iv character varying, + encrypted_key_salt character varying, + domain character varying, + verified_at timestamp with time zone, + verification_code character varying NOT NULL, + enabled_until timestamp with time zone, + remove_at timestamp with time zone, + auto_ssl_enabled boolean DEFAULT false NOT NULL, + certificate_valid_not_before timestamp with time zone, + certificate_valid_not_after timestamp with time zone, + certificate_source smallint DEFAULT 0 NOT NULL, + wildcard boolean DEFAULT false NOT NULL, + usage smallint DEFAULT 0 NOT NULL, + scope smallint DEFAULT 2 NOT NULL +); + +CREATE SEQUENCE public.pages_domains_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.pages_domains_id_seq OWNED BY public.pages_domains.id; + +CREATE TABLE public.path_locks ( + id integer NOT NULL, + path character varying NOT NULL, + project_id integer, + user_id integer, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL +); + +CREATE SEQUENCE public.path_locks_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.path_locks_id_seq OWNED BY public.path_locks.id; + +CREATE TABLE public.personal_access_tokens ( + id integer NOT NULL, + user_id integer NOT NULL, + name character varying NOT NULL, + revoked boolean DEFAULT false, + expires_at date, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + scopes character varying DEFAULT '--- [] +'::character varying NOT NULL, + impersonation boolean DEFAULT false NOT NULL, + token_digest character varying, + expire_notification_delivered boolean DEFAULT false NOT NULL +); + +CREATE SEQUENCE public.personal_access_tokens_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.personal_access_tokens_id_seq OWNED BY public.personal_access_tokens.id; + +CREATE TABLE public.plan_limits ( + id bigint NOT NULL, + plan_id bigint NOT NULL, + ci_active_pipelines integer DEFAULT 0 NOT NULL, + ci_pipeline_size integer DEFAULT 0 NOT NULL, + ci_active_jobs integer DEFAULT 0 NOT NULL, + project_hooks integer DEFAULT 0 NOT NULL, + group_hooks integer DEFAULT 0 NOT NULL, + ci_project_subscriptions integer DEFAULT 0 NOT NULL, + ci_pipeline_schedules integer DEFAULT 0 NOT NULL +); + +CREATE SEQUENCE public.plan_limits_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.plan_limits_id_seq OWNED BY public.plan_limits.id; + +CREATE TABLE public.plans ( + id integer NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + name character varying, + title character varying +); + +CREATE SEQUENCE public.plans_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.plans_id_seq OWNED BY public.plans.id; + +CREATE TABLE public.pool_repositories ( + id bigint NOT NULL, + shard_id integer NOT NULL, + disk_path character varying, + state character varying, + source_project_id integer +); + +CREATE SEQUENCE public.pool_repositories_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.pool_repositories_id_seq OWNED BY public.pool_repositories.id; + +CREATE TABLE public.programming_languages ( + id integer NOT NULL, + name character varying NOT NULL, + color character varying NOT NULL, + created_at timestamp with time zone NOT NULL +); + +CREATE SEQUENCE public.programming_languages_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.programming_languages_id_seq OWNED BY public.programming_languages.id; + +CREATE TABLE public.project_alerting_settings ( + project_id integer NOT NULL, + encrypted_token character varying NOT NULL, + encrypted_token_iv character varying NOT NULL +); + +CREATE TABLE public.project_aliases ( + id bigint NOT NULL, + project_id integer NOT NULL, + name character varying NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL +); + +CREATE SEQUENCE public.project_aliases_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.project_aliases_id_seq OWNED BY public.project_aliases.id; + +CREATE TABLE public.project_authorizations ( + user_id integer NOT NULL, + project_id integer NOT NULL, + access_level integer NOT NULL +); + +CREATE TABLE public.project_auto_devops ( + id integer NOT NULL, + project_id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + enabled boolean, + deploy_strategy integer DEFAULT 0 NOT NULL +); + +CREATE SEQUENCE public.project_auto_devops_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.project_auto_devops_id_seq OWNED BY public.project_auto_devops.id; + +CREATE TABLE public.project_ci_cd_settings ( + id integer NOT NULL, + project_id integer NOT NULL, + group_runners_enabled boolean DEFAULT true NOT NULL, + merge_pipelines_enabled boolean, + default_git_depth integer, + forward_deployment_enabled boolean +); + +CREATE SEQUENCE public.project_ci_cd_settings_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.project_ci_cd_settings_id_seq OWNED BY public.project_ci_cd_settings.id; + +CREATE TABLE public.project_custom_attributes ( + id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + project_id integer NOT NULL, + key character varying NOT NULL, + value character varying NOT NULL +); + +CREATE SEQUENCE public.project_custom_attributes_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.project_custom_attributes_id_seq OWNED BY public.project_custom_attributes.id; + +CREATE TABLE public.project_daily_statistics ( + id bigint NOT NULL, + project_id integer NOT NULL, + fetch_count integer NOT NULL, + date date +); + +CREATE SEQUENCE public.project_daily_statistics_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.project_daily_statistics_id_seq OWNED BY public.project_daily_statistics.id; + +CREATE TABLE public.project_deploy_tokens ( + id integer NOT NULL, + project_id integer NOT NULL, + deploy_token_id integer NOT NULL, + created_at timestamp with time zone NOT NULL +); + +CREATE SEQUENCE public.project_deploy_tokens_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.project_deploy_tokens_id_seq OWNED BY public.project_deploy_tokens.id; + +CREATE TABLE public.project_error_tracking_settings ( + project_id integer NOT NULL, + enabled boolean DEFAULT false NOT NULL, + api_url character varying, + encrypted_token character varying, + encrypted_token_iv character varying, + project_name character varying, + organization_name character varying +); + +CREATE TABLE public.project_export_jobs ( + id bigint NOT NULL, + project_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + status smallint DEFAULT 0 NOT NULL, + jid character varying(100) NOT NULL +); + +CREATE SEQUENCE public.project_export_jobs_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.project_export_jobs_id_seq OWNED BY public.project_export_jobs.id; + +CREATE TABLE public.project_feature_usages ( + project_id integer NOT NULL, + jira_dvcs_cloud_last_sync_at timestamp without time zone, + jira_dvcs_server_last_sync_at timestamp without time zone +); + +CREATE TABLE public.project_features ( + id integer NOT NULL, + project_id integer NOT NULL, + merge_requests_access_level integer, + issues_access_level integer, + wiki_access_level integer, + snippets_access_level integer DEFAULT 20 NOT NULL, + builds_access_level integer, + created_at timestamp without time zone, + updated_at timestamp without time zone, + repository_access_level integer DEFAULT 20 NOT NULL, + pages_access_level integer NOT NULL, + forking_access_level integer +); + +CREATE SEQUENCE public.project_features_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.project_features_id_seq OWNED BY public.project_features.id; + +CREATE TABLE public.project_group_links ( + id integer NOT NULL, + project_id integer NOT NULL, + group_id integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + group_access integer DEFAULT 30 NOT NULL, + expires_at date +); + +CREATE SEQUENCE public.project_group_links_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.project_group_links_id_seq OWNED BY public.project_group_links.id; + +CREATE TABLE public.project_import_data ( + id integer NOT NULL, + project_id integer, + data text, + encrypted_credentials text, + encrypted_credentials_iv character varying, + encrypted_credentials_salt character varying +); + +CREATE SEQUENCE public.project_import_data_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.project_import_data_id_seq OWNED BY public.project_import_data.id; + +CREATE TABLE public.project_incident_management_settings ( + project_id integer NOT NULL, + create_issue boolean DEFAULT true NOT NULL, + send_email boolean DEFAULT false NOT NULL, + issue_template_key text +); + +CREATE SEQUENCE public.project_incident_management_settings_project_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.project_incident_management_settings_project_id_seq OWNED BY public.project_incident_management_settings.project_id; + +CREATE TABLE public.project_metrics_settings ( + project_id integer NOT NULL, + external_dashboard_url character varying NOT NULL +); + +CREATE TABLE public.project_mirror_data ( + id integer NOT NULL, + project_id integer NOT NULL, + retry_count integer DEFAULT 0 NOT NULL, + last_update_started_at timestamp without time zone, + last_update_scheduled_at timestamp without time zone, + next_execution_timestamp timestamp without time zone, + status character varying, + jid character varying, + last_error text, + last_update_at timestamp with time zone, + last_successful_update_at timestamp with time zone +); + +CREATE SEQUENCE public.project_mirror_data_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.project_mirror_data_id_seq OWNED BY public.project_mirror_data.id; + +CREATE TABLE public.project_pages_metadata ( + project_id bigint NOT NULL, + deployed boolean DEFAULT false NOT NULL +); + +CREATE TABLE public.project_repositories ( + id bigint NOT NULL, + shard_id integer NOT NULL, + disk_path character varying NOT NULL, + project_id integer NOT NULL +); + +CREATE SEQUENCE public.project_repositories_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.project_repositories_id_seq OWNED BY public.project_repositories.id; + +CREATE TABLE public.project_repository_states ( + id integer NOT NULL, + project_id integer NOT NULL, + repository_verification_checksum bytea, + wiki_verification_checksum bytea, + last_repository_verification_failure character varying, + last_wiki_verification_failure character varying, + repository_retry_at timestamp with time zone, + wiki_retry_at timestamp with time zone, + repository_retry_count integer, + wiki_retry_count integer, + last_repository_verification_ran_at timestamp with time zone, + last_wiki_verification_ran_at timestamp with time zone +); + +CREATE SEQUENCE public.project_repository_states_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.project_repository_states_id_seq OWNED BY public.project_repository_states.id; + +CREATE TABLE public.project_settings ( + project_id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL +); + +CREATE TABLE public.project_statistics ( + id integer NOT NULL, + project_id integer NOT NULL, + namespace_id integer NOT NULL, + commit_count bigint DEFAULT 0 NOT NULL, + storage_size bigint DEFAULT 0 NOT NULL, + repository_size bigint DEFAULT 0 NOT NULL, + lfs_objects_size bigint DEFAULT 0 NOT NULL, + build_artifacts_size bigint DEFAULT 0 NOT NULL, + shared_runners_seconds bigint DEFAULT 0 NOT NULL, + shared_runners_seconds_last_reset timestamp without time zone, + packages_size bigint DEFAULT 0 NOT NULL, + wiki_size bigint +); + +CREATE SEQUENCE public.project_statistics_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.project_statistics_id_seq OWNED BY public.project_statistics.id; + +CREATE TABLE public.project_tracing_settings ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + project_id integer NOT NULL, + external_url character varying NOT NULL +); + +CREATE SEQUENCE public.project_tracing_settings_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.project_tracing_settings_id_seq OWNED BY public.project_tracing_settings.id; + +CREATE TABLE public.projects ( + id integer NOT NULL, + name character varying, + path character varying, + description text, + created_at timestamp without time zone, + updated_at timestamp without time zone, + creator_id integer, + namespace_id integer NOT NULL, + last_activity_at timestamp without time zone, + import_url character varying, + visibility_level integer DEFAULT 0 NOT NULL, + archived boolean DEFAULT false NOT NULL, + avatar character varying, + merge_requests_template text, + star_count integer DEFAULT 0 NOT NULL, + merge_requests_rebase_enabled boolean DEFAULT false, + import_type character varying, + import_source character varying, + approvals_before_merge integer DEFAULT 0 NOT NULL, + reset_approvals_on_push boolean DEFAULT true, + merge_requests_ff_only_enabled boolean DEFAULT false, + issues_template text, + mirror boolean DEFAULT false NOT NULL, + mirror_last_update_at timestamp without time zone, + mirror_last_successful_update_at timestamp without time zone, + mirror_user_id integer, + shared_runners_enabled boolean DEFAULT true NOT NULL, + runners_token character varying, + build_coverage_regex character varying, + build_allow_git_fetch boolean DEFAULT true NOT NULL, + build_timeout integer DEFAULT 3600 NOT NULL, + mirror_trigger_builds boolean DEFAULT false NOT NULL, + pending_delete boolean DEFAULT false, + public_builds boolean DEFAULT true NOT NULL, + last_repository_check_failed boolean, + last_repository_check_at timestamp without time zone, + container_registry_enabled boolean, + only_allow_merge_if_pipeline_succeeds boolean DEFAULT false NOT NULL, + has_external_issue_tracker boolean, + repository_storage character varying DEFAULT 'default'::character varying NOT NULL, + repository_read_only boolean, + request_access_enabled boolean DEFAULT true NOT NULL, + has_external_wiki boolean, + ci_config_path character varying, + lfs_enabled boolean, + description_html text, + only_allow_merge_if_all_discussions_are_resolved boolean, + repository_size_limit bigint, + printing_merge_request_link_enabled boolean DEFAULT true NOT NULL, + auto_cancel_pending_pipelines integer DEFAULT 1 NOT NULL, + service_desk_enabled boolean DEFAULT true, + cached_markdown_version integer, + delete_error text, + last_repository_updated_at timestamp without time zone, + disable_overriding_approvers_per_merge_request boolean, + storage_version smallint, + resolve_outdated_diff_discussions boolean, + remote_mirror_available_overridden boolean, + only_mirror_protected_branches boolean, + pull_mirror_available_overridden boolean, + jobs_cache_index integer, + external_authorization_classification_label character varying, + mirror_overwrites_diverged_branches boolean, + pages_https_only boolean DEFAULT true, + external_webhook_token character varying, + packages_enabled boolean, + merge_requests_author_approval boolean, + pool_repository_id bigint, + runners_token_encrypted character varying, + bfg_object_map character varying, + detected_repository_languages boolean, + merge_requests_disable_committers_approval boolean, + require_password_to_approve boolean, + emails_disabled boolean, + max_pages_size integer, + max_artifacts_size integer, + pull_mirror_branch_prefix character varying(50), + remove_source_branch_after_merge boolean, + marked_for_deletion_at date, + marked_for_deletion_by_user_id integer, + autoclose_referenced_issues boolean, + suggestion_commit_message character varying(255) +); + +CREATE SEQUENCE public.projects_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.projects_id_seq OWNED BY public.projects.id; + +CREATE TABLE public.prometheus_alert_events ( + id bigint NOT NULL, + project_id integer NOT NULL, + prometheus_alert_id integer NOT NULL, + started_at timestamp with time zone NOT NULL, + ended_at timestamp with time zone, + status smallint, + payload_key character varying +); + +CREATE SEQUENCE public.prometheus_alert_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.prometheus_alert_events_id_seq OWNED BY public.prometheus_alert_events.id; + +CREATE TABLE public.prometheus_alerts ( + id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + threshold double precision NOT NULL, + operator integer NOT NULL, + environment_id integer NOT NULL, + project_id integer NOT NULL, + prometheus_metric_id integer NOT NULL +); + +CREATE SEQUENCE public.prometheus_alerts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.prometheus_alerts_id_seq OWNED BY public.prometheus_alerts.id; + +CREATE TABLE public.prometheus_metrics ( + id integer NOT NULL, + project_id integer, + title character varying NOT NULL, + query character varying NOT NULL, + y_label character varying NOT NULL, + unit character varying NOT NULL, + legend character varying, + "group" integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + common boolean DEFAULT false NOT NULL, + identifier character varying +); + +CREATE SEQUENCE public.prometheus_metrics_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.prometheus_metrics_id_seq OWNED BY public.prometheus_metrics.id; + +CREATE TABLE public.protected_branch_merge_access_levels ( + id integer NOT NULL, + protected_branch_id integer NOT NULL, + access_level integer DEFAULT 40, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + user_id integer, + group_id integer +); + +CREATE SEQUENCE public.protected_branch_merge_access_levels_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.protected_branch_merge_access_levels_id_seq OWNED BY public.protected_branch_merge_access_levels.id; + +CREATE TABLE public.protected_branch_push_access_levels ( + id integer NOT NULL, + protected_branch_id integer NOT NULL, + access_level integer DEFAULT 40, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + user_id integer, + group_id integer +); + +CREATE SEQUENCE public.protected_branch_push_access_levels_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.protected_branch_push_access_levels_id_seq OWNED BY public.protected_branch_push_access_levels.id; + +CREATE TABLE public.protected_branch_unprotect_access_levels ( + id integer NOT NULL, + protected_branch_id integer NOT NULL, + access_level integer DEFAULT 40, + user_id integer, + group_id integer +); + +CREATE SEQUENCE public.protected_branch_unprotect_access_levels_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.protected_branch_unprotect_access_levels_id_seq OWNED BY public.protected_branch_unprotect_access_levels.id; + +CREATE TABLE public.protected_branches ( + id integer NOT NULL, + project_id integer NOT NULL, + name character varying NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + code_owner_approval_required boolean DEFAULT false NOT NULL +); + +CREATE SEQUENCE public.protected_branches_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.protected_branches_id_seq OWNED BY public.protected_branches.id; + +CREATE TABLE public.protected_environment_deploy_access_levels ( + id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + access_level integer DEFAULT 40, + protected_environment_id integer NOT NULL, + user_id integer, + group_id integer +); + +CREATE SEQUENCE public.protected_environment_deploy_access_levels_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.protected_environment_deploy_access_levels_id_seq OWNED BY public.protected_environment_deploy_access_levels.id; + +CREATE TABLE public.protected_environments ( + id integer NOT NULL, + project_id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + name character varying NOT NULL +); + +CREATE SEQUENCE public.protected_environments_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.protected_environments_id_seq OWNED BY public.protected_environments.id; + +CREATE TABLE public.protected_tag_create_access_levels ( + id integer NOT NULL, + protected_tag_id integer NOT NULL, + access_level integer DEFAULT 40, + user_id integer, + group_id integer, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL +); + +CREATE SEQUENCE public.protected_tag_create_access_levels_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.protected_tag_create_access_levels_id_seq OWNED BY public.protected_tag_create_access_levels.id; + +CREATE TABLE public.protected_tags ( + id integer NOT NULL, + project_id integer NOT NULL, + name character varying NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL +); + +CREATE SEQUENCE public.protected_tags_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.protected_tags_id_seq OWNED BY public.protected_tags.id; + +CREATE TABLE public.push_event_payloads ( + commit_count bigint NOT NULL, + event_id integer NOT NULL, + action smallint NOT NULL, + ref_type smallint NOT NULL, + commit_from bytea, + commit_to bytea, + ref text, + commit_title character varying(70), + ref_count integer +); + +CREATE TABLE public.push_rules ( + id integer NOT NULL, + force_push_regex character varying, + delete_branch_regex character varying, + commit_message_regex character varying, + deny_delete_tag boolean, + project_id integer, + created_at timestamp without time zone, + updated_at timestamp without time zone, + author_email_regex character varying, + member_check boolean DEFAULT false NOT NULL, + file_name_regex character varying, + is_sample boolean DEFAULT false, + max_file_size integer DEFAULT 0 NOT NULL, + prevent_secrets boolean DEFAULT false NOT NULL, + branch_name_regex character varying, + reject_unsigned_commits boolean, + commit_committer_check boolean, + regexp_uses_re2 boolean DEFAULT true, + commit_message_negative_regex character varying +); + +CREATE SEQUENCE public.push_rules_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.push_rules_id_seq OWNED BY public.push_rules.id; + +CREATE TABLE public.redirect_routes ( + id integer NOT NULL, + source_id integer NOT NULL, + source_type character varying NOT NULL, + path character varying NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL +); + +CREATE SEQUENCE public.redirect_routes_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.redirect_routes_id_seq OWNED BY public.redirect_routes.id; + +CREATE TABLE public.release_links ( + id bigint NOT NULL, + release_id integer NOT NULL, + url character varying NOT NULL, + name character varying NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + filepath character varying(128) +); + +CREATE SEQUENCE public.release_links_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.release_links_id_seq OWNED BY public.release_links.id; + +CREATE TABLE public.releases ( + id integer NOT NULL, + tag character varying, + description text, + project_id integer, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + description_html text, + cached_markdown_version integer, + author_id integer, + name character varying, + sha character varying, + released_at timestamp with time zone NOT NULL +); + +CREATE SEQUENCE public.releases_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.releases_id_seq OWNED BY public.releases.id; + +CREATE TABLE public.remote_mirrors ( + id integer NOT NULL, + project_id integer, + url character varying, + enabled boolean DEFAULT false, + update_status character varying, + last_update_at timestamp without time zone, + last_successful_update_at timestamp without time zone, + last_error character varying, + encrypted_credentials text, + encrypted_credentials_iv character varying, + encrypted_credentials_salt character varying, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + last_update_started_at timestamp without time zone, + only_protected_branches boolean DEFAULT false NOT NULL, + remote_name character varying, + error_notification_sent boolean, + keep_divergent_refs boolean +); + +CREATE SEQUENCE public.remote_mirrors_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.remote_mirrors_id_seq OWNED BY public.remote_mirrors.id; + +CREATE TABLE public.repository_languages ( + project_id integer NOT NULL, + programming_language_id integer NOT NULL, + share double precision NOT NULL +); + +CREATE TABLE public.requirements ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + project_id integer NOT NULL, + author_id integer, + iid integer NOT NULL, + cached_markdown_version integer, + state smallint DEFAULT 1 NOT NULL, + title character varying(255) NOT NULL, + title_html text +); + +CREATE SEQUENCE public.requirements_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.requirements_id_seq OWNED BY public.requirements.id; + +CREATE TABLE public.resource_label_events ( + id bigint NOT NULL, + action integer NOT NULL, + issue_id integer, + merge_request_id integer, + epic_id integer, + label_id integer, + user_id integer, + created_at timestamp with time zone NOT NULL, + cached_markdown_version integer, + reference text, + reference_html text +); + +CREATE SEQUENCE public.resource_label_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.resource_label_events_id_seq OWNED BY public.resource_label_events.id; + +CREATE TABLE public.resource_milestone_events ( + id bigint NOT NULL, + user_id bigint NOT NULL, + issue_id bigint, + merge_request_id bigint, + milestone_id bigint, + action smallint NOT NULL, + state smallint NOT NULL, + cached_markdown_version integer, + reference text, + reference_html text, + created_at timestamp with time zone NOT NULL +); + +CREATE SEQUENCE public.resource_milestone_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.resource_milestone_events_id_seq OWNED BY public.resource_milestone_events.id; + +CREATE TABLE public.resource_weight_events ( + id bigint NOT NULL, + user_id bigint NOT NULL, + issue_id bigint NOT NULL, + weight integer, + created_at timestamp with time zone NOT NULL +); + +CREATE SEQUENCE public.resource_weight_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.resource_weight_events_id_seq OWNED BY public.resource_weight_events.id; + +CREATE TABLE public.reviews ( + id bigint NOT NULL, + author_id integer, + merge_request_id integer NOT NULL, + project_id integer NOT NULL, + created_at timestamp with time zone NOT NULL +); + +CREATE SEQUENCE public.reviews_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.reviews_id_seq OWNED BY public.reviews.id; + +CREATE TABLE public.routes ( + id integer NOT NULL, + source_id integer NOT NULL, + source_type character varying NOT NULL, + path character varying NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + name character varying +); + +CREATE SEQUENCE public.routes_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.routes_id_seq OWNED BY public.routes.id; + +CREATE TABLE public.saml_providers ( + id integer NOT NULL, + group_id integer NOT NULL, + enabled boolean NOT NULL, + certificate_fingerprint character varying NOT NULL, + sso_url character varying NOT NULL, + enforced_sso boolean DEFAULT false NOT NULL, + enforced_group_managed_accounts boolean DEFAULT false NOT NULL, + prohibited_outer_forks boolean DEFAULT true NOT NULL +); + +CREATE SEQUENCE public.saml_providers_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.saml_providers_id_seq OWNED BY public.saml_providers.id; + +CREATE TABLE public.schema_migrations ( + version character varying NOT NULL +); + +CREATE TABLE public.scim_identities ( + id bigint NOT NULL, + group_id bigint NOT NULL, + user_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + active boolean DEFAULT false, + extern_uid character varying(255) NOT NULL +); + +CREATE SEQUENCE public.scim_identities_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.scim_identities_id_seq OWNED BY public.scim_identities.id; + +CREATE TABLE public.scim_oauth_access_tokens ( + id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + group_id integer NOT NULL, + token_encrypted character varying NOT NULL +); + +CREATE SEQUENCE public.scim_oauth_access_tokens_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.scim_oauth_access_tokens_id_seq OWNED BY public.scim_oauth_access_tokens.id; + +CREATE TABLE public.security_scans ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + build_id bigint NOT NULL, + scan_type smallint NOT NULL +); + +CREATE SEQUENCE public.security_scans_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.security_scans_id_seq OWNED BY public.security_scans.id; + +CREATE TABLE public.self_managed_prometheus_alert_events ( + id bigint NOT NULL, + project_id bigint NOT NULL, + environment_id bigint, + started_at timestamp with time zone NOT NULL, + ended_at timestamp with time zone, + status smallint NOT NULL, + title character varying(255) NOT NULL, + query_expression character varying(255), + payload_key character varying(255) NOT NULL +); + +CREATE SEQUENCE public.self_managed_prometheus_alert_events_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.self_managed_prometheus_alert_events_id_seq OWNED BY public.self_managed_prometheus_alert_events.id; + +CREATE TABLE public.sent_notifications ( + id integer NOT NULL, + project_id integer, + noteable_id integer, + noteable_type character varying, + recipient_id integer, + commit_id character varying, + reply_key character varying NOT NULL, + line_code character varying, + note_type character varying, + "position" text, + in_reply_to_discussion_id character varying +); + +CREATE SEQUENCE public.sent_notifications_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.sent_notifications_id_seq OWNED BY public.sent_notifications.id; + +CREATE TABLE public.sentry_issues ( + id bigint NOT NULL, + issue_id bigint NOT NULL, + sentry_issue_identifier bigint NOT NULL +); + +CREATE SEQUENCE public.sentry_issues_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.sentry_issues_id_seq OWNED BY public.sentry_issues.id; + +CREATE TABLE public.serverless_domain_cluster ( + uuid character varying(14) NOT NULL, + pages_domain_id bigint NOT NULL, + clusters_applications_knative_id bigint NOT NULL, + creator_id bigint, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + encrypted_key text, + encrypted_key_iv character varying(255), + certificate text +); + +CREATE TABLE public.service_desk_settings ( + project_id bigint NOT NULL, + issue_template_key character varying(255), + outgoing_name character varying(255), + project_key character varying(255) +); + +CREATE TABLE public.services ( + id integer NOT NULL, + type character varying, + title character varying, + project_id integer, + created_at timestamp without time zone, + updated_at timestamp without time zone, + active boolean DEFAULT false NOT NULL, + properties text, + push_events boolean DEFAULT true, + issues_events boolean DEFAULT true, + merge_requests_events boolean DEFAULT true, + tag_push_events boolean DEFAULT true, + note_events boolean DEFAULT true NOT NULL, + category character varying DEFAULT 'common'::character varying NOT NULL, + "default" boolean DEFAULT false, + wiki_page_events boolean DEFAULT true, + pipeline_events boolean DEFAULT false NOT NULL, + confidential_issues_events boolean DEFAULT true NOT NULL, + commit_events boolean DEFAULT true NOT NULL, + job_events boolean DEFAULT false NOT NULL, + confidential_note_events boolean DEFAULT true, + deployment_events boolean DEFAULT false NOT NULL, + description character varying(500), + comment_on_event_enabled boolean DEFAULT true NOT NULL, + template boolean DEFAULT false, + instance boolean DEFAULT false NOT NULL +); + +CREATE SEQUENCE public.services_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.services_id_seq OWNED BY public.services.id; + +CREATE TABLE public.shards ( + id integer NOT NULL, + name character varying NOT NULL +); + +CREATE SEQUENCE public.shards_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.shards_id_seq OWNED BY public.shards.id; + +CREATE TABLE public.slack_integrations ( + id integer NOT NULL, + service_id integer NOT NULL, + team_id character varying NOT NULL, + team_name character varying NOT NULL, + alias character varying NOT NULL, + user_id character varying NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL +); + +CREATE SEQUENCE public.slack_integrations_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.slack_integrations_id_seq OWNED BY public.slack_integrations.id; + +CREATE TABLE public.smartcard_identities ( + id bigint NOT NULL, + user_id integer NOT NULL, + subject character varying NOT NULL, + issuer character varying NOT NULL +); + +CREATE SEQUENCE public.smartcard_identities_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.smartcard_identities_id_seq OWNED BY public.smartcard_identities.id; + +CREATE TABLE public.snippet_repositories ( + snippet_id bigint NOT NULL, + shard_id bigint NOT NULL, + disk_path character varying(80) NOT NULL +); + +CREATE TABLE public.snippet_user_mentions ( + id bigint NOT NULL, + snippet_id integer NOT NULL, + note_id integer, + mentioned_users_ids integer[], + mentioned_projects_ids integer[], + mentioned_groups_ids integer[] +); + +CREATE SEQUENCE public.snippet_user_mentions_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.snippet_user_mentions_id_seq OWNED BY public.snippet_user_mentions.id; + +CREATE TABLE public.snippets ( + id integer NOT NULL, + title character varying, + content text, + author_id integer NOT NULL, + project_id integer, + created_at timestamp without time zone, + updated_at timestamp without time zone, + file_name character varying, + type character varying, + visibility_level integer DEFAULT 0 NOT NULL, + title_html text, + content_html text, + cached_markdown_version integer, + description text, + description_html text, + encrypted_secret_token character varying(255), + encrypted_secret_token_iv character varying(255), + secret boolean DEFAULT false NOT NULL +); + +CREATE SEQUENCE public.snippets_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.snippets_id_seq OWNED BY public.snippets.id; + +CREATE TABLE public.software_license_policies ( + id integer NOT NULL, + project_id integer NOT NULL, + software_license_id integer NOT NULL, + classification integer DEFAULT 0 NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL +); + +CREATE SEQUENCE public.software_license_policies_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.software_license_policies_id_seq OWNED BY public.software_license_policies.id; + +CREATE TABLE public.software_licenses ( + id integer NOT NULL, + name character varying NOT NULL, + spdx_identifier character varying(255) +); + +CREATE SEQUENCE public.software_licenses_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.software_licenses_id_seq OWNED BY public.software_licenses.id; + +CREATE TABLE public.spam_logs ( + id integer NOT NULL, + user_id integer, + source_ip character varying, + user_agent character varying, + via_api boolean, + noteable_type character varying, + title character varying, + description text, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + submitted_as_ham boolean DEFAULT false NOT NULL, + recaptcha_verified boolean DEFAULT false NOT NULL +); + +CREATE SEQUENCE public.spam_logs_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.spam_logs_id_seq OWNED BY public.spam_logs.id; + +CREATE TABLE public.status_page_settings ( + project_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + enabled boolean DEFAULT false NOT NULL, + aws_s3_bucket_name character varying(63) NOT NULL, + aws_region character varying(255) NOT NULL, + aws_access_key character varying(255) NOT NULL, + encrypted_aws_secret_key character varying(255) NOT NULL, + encrypted_aws_secret_key_iv character varying(255) NOT NULL +); + +CREATE SEQUENCE public.status_page_settings_project_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.status_page_settings_project_id_seq OWNED BY public.status_page_settings.project_id; + +CREATE TABLE public.subscriptions ( + id integer NOT NULL, + user_id integer, + subscribable_id integer, + subscribable_type character varying, + subscribed boolean, + created_at timestamp without time zone, + updated_at timestamp without time zone, + project_id integer +); + +CREATE SEQUENCE public.subscriptions_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.subscriptions_id_seq OWNED BY public.subscriptions.id; + +CREATE TABLE public.suggestions ( + id bigint NOT NULL, + note_id integer NOT NULL, + relative_order smallint NOT NULL, + applied boolean DEFAULT false NOT NULL, + commit_id character varying, + from_content text NOT NULL, + to_content text NOT NULL, + lines_above integer DEFAULT 0 NOT NULL, + lines_below integer DEFAULT 0 NOT NULL, + outdated boolean DEFAULT false NOT NULL +); + +CREATE SEQUENCE public.suggestions_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.suggestions_id_seq OWNED BY public.suggestions.id; + +CREATE TABLE public.system_note_metadata ( + id integer NOT NULL, + note_id integer NOT NULL, + commit_count integer, + action character varying, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + description_version_id bigint +); + +CREATE SEQUENCE public.system_note_metadata_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.system_note_metadata_id_seq OWNED BY public.system_note_metadata.id; + +CREATE TABLE public.taggings ( + id integer NOT NULL, + tag_id integer, + taggable_id integer, + taggable_type character varying, + tagger_id integer, + tagger_type character varying, + context character varying, + created_at timestamp without time zone +); + +CREATE SEQUENCE public.taggings_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.taggings_id_seq OWNED BY public.taggings.id; + +CREATE TABLE public.tags ( + id integer NOT NULL, + name character varying, + taggings_count integer DEFAULT 0 +); + +CREATE SEQUENCE public.tags_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.tags_id_seq OWNED BY public.tags.id; + +CREATE TABLE public.term_agreements ( + id integer NOT NULL, + term_id integer NOT NULL, + user_id integer NOT NULL, + accepted boolean DEFAULT false NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL +); + +CREATE SEQUENCE public.term_agreements_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.term_agreements_id_seq OWNED BY public.term_agreements.id; + +CREATE TABLE public.timelogs ( + id integer NOT NULL, + time_spent integer NOT NULL, + user_id integer, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + issue_id integer, + merge_request_id integer, + spent_at timestamp without time zone +); + +CREATE SEQUENCE public.timelogs_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.timelogs_id_seq OWNED BY public.timelogs.id; + +CREATE TABLE public.todos ( + id integer NOT NULL, + user_id integer NOT NULL, + project_id integer, + target_id integer, + target_type character varying NOT NULL, + author_id integer NOT NULL, + action integer NOT NULL, + state character varying NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + note_id integer, + commit_id character varying, + group_id integer +); + +CREATE SEQUENCE public.todos_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.todos_id_seq OWNED BY public.todos.id; + +CREATE TABLE public.trending_projects ( + id integer NOT NULL, + project_id integer NOT NULL +); + +CREATE SEQUENCE public.trending_projects_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.trending_projects_id_seq OWNED BY public.trending_projects.id; + +CREATE TABLE public.u2f_registrations ( + id integer NOT NULL, + certificate text, + key_handle character varying, + public_key character varying, + counter integer, + user_id integer, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + name character varying +); + +CREATE SEQUENCE public.u2f_registrations_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.u2f_registrations_id_seq OWNED BY public.u2f_registrations.id; + +CREATE TABLE public.uploads ( + id integer NOT NULL, + size bigint NOT NULL, + path character varying(511) NOT NULL, + checksum character varying(64), + model_id integer, + model_type character varying, + uploader character varying NOT NULL, + created_at timestamp without time zone NOT NULL, + store integer, + mount_point character varying, + secret character varying +); + +CREATE SEQUENCE public.uploads_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.uploads_id_seq OWNED BY public.uploads.id; + +CREATE TABLE public.user_agent_details ( + id integer NOT NULL, + user_agent character varying NOT NULL, + ip_address character varying NOT NULL, + subject_id integer NOT NULL, + subject_type character varying NOT NULL, + submitted boolean DEFAULT false NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL +); + +CREATE SEQUENCE public.user_agent_details_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.user_agent_details_id_seq OWNED BY public.user_agent_details.id; + +CREATE TABLE public.user_callouts ( + id integer NOT NULL, + feature_name integer NOT NULL, + user_id integer NOT NULL, + dismissed_at timestamp with time zone +); + +CREATE SEQUENCE public.user_callouts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.user_callouts_id_seq OWNED BY public.user_callouts.id; + +CREATE TABLE public.user_custom_attributes ( + id integer NOT NULL, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + user_id integer NOT NULL, + key character varying NOT NULL, + value character varying NOT NULL +); + +CREATE SEQUENCE public.user_custom_attributes_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.user_custom_attributes_id_seq OWNED BY public.user_custom_attributes.id; + +CREATE TABLE public.user_details ( + user_id bigint NOT NULL, + job_title character varying(200) DEFAULT ''::character varying NOT NULL +); + +CREATE SEQUENCE public.user_details_user_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.user_details_user_id_seq OWNED BY public.user_details.user_id; + +CREATE TABLE public.user_highest_roles ( + user_id bigint NOT NULL, + updated_at timestamp with time zone NOT NULL, + highest_access_level integer +); + +CREATE TABLE public.user_interacted_projects ( + user_id integer NOT NULL, + project_id integer NOT NULL +); + +CREATE TABLE public.user_preferences ( + id integer NOT NULL, + user_id integer NOT NULL, + issue_notes_filter smallint DEFAULT 0 NOT NULL, + merge_request_notes_filter smallint DEFAULT 0 NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + epics_sort character varying, + roadmap_epics_state integer, + epic_notes_filter smallint DEFAULT 0 NOT NULL, + issues_sort character varying, + merge_requests_sort character varying, + roadmaps_sort character varying, + first_day_of_week integer, + timezone character varying, + time_display_relative boolean, + time_format_in_24h boolean, + projects_sort character varying(64), + show_whitespace_in_diffs boolean DEFAULT true NOT NULL, + sourcegraph_enabled boolean, + setup_for_company boolean, + render_whitespace_in_code boolean, + tab_width smallint, + feature_filter_type bigint +); + +CREATE SEQUENCE public.user_preferences_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.user_preferences_id_seq OWNED BY public.user_preferences.id; + +CREATE TABLE public.user_statuses ( + user_id integer NOT NULL, + cached_markdown_version integer, + emoji character varying DEFAULT 'speech_balloon'::character varying NOT NULL, + message character varying(100), + message_html character varying +); + +CREATE SEQUENCE public.user_statuses_user_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.user_statuses_user_id_seq OWNED BY public.user_statuses.user_id; + +CREATE TABLE public.user_synced_attributes_metadata ( + id integer NOT NULL, + name_synced boolean DEFAULT false, + email_synced boolean DEFAULT false, + location_synced boolean DEFAULT false, + user_id integer NOT NULL, + provider character varying +); + +CREATE SEQUENCE public.user_synced_attributes_metadata_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.user_synced_attributes_metadata_id_seq OWNED BY public.user_synced_attributes_metadata.id; + +CREATE TABLE public.users ( + id integer NOT NULL, + email character varying DEFAULT ''::character varying NOT NULL, + encrypted_password character varying DEFAULT ''::character varying NOT NULL, + reset_password_token character varying, + reset_password_sent_at timestamp without time zone, + remember_created_at timestamp without time zone, + sign_in_count integer DEFAULT 0, + current_sign_in_at timestamp without time zone, + last_sign_in_at timestamp without time zone, + current_sign_in_ip character varying, + last_sign_in_ip character varying, + created_at timestamp without time zone, + updated_at timestamp without time zone, + name character varying, + admin boolean DEFAULT false NOT NULL, + projects_limit integer NOT NULL, + skype character varying DEFAULT ''::character varying NOT NULL, + linkedin character varying DEFAULT ''::character varying NOT NULL, + twitter character varying DEFAULT ''::character varying NOT NULL, + bio character varying, + failed_attempts integer DEFAULT 0, + locked_at timestamp without time zone, + username character varying, + can_create_group boolean DEFAULT true NOT NULL, + can_create_team boolean DEFAULT true NOT NULL, + state character varying, + color_scheme_id integer DEFAULT 1 NOT NULL, + password_expires_at timestamp without time zone, + created_by_id integer, + last_credential_check_at timestamp without time zone, + avatar character varying, + confirmation_token character varying, + confirmed_at timestamp without time zone, + confirmation_sent_at timestamp without time zone, + unconfirmed_email character varying, + hide_no_ssh_key boolean DEFAULT false, + website_url character varying DEFAULT ''::character varying NOT NULL, + admin_email_unsubscribed_at timestamp without time zone, + notification_email character varying, + hide_no_password boolean DEFAULT false, + password_automatically_set boolean DEFAULT false, + location character varying, + encrypted_otp_secret character varying, + encrypted_otp_secret_iv character varying, + encrypted_otp_secret_salt character varying, + otp_required_for_login boolean DEFAULT false NOT NULL, + otp_backup_codes text, + public_email character varying DEFAULT ''::character varying NOT NULL, + dashboard integer DEFAULT 0, + project_view integer DEFAULT 0, + consumed_timestep integer, + layout integer DEFAULT 0, + hide_project_limit boolean DEFAULT false, + note text, + unlock_token character varying, + otp_grace_period_started_at timestamp without time zone, + external boolean DEFAULT false, + incoming_email_token character varying, + organization character varying, + auditor boolean DEFAULT false NOT NULL, + require_two_factor_authentication_from_group boolean DEFAULT false NOT NULL, + two_factor_grace_period integer DEFAULT 48 NOT NULL, + ghost boolean, + last_activity_on date, + notified_of_own_activity boolean, + preferred_language character varying, + email_opted_in boolean, + email_opted_in_ip character varying, + email_opted_in_source_id integer, + email_opted_in_at timestamp without time zone, + theme_id smallint, + accepted_term_id integer, + feed_token character varying, + private_profile boolean DEFAULT false NOT NULL, + roadmap_layout smallint, + include_private_contributions boolean, + commit_email character varying, + group_view integer, + managing_group_id integer, + bot_type smallint, + first_name character varying(255), + last_name character varying(255), + static_object_token character varying(255), + role smallint, + user_type smallint +); + +CREATE SEQUENCE public.users_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.users_id_seq OWNED BY public.users.id; + +CREATE TABLE public.users_ops_dashboard_projects ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + user_id integer NOT NULL, + project_id integer NOT NULL +); + +CREATE SEQUENCE public.users_ops_dashboard_projects_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.users_ops_dashboard_projects_id_seq OWNED BY public.users_ops_dashboard_projects.id; + +CREATE TABLE public.users_security_dashboard_projects ( + user_id bigint NOT NULL, + project_id bigint NOT NULL +); + +CREATE TABLE public.users_star_projects ( + id integer NOT NULL, + project_id integer NOT NULL, + user_id integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone +); + +CREATE SEQUENCE public.users_star_projects_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.users_star_projects_id_seq OWNED BY public.users_star_projects.id; + +CREATE TABLE public.users_statistics ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + without_groups_and_projects integer DEFAULT 0 NOT NULL, + with_highest_role_guest integer DEFAULT 0 NOT NULL, + with_highest_role_reporter integer DEFAULT 0 NOT NULL, + with_highest_role_developer integer DEFAULT 0 NOT NULL, + with_highest_role_maintainer integer DEFAULT 0 NOT NULL, + with_highest_role_owner integer DEFAULT 0 NOT NULL, + bots integer DEFAULT 0 NOT NULL, + blocked integer DEFAULT 0 NOT NULL +); + +CREATE SEQUENCE public.users_statistics_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.users_statistics_id_seq OWNED BY public.users_statistics.id; + +CREATE TABLE public.vulnerabilities ( + id bigint NOT NULL, + milestone_id bigint, + epic_id bigint, + project_id bigint NOT NULL, + author_id bigint NOT NULL, + updated_by_id bigint, + last_edited_by_id bigint, + start_date date, + due_date date, + last_edited_at timestamp with time zone, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + title character varying(255) NOT NULL, + title_html text, + description text, + description_html text, + start_date_sourcing_milestone_id bigint, + due_date_sourcing_milestone_id bigint, + state smallint DEFAULT 1 NOT NULL, + severity smallint NOT NULL, + severity_overridden boolean DEFAULT false, + confidence smallint NOT NULL, + confidence_overridden boolean DEFAULT false, + resolved_by_id bigint, + resolved_at timestamp with time zone, + report_type smallint NOT NULL, + cached_markdown_version integer, + confirmed_by_id bigint, + confirmed_at timestamp with time zone, + dismissed_at timestamp with time zone, + dismissed_by_id bigint +); + +CREATE SEQUENCE public.vulnerabilities_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.vulnerabilities_id_seq OWNED BY public.vulnerabilities.id; + +CREATE TABLE public.vulnerability_exports ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + started_at timestamp with time zone, + finished_at timestamp with time zone, + status character varying(255) NOT NULL, + file character varying(255), + project_id bigint NOT NULL, + author_id bigint NOT NULL, + file_store integer, + format smallint DEFAULT 0 NOT NULL +); + +CREATE SEQUENCE public.vulnerability_exports_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.vulnerability_exports_id_seq OWNED BY public.vulnerability_exports.id; + +CREATE TABLE public.vulnerability_feedback ( + id integer NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + feedback_type smallint NOT NULL, + category smallint NOT NULL, + project_id integer NOT NULL, + author_id integer NOT NULL, + pipeline_id integer, + issue_id integer, + project_fingerprint character varying(40) NOT NULL, + merge_request_id integer, + comment_author_id integer, + comment text, + comment_timestamp timestamp with time zone +); + +CREATE SEQUENCE public.vulnerability_feedback_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.vulnerability_feedback_id_seq OWNED BY public.vulnerability_feedback.id; + +CREATE TABLE public.vulnerability_identifiers ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + project_id integer NOT NULL, + fingerprint bytea NOT NULL, + external_type character varying NOT NULL, + external_id character varying NOT NULL, + name character varying NOT NULL, + url text +); + +CREATE SEQUENCE public.vulnerability_identifiers_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.vulnerability_identifiers_id_seq OWNED BY public.vulnerability_identifiers.id; + +CREATE TABLE public.vulnerability_issue_links ( + id bigint NOT NULL, + vulnerability_id bigint NOT NULL, + issue_id bigint NOT NULL, + link_type smallint DEFAULT 1 NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL +); + +CREATE SEQUENCE public.vulnerability_issue_links_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.vulnerability_issue_links_id_seq OWNED BY public.vulnerability_issue_links.id; + +CREATE TABLE public.vulnerability_occurrence_identifiers ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + occurrence_id bigint NOT NULL, + identifier_id bigint NOT NULL +); + +CREATE SEQUENCE public.vulnerability_occurrence_identifiers_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.vulnerability_occurrence_identifiers_id_seq OWNED BY public.vulnerability_occurrence_identifiers.id; + +CREATE TABLE public.vulnerability_occurrence_pipelines ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + occurrence_id bigint NOT NULL, + pipeline_id integer NOT NULL +); + +CREATE SEQUENCE public.vulnerability_occurrence_pipelines_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.vulnerability_occurrence_pipelines_id_seq OWNED BY public.vulnerability_occurrence_pipelines.id; + +CREATE TABLE public.vulnerability_occurrences ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + severity smallint NOT NULL, + confidence smallint NOT NULL, + report_type smallint NOT NULL, + project_id integer NOT NULL, + scanner_id bigint NOT NULL, + primary_identifier_id bigint NOT NULL, + project_fingerprint bytea NOT NULL, + location_fingerprint bytea NOT NULL, + uuid character varying(36) NOT NULL, + name character varying NOT NULL, + metadata_version character varying NOT NULL, + raw_metadata text NOT NULL, + vulnerability_id bigint +); + +CREATE SEQUENCE public.vulnerability_occurrences_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.vulnerability_occurrences_id_seq OWNED BY public.vulnerability_occurrences.id; + +CREATE TABLE public.vulnerability_scanners ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + project_id integer NOT NULL, + external_id character varying NOT NULL, + name character varying NOT NULL +); + +CREATE SEQUENCE public.vulnerability_scanners_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.vulnerability_scanners_id_seq OWNED BY public.vulnerability_scanners.id; + +CREATE TABLE public.web_hook_logs ( + id integer NOT NULL, + web_hook_id integer NOT NULL, + trigger character varying, + url character varying, + request_headers text, + request_data text, + response_headers text, + response_body text, + response_status character varying, + execution_duration double precision, + internal_error_message character varying, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL +); + +CREATE SEQUENCE public.web_hook_logs_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.web_hook_logs_id_seq OWNED BY public.web_hook_logs.id; + +CREATE TABLE public.web_hooks ( + id integer NOT NULL, + project_id integer, + created_at timestamp without time zone, + updated_at timestamp without time zone, + type character varying DEFAULT 'ProjectHook'::character varying, + service_id integer, + push_events boolean DEFAULT true NOT NULL, + issues_events boolean DEFAULT false NOT NULL, + merge_requests_events boolean DEFAULT false NOT NULL, + tag_push_events boolean DEFAULT false, + group_id integer, + note_events boolean DEFAULT false NOT NULL, + enable_ssl_verification boolean DEFAULT true, + wiki_page_events boolean DEFAULT false NOT NULL, + pipeline_events boolean DEFAULT false NOT NULL, + confidential_issues_events boolean DEFAULT false NOT NULL, + repository_update_events boolean DEFAULT false NOT NULL, + job_events boolean DEFAULT false NOT NULL, + confidential_note_events boolean, + push_events_branch_filter text, + encrypted_token character varying, + encrypted_token_iv character varying, + encrypted_url character varying, + encrypted_url_iv character varying +); + +CREATE SEQUENCE public.web_hooks_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.web_hooks_id_seq OWNED BY public.web_hooks.id; + +CREATE TABLE public.wiki_page_meta ( + id integer NOT NULL, + project_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + title character varying(255) NOT NULL +); + +CREATE SEQUENCE public.wiki_page_meta_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.wiki_page_meta_id_seq OWNED BY public.wiki_page_meta.id; + +CREATE TABLE public.wiki_page_slugs ( + id integer NOT NULL, + canonical boolean DEFAULT false NOT NULL, + wiki_page_meta_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + slug character varying(2048) NOT NULL +); + +CREATE SEQUENCE public.wiki_page_slugs_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.wiki_page_slugs_id_seq OWNED BY public.wiki_page_slugs.id; + +CREATE TABLE public.x509_certificates ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + subject_key_identifier character varying(255) NOT NULL, + subject character varying(255) NOT NULL, + email character varying(255) NOT NULL, + serial_number bytea NOT NULL, + certificate_status smallint DEFAULT 0 NOT NULL, + x509_issuer_id bigint NOT NULL +); + +CREATE SEQUENCE public.x509_certificates_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.x509_certificates_id_seq OWNED BY public.x509_certificates.id; + +CREATE TABLE public.x509_commit_signatures ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + project_id bigint NOT NULL, + x509_certificate_id bigint NOT NULL, + commit_sha bytea NOT NULL, + verification_status smallint DEFAULT 0 NOT NULL +); + +CREATE SEQUENCE public.x509_commit_signatures_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.x509_commit_signatures_id_seq OWNED BY public.x509_commit_signatures.id; + +CREATE TABLE public.x509_issuers ( + id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + subject_key_identifier character varying(255) NOT NULL, + subject character varying(255) NOT NULL, + crl_url character varying(255) NOT NULL +); + +CREATE SEQUENCE public.x509_issuers_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.x509_issuers_id_seq OWNED BY public.x509_issuers.id; + +CREATE TABLE public.zoom_meetings ( + id bigint NOT NULL, + project_id bigint NOT NULL, + issue_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + issue_status smallint DEFAULT 1 NOT NULL, + url character varying(255) +); + +CREATE SEQUENCE public.zoom_meetings_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE public.zoom_meetings_id_seq OWNED BY public.zoom_meetings.id; + +ALTER TABLE ONLY public.abuse_reports ALTER COLUMN id SET DEFAULT nextval('public.abuse_reports_id_seq'::regclass); + +ALTER TABLE ONLY public.alerts_service_data ALTER COLUMN id SET DEFAULT nextval('public.alerts_service_data_id_seq'::regclass); + +ALTER TABLE ONLY public.allowed_email_domains ALTER COLUMN id SET DEFAULT nextval('public.allowed_email_domains_id_seq'::regclass); + +ALTER TABLE ONLY public.analytics_cycle_analytics_group_stages ALTER COLUMN id SET DEFAULT nextval('public.analytics_cycle_analytics_group_stages_id_seq'::regclass); + +ALTER TABLE ONLY public.analytics_cycle_analytics_project_stages ALTER COLUMN id SET DEFAULT nextval('public.analytics_cycle_analytics_project_stages_id_seq'::regclass); + +ALTER TABLE ONLY public.appearances ALTER COLUMN id SET DEFAULT nextval('public.appearances_id_seq'::regclass); + +ALTER TABLE ONLY public.application_setting_terms ALTER COLUMN id SET DEFAULT nextval('public.application_setting_terms_id_seq'::regclass); + +ALTER TABLE ONLY public.application_settings ALTER COLUMN id SET DEFAULT nextval('public.application_settings_id_seq'::regclass); + +ALTER TABLE ONLY public.approval_merge_request_rule_sources ALTER COLUMN id SET DEFAULT nextval('public.approval_merge_request_rule_sources_id_seq'::regclass); + +ALTER TABLE ONLY public.approval_merge_request_rules ALTER COLUMN id SET DEFAULT nextval('public.approval_merge_request_rules_id_seq'::regclass); + +ALTER TABLE ONLY public.approval_merge_request_rules_approved_approvers ALTER COLUMN id SET DEFAULT nextval('public.approval_merge_request_rules_approved_approvers_id_seq'::regclass); + +ALTER TABLE ONLY public.approval_merge_request_rules_groups ALTER COLUMN id SET DEFAULT nextval('public.approval_merge_request_rules_groups_id_seq'::regclass); + +ALTER TABLE ONLY public.approval_merge_request_rules_users ALTER COLUMN id SET DEFAULT nextval('public.approval_merge_request_rules_users_id_seq'::regclass); + +ALTER TABLE ONLY public.approval_project_rules ALTER COLUMN id SET DEFAULT nextval('public.approval_project_rules_id_seq'::regclass); + +ALTER TABLE ONLY public.approval_project_rules_groups ALTER COLUMN id SET DEFAULT nextval('public.approval_project_rules_groups_id_seq'::regclass); + +ALTER TABLE ONLY public.approval_project_rules_users ALTER COLUMN id SET DEFAULT nextval('public.approval_project_rules_users_id_seq'::regclass); + +ALTER TABLE ONLY public.approvals ALTER COLUMN id SET DEFAULT nextval('public.approvals_id_seq'::regclass); + +ALTER TABLE ONLY public.approver_groups ALTER COLUMN id SET DEFAULT nextval('public.approver_groups_id_seq'::regclass); + +ALTER TABLE ONLY public.approvers ALTER COLUMN id SET DEFAULT nextval('public.approvers_id_seq'::regclass); + +ALTER TABLE ONLY public.audit_events ALTER COLUMN id SET DEFAULT nextval('public.audit_events_id_seq'::regclass); + +ALTER TABLE ONLY public.award_emoji ALTER COLUMN id SET DEFAULT nextval('public.award_emoji_id_seq'::regclass); + +ALTER TABLE ONLY public.badges ALTER COLUMN id SET DEFAULT nextval('public.badges_id_seq'::regclass); + +ALTER TABLE ONLY public.board_assignees ALTER COLUMN id SET DEFAULT nextval('public.board_assignees_id_seq'::regclass); + +ALTER TABLE ONLY public.board_group_recent_visits ALTER COLUMN id SET DEFAULT nextval('public.board_group_recent_visits_id_seq'::regclass); + +ALTER TABLE ONLY public.board_labels ALTER COLUMN id SET DEFAULT nextval('public.board_labels_id_seq'::regclass); + +ALTER TABLE ONLY public.board_project_recent_visits ALTER COLUMN id SET DEFAULT nextval('public.board_project_recent_visits_id_seq'::regclass); + +ALTER TABLE ONLY public.boards ALTER COLUMN id SET DEFAULT nextval('public.boards_id_seq'::regclass); + +ALTER TABLE ONLY public.broadcast_messages ALTER COLUMN id SET DEFAULT nextval('public.broadcast_messages_id_seq'::regclass); + +ALTER TABLE ONLY public.chat_names ALTER COLUMN id SET DEFAULT nextval('public.chat_names_id_seq'::regclass); + +ALTER TABLE ONLY public.chat_teams ALTER COLUMN id SET DEFAULT nextval('public.chat_teams_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_build_needs ALTER COLUMN id SET DEFAULT nextval('public.ci_build_needs_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_build_trace_chunks ALTER COLUMN id SET DEFAULT nextval('public.ci_build_trace_chunks_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_build_trace_section_names ALTER COLUMN id SET DEFAULT nextval('public.ci_build_trace_section_names_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_builds ALTER COLUMN id SET DEFAULT nextval('public.ci_builds_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_builds_metadata ALTER COLUMN id SET DEFAULT nextval('public.ci_builds_metadata_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_builds_runner_session ALTER COLUMN id SET DEFAULT nextval('public.ci_builds_runner_session_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_daily_report_results ALTER COLUMN id SET DEFAULT nextval('public.ci_daily_report_results_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_group_variables ALTER COLUMN id SET DEFAULT nextval('public.ci_group_variables_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_job_artifacts ALTER COLUMN id SET DEFAULT nextval('public.ci_job_artifacts_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_job_variables ALTER COLUMN id SET DEFAULT nextval('public.ci_job_variables_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_pipeline_chat_data ALTER COLUMN id SET DEFAULT nextval('public.ci_pipeline_chat_data_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_pipeline_schedule_variables ALTER COLUMN id SET DEFAULT nextval('public.ci_pipeline_schedule_variables_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_pipeline_schedules ALTER COLUMN id SET DEFAULT nextval('public.ci_pipeline_schedules_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_pipeline_variables ALTER COLUMN id SET DEFAULT nextval('public.ci_pipeline_variables_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_pipelines ALTER COLUMN id SET DEFAULT nextval('public.ci_pipelines_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_pipelines_config ALTER COLUMN pipeline_id SET DEFAULT nextval('public.ci_pipelines_config_pipeline_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_refs ALTER COLUMN id SET DEFAULT nextval('public.ci_refs_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_resource_groups ALTER COLUMN id SET DEFAULT nextval('public.ci_resource_groups_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_resources ALTER COLUMN id SET DEFAULT nextval('public.ci_resources_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_runner_namespaces ALTER COLUMN id SET DEFAULT nextval('public.ci_runner_namespaces_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_runner_projects ALTER COLUMN id SET DEFAULT nextval('public.ci_runner_projects_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_runners ALTER COLUMN id SET DEFAULT nextval('public.ci_runners_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_sources_pipelines ALTER COLUMN id SET DEFAULT nextval('public.ci_sources_pipelines_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_sources_projects ALTER COLUMN id SET DEFAULT nextval('public.ci_sources_projects_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_stages ALTER COLUMN id SET DEFAULT nextval('public.ci_stages_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_subscriptions_projects ALTER COLUMN id SET DEFAULT nextval('public.ci_subscriptions_projects_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_trigger_requests ALTER COLUMN id SET DEFAULT nextval('public.ci_trigger_requests_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_triggers ALTER COLUMN id SET DEFAULT nextval('public.ci_triggers_id_seq'::regclass); + +ALTER TABLE ONLY public.ci_variables ALTER COLUMN id SET DEFAULT nextval('public.ci_variables_id_seq'::regclass); + +ALTER TABLE ONLY public.cluster_groups ALTER COLUMN id SET DEFAULT nextval('public.cluster_groups_id_seq'::regclass); + +ALTER TABLE ONLY public.cluster_platforms_kubernetes ALTER COLUMN id SET DEFAULT nextval('public.cluster_platforms_kubernetes_id_seq'::regclass); + +ALTER TABLE ONLY public.cluster_projects ALTER COLUMN id SET DEFAULT nextval('public.cluster_projects_id_seq'::regclass); + +ALTER TABLE ONLY public.cluster_providers_aws ALTER COLUMN id SET DEFAULT nextval('public.cluster_providers_aws_id_seq'::regclass); + +ALTER TABLE ONLY public.cluster_providers_gcp ALTER COLUMN id SET DEFAULT nextval('public.cluster_providers_gcp_id_seq'::regclass); + +ALTER TABLE ONLY public.clusters ALTER COLUMN id SET DEFAULT nextval('public.clusters_id_seq'::regclass); + +ALTER TABLE ONLY public.clusters_applications_cert_managers ALTER COLUMN id SET DEFAULT nextval('public.clusters_applications_cert_managers_id_seq'::regclass); + +ALTER TABLE ONLY public.clusters_applications_crossplane ALTER COLUMN id SET DEFAULT nextval('public.clusters_applications_crossplane_id_seq'::regclass); + +ALTER TABLE ONLY public.clusters_applications_elastic_stacks ALTER COLUMN id SET DEFAULT nextval('public.clusters_applications_elastic_stacks_id_seq'::regclass); + +ALTER TABLE ONLY public.clusters_applications_helm ALTER COLUMN id SET DEFAULT nextval('public.clusters_applications_helm_id_seq'::regclass); + +ALTER TABLE ONLY public.clusters_applications_ingress ALTER COLUMN id SET DEFAULT nextval('public.clusters_applications_ingress_id_seq'::regclass); + +ALTER TABLE ONLY public.clusters_applications_jupyter ALTER COLUMN id SET DEFAULT nextval('public.clusters_applications_jupyter_id_seq'::regclass); + +ALTER TABLE ONLY public.clusters_applications_knative ALTER COLUMN id SET DEFAULT nextval('public.clusters_applications_knative_id_seq'::regclass); + +ALTER TABLE ONLY public.clusters_applications_prometheus ALTER COLUMN id SET DEFAULT nextval('public.clusters_applications_prometheus_id_seq'::regclass); + +ALTER TABLE ONLY public.clusters_applications_runners ALTER COLUMN id SET DEFAULT nextval('public.clusters_applications_runners_id_seq'::regclass); + +ALTER TABLE ONLY public.clusters_kubernetes_namespaces ALTER COLUMN id SET DEFAULT nextval('public.clusters_kubernetes_namespaces_id_seq'::regclass); + +ALTER TABLE ONLY public.commit_user_mentions ALTER COLUMN id SET DEFAULT nextval('public.commit_user_mentions_id_seq'::regclass); + +ALTER TABLE ONLY public.container_repositories ALTER COLUMN id SET DEFAULT nextval('public.container_repositories_id_seq'::regclass); + +ALTER TABLE ONLY public.conversational_development_index_metrics ALTER COLUMN id SET DEFAULT nextval('public.conversational_development_index_metrics_id_seq'::regclass); + +ALTER TABLE ONLY public.dependency_proxy_blobs ALTER COLUMN id SET DEFAULT nextval('public.dependency_proxy_blobs_id_seq'::regclass); + +ALTER TABLE ONLY public.dependency_proxy_group_settings ALTER COLUMN id SET DEFAULT nextval('public.dependency_proxy_group_settings_id_seq'::regclass); + +ALTER TABLE ONLY public.deploy_keys_projects ALTER COLUMN id SET DEFAULT nextval('public.deploy_keys_projects_id_seq'::regclass); + +ALTER TABLE ONLY public.deploy_tokens ALTER COLUMN id SET DEFAULT nextval('public.deploy_tokens_id_seq'::regclass); + +ALTER TABLE ONLY public.deployments ALTER COLUMN id SET DEFAULT nextval('public.deployments_id_seq'::regclass); + +ALTER TABLE ONLY public.description_versions ALTER COLUMN id SET DEFAULT nextval('public.description_versions_id_seq'::regclass); + +ALTER TABLE ONLY public.design_management_designs ALTER COLUMN id SET DEFAULT nextval('public.design_management_designs_id_seq'::regclass); + +ALTER TABLE ONLY public.design_management_designs_versions ALTER COLUMN id SET DEFAULT nextval('public.design_management_designs_versions_id_seq'::regclass); + +ALTER TABLE ONLY public.design_management_versions ALTER COLUMN id SET DEFAULT nextval('public.design_management_versions_id_seq'::regclass); + +ALTER TABLE ONLY public.design_user_mentions ALTER COLUMN id SET DEFAULT nextval('public.design_user_mentions_id_seq'::regclass); + +ALTER TABLE ONLY public.draft_notes ALTER COLUMN id SET DEFAULT nextval('public.draft_notes_id_seq'::regclass); + +ALTER TABLE ONLY public.emails ALTER COLUMN id SET DEFAULT nextval('public.emails_id_seq'::regclass); + +ALTER TABLE ONLY public.environments ALTER COLUMN id SET DEFAULT nextval('public.environments_id_seq'::regclass); + +ALTER TABLE ONLY public.epic_issues ALTER COLUMN id SET DEFAULT nextval('public.epic_issues_id_seq'::regclass); + +ALTER TABLE ONLY public.epic_metrics ALTER COLUMN id SET DEFAULT nextval('public.epic_metrics_id_seq'::regclass); + +ALTER TABLE ONLY public.epic_user_mentions ALTER COLUMN id SET DEFAULT nextval('public.epic_user_mentions_id_seq'::regclass); + +ALTER TABLE ONLY public.epics ALTER COLUMN id SET DEFAULT nextval('public.epics_id_seq'::regclass); + +ALTER TABLE ONLY public.events ALTER COLUMN id SET DEFAULT nextval('public.events_id_seq'::regclass); + +ALTER TABLE ONLY public.evidences ALTER COLUMN id SET DEFAULT nextval('public.evidences_id_seq'::regclass); + +ALTER TABLE ONLY public.external_pull_requests ALTER COLUMN id SET DEFAULT nextval('public.external_pull_requests_id_seq'::regclass); + +ALTER TABLE ONLY public.feature_gates ALTER COLUMN id SET DEFAULT nextval('public.feature_gates_id_seq'::regclass); + +ALTER TABLE ONLY public.features ALTER COLUMN id SET DEFAULT nextval('public.features_id_seq'::regclass); + +ALTER TABLE ONLY public.fork_network_members ALTER COLUMN id SET DEFAULT nextval('public.fork_network_members_id_seq'::regclass); + +ALTER TABLE ONLY public.fork_networks ALTER COLUMN id SET DEFAULT nextval('public.fork_networks_id_seq'::regclass); + +ALTER TABLE ONLY public.geo_cache_invalidation_events ALTER COLUMN id SET DEFAULT nextval('public.geo_cache_invalidation_events_id_seq'::regclass); + +ALTER TABLE ONLY public.geo_container_repository_updated_events ALTER COLUMN id SET DEFAULT nextval('public.geo_container_repository_updated_events_id_seq'::regclass); + +ALTER TABLE ONLY public.geo_event_log ALTER COLUMN id SET DEFAULT nextval('public.geo_event_log_id_seq'::regclass); + +ALTER TABLE ONLY public.geo_events ALTER COLUMN id SET DEFAULT nextval('public.geo_events_id_seq'::regclass); + +ALTER TABLE ONLY public.geo_hashed_storage_attachments_events ALTER COLUMN id SET DEFAULT nextval('public.geo_hashed_storage_attachments_events_id_seq'::regclass); + +ALTER TABLE ONLY public.geo_hashed_storage_migrated_events ALTER COLUMN id SET DEFAULT nextval('public.geo_hashed_storage_migrated_events_id_seq'::regclass); + +ALTER TABLE ONLY public.geo_job_artifact_deleted_events ALTER COLUMN id SET DEFAULT nextval('public.geo_job_artifact_deleted_events_id_seq'::regclass); + +ALTER TABLE ONLY public.geo_lfs_object_deleted_events ALTER COLUMN id SET DEFAULT nextval('public.geo_lfs_object_deleted_events_id_seq'::regclass); + +ALTER TABLE ONLY public.geo_node_namespace_links ALTER COLUMN id SET DEFAULT nextval('public.geo_node_namespace_links_id_seq'::regclass); + +ALTER TABLE ONLY public.geo_node_statuses ALTER COLUMN id SET DEFAULT nextval('public.geo_node_statuses_id_seq'::regclass); + +ALTER TABLE ONLY public.geo_nodes ALTER COLUMN id SET DEFAULT nextval('public.geo_nodes_id_seq'::regclass); + +ALTER TABLE ONLY public.geo_repositories_changed_events ALTER COLUMN id SET DEFAULT nextval('public.geo_repositories_changed_events_id_seq'::regclass); + +ALTER TABLE ONLY public.geo_repository_created_events ALTER COLUMN id SET DEFAULT nextval('public.geo_repository_created_events_id_seq'::regclass); + +ALTER TABLE ONLY public.geo_repository_deleted_events ALTER COLUMN id SET DEFAULT nextval('public.geo_repository_deleted_events_id_seq'::regclass); + +ALTER TABLE ONLY public.geo_repository_renamed_events ALTER COLUMN id SET DEFAULT nextval('public.geo_repository_renamed_events_id_seq'::regclass); + +ALTER TABLE ONLY public.geo_repository_updated_events ALTER COLUMN id SET DEFAULT nextval('public.geo_repository_updated_events_id_seq'::regclass); + +ALTER TABLE ONLY public.geo_reset_checksum_events ALTER COLUMN id SET DEFAULT nextval('public.geo_reset_checksum_events_id_seq'::regclass); + +ALTER TABLE ONLY public.geo_upload_deleted_events ALTER COLUMN id SET DEFAULT nextval('public.geo_upload_deleted_events_id_seq'::regclass); + +ALTER TABLE ONLY public.gitlab_subscription_histories ALTER COLUMN id SET DEFAULT nextval('public.gitlab_subscription_histories_id_seq'::regclass); + +ALTER TABLE ONLY public.gitlab_subscriptions ALTER COLUMN id SET DEFAULT nextval('public.gitlab_subscriptions_id_seq'::regclass); + +ALTER TABLE ONLY public.gpg_key_subkeys ALTER COLUMN id SET DEFAULT nextval('public.gpg_key_subkeys_id_seq'::regclass); + +ALTER TABLE ONLY public.gpg_keys ALTER COLUMN id SET DEFAULT nextval('public.gpg_keys_id_seq'::regclass); + +ALTER TABLE ONLY public.gpg_signatures ALTER COLUMN id SET DEFAULT nextval('public.gpg_signatures_id_seq'::regclass); + +ALTER TABLE ONLY public.grafana_integrations ALTER COLUMN id SET DEFAULT nextval('public.grafana_integrations_id_seq'::regclass); + +ALTER TABLE ONLY public.group_custom_attributes ALTER COLUMN id SET DEFAULT nextval('public.group_custom_attributes_id_seq'::regclass); + +ALTER TABLE ONLY public.group_deploy_tokens ALTER COLUMN id SET DEFAULT nextval('public.group_deploy_tokens_id_seq'::regclass); + +ALTER TABLE ONLY public.group_group_links ALTER COLUMN id SET DEFAULT nextval('public.group_group_links_id_seq'::regclass); + +ALTER TABLE ONLY public.historical_data ALTER COLUMN id SET DEFAULT nextval('public.historical_data_id_seq'::regclass); + +ALTER TABLE ONLY public.identities ALTER COLUMN id SET DEFAULT nextval('public.identities_id_seq'::regclass); + +ALTER TABLE ONLY public.import_export_uploads ALTER COLUMN id SET DEFAULT nextval('public.import_export_uploads_id_seq'::regclass); + +ALTER TABLE ONLY public.import_failures ALTER COLUMN id SET DEFAULT nextval('public.import_failures_id_seq'::regclass); + +ALTER TABLE ONLY public.index_statuses ALTER COLUMN id SET DEFAULT nextval('public.index_statuses_id_seq'::regclass); + +ALTER TABLE ONLY public.insights ALTER COLUMN id SET DEFAULT nextval('public.insights_id_seq'::regclass); + +ALTER TABLE ONLY public.internal_ids ALTER COLUMN id SET DEFAULT nextval('public.internal_ids_id_seq'::regclass); + +ALTER TABLE ONLY public.ip_restrictions ALTER COLUMN id SET DEFAULT nextval('public.ip_restrictions_id_seq'::regclass); + +ALTER TABLE ONLY public.issue_links ALTER COLUMN id SET DEFAULT nextval('public.issue_links_id_seq'::regclass); + +ALTER TABLE ONLY public.issue_metrics ALTER COLUMN id SET DEFAULT nextval('public.issue_metrics_id_seq'::regclass); + +ALTER TABLE ONLY public.issue_tracker_data ALTER COLUMN id SET DEFAULT nextval('public.issue_tracker_data_id_seq'::regclass); + +ALTER TABLE ONLY public.issue_user_mentions ALTER COLUMN id SET DEFAULT nextval('public.issue_user_mentions_id_seq'::regclass); + +ALTER TABLE ONLY public.issues ALTER COLUMN id SET DEFAULT nextval('public.issues_id_seq'::regclass); + +ALTER TABLE ONLY public.jira_connect_installations ALTER COLUMN id SET DEFAULT nextval('public.jira_connect_installations_id_seq'::regclass); + +ALTER TABLE ONLY public.jira_connect_subscriptions ALTER COLUMN id SET DEFAULT nextval('public.jira_connect_subscriptions_id_seq'::regclass); + +ALTER TABLE ONLY public.jira_tracker_data ALTER COLUMN id SET DEFAULT nextval('public.jira_tracker_data_id_seq'::regclass); + +ALTER TABLE ONLY public.keys ALTER COLUMN id SET DEFAULT nextval('public.keys_id_seq'::regclass); + +ALTER TABLE ONLY public.label_links ALTER COLUMN id SET DEFAULT nextval('public.label_links_id_seq'::regclass); + +ALTER TABLE ONLY public.label_priorities ALTER COLUMN id SET DEFAULT nextval('public.label_priorities_id_seq'::regclass); + +ALTER TABLE ONLY public.labels ALTER COLUMN id SET DEFAULT nextval('public.labels_id_seq'::regclass); + +ALTER TABLE ONLY public.ldap_group_links ALTER COLUMN id SET DEFAULT nextval('public.ldap_group_links_id_seq'::regclass); + +ALTER TABLE ONLY public.lfs_file_locks ALTER COLUMN id SET DEFAULT nextval('public.lfs_file_locks_id_seq'::regclass); + +ALTER TABLE ONLY public.lfs_objects ALTER COLUMN id SET DEFAULT nextval('public.lfs_objects_id_seq'::regclass); + +ALTER TABLE ONLY public.lfs_objects_projects ALTER COLUMN id SET DEFAULT nextval('public.lfs_objects_projects_id_seq'::regclass); + +ALTER TABLE ONLY public.licenses ALTER COLUMN id SET DEFAULT nextval('public.licenses_id_seq'::regclass); + +ALTER TABLE ONLY public.list_user_preferences ALTER COLUMN id SET DEFAULT nextval('public.list_user_preferences_id_seq'::regclass); + +ALTER TABLE ONLY public.lists ALTER COLUMN id SET DEFAULT nextval('public.lists_id_seq'::regclass); + +ALTER TABLE ONLY public.members ALTER COLUMN id SET DEFAULT nextval('public.members_id_seq'::regclass); + +ALTER TABLE ONLY public.merge_request_assignees ALTER COLUMN id SET DEFAULT nextval('public.merge_request_assignees_id_seq'::regclass); + +ALTER TABLE ONLY public.merge_request_blocks ALTER COLUMN id SET DEFAULT nextval('public.merge_request_blocks_id_seq'::regclass); + +ALTER TABLE ONLY public.merge_request_context_commits ALTER COLUMN id SET DEFAULT nextval('public.merge_request_context_commits_id_seq'::regclass); + +ALTER TABLE ONLY public.merge_request_diffs ALTER COLUMN id SET DEFAULT nextval('public.merge_request_diffs_id_seq'::regclass); + +ALTER TABLE ONLY public.merge_request_metrics ALTER COLUMN id SET DEFAULT nextval('public.merge_request_metrics_id_seq'::regclass); + +ALTER TABLE ONLY public.merge_request_user_mentions ALTER COLUMN id SET DEFAULT nextval('public.merge_request_user_mentions_id_seq'::regclass); + +ALTER TABLE ONLY public.merge_requests ALTER COLUMN id SET DEFAULT nextval('public.merge_requests_id_seq'::regclass); + +ALTER TABLE ONLY public.merge_requests_closing_issues ALTER COLUMN id SET DEFAULT nextval('public.merge_requests_closing_issues_id_seq'::regclass); + +ALTER TABLE ONLY public.merge_trains ALTER COLUMN id SET DEFAULT nextval('public.merge_trains_id_seq'::regclass); + +ALTER TABLE ONLY public.milestones ALTER COLUMN id SET DEFAULT nextval('public.milestones_id_seq'::regclass); + +ALTER TABLE ONLY public.namespace_statistics ALTER COLUMN id SET DEFAULT nextval('public.namespace_statistics_id_seq'::regclass); + +ALTER TABLE ONLY public.namespaces ALTER COLUMN id SET DEFAULT nextval('public.namespaces_id_seq'::regclass); + +ALTER TABLE ONLY public.note_diff_files ALTER COLUMN id SET DEFAULT nextval('public.note_diff_files_id_seq'::regclass); + +ALTER TABLE ONLY public.notes ALTER COLUMN id SET DEFAULT nextval('public.notes_id_seq'::regclass); + +ALTER TABLE ONLY public.notification_settings ALTER COLUMN id SET DEFAULT nextval('public.notification_settings_id_seq'::regclass); + +ALTER TABLE ONLY public.oauth_access_grants ALTER COLUMN id SET DEFAULT nextval('public.oauth_access_grants_id_seq'::regclass); + +ALTER TABLE ONLY public.oauth_access_tokens ALTER COLUMN id SET DEFAULT nextval('public.oauth_access_tokens_id_seq'::regclass); + +ALTER TABLE ONLY public.oauth_applications ALTER COLUMN id SET DEFAULT nextval('public.oauth_applications_id_seq'::regclass); + +ALTER TABLE ONLY public.oauth_openid_requests ALTER COLUMN id SET DEFAULT nextval('public.oauth_openid_requests_id_seq'::regclass); + +ALTER TABLE ONLY public.open_project_tracker_data ALTER COLUMN id SET DEFAULT nextval('public.open_project_tracker_data_id_seq'::regclass); + +ALTER TABLE ONLY public.operations_feature_flag_scopes ALTER COLUMN id SET DEFAULT nextval('public.operations_feature_flag_scopes_id_seq'::regclass); + +ALTER TABLE ONLY public.operations_feature_flags ALTER COLUMN id SET DEFAULT nextval('public.operations_feature_flags_id_seq'::regclass); + +ALTER TABLE ONLY public.operations_feature_flags_clients ALTER COLUMN id SET DEFAULT nextval('public.operations_feature_flags_clients_id_seq'::regclass); + +ALTER TABLE ONLY public.operations_scopes ALTER COLUMN id SET DEFAULT nextval('public.operations_scopes_id_seq'::regclass); + +ALTER TABLE ONLY public.operations_strategies ALTER COLUMN id SET DEFAULT nextval('public.operations_strategies_id_seq'::regclass); + +ALTER TABLE ONLY public.packages_build_infos ALTER COLUMN id SET DEFAULT nextval('public.packages_build_infos_id_seq'::regclass); + +ALTER TABLE ONLY public.packages_conan_file_metadata ALTER COLUMN id SET DEFAULT nextval('public.packages_conan_file_metadata_id_seq'::regclass); + +ALTER TABLE ONLY public.packages_conan_metadata ALTER COLUMN id SET DEFAULT nextval('public.packages_conan_metadata_id_seq'::regclass); + +ALTER TABLE ONLY public.packages_dependencies ALTER COLUMN id SET DEFAULT nextval('public.packages_dependencies_id_seq'::regclass); + +ALTER TABLE ONLY public.packages_dependency_links ALTER COLUMN id SET DEFAULT nextval('public.packages_dependency_links_id_seq'::regclass); + +ALTER TABLE ONLY public.packages_maven_metadata ALTER COLUMN id SET DEFAULT nextval('public.packages_maven_metadata_id_seq'::regclass); + +ALTER TABLE ONLY public.packages_package_files ALTER COLUMN id SET DEFAULT nextval('public.packages_package_files_id_seq'::regclass); + +ALTER TABLE ONLY public.packages_packages ALTER COLUMN id SET DEFAULT nextval('public.packages_packages_id_seq'::regclass); + +ALTER TABLE ONLY public.packages_tags ALTER COLUMN id SET DEFAULT nextval('public.packages_tags_id_seq'::regclass); + +ALTER TABLE ONLY public.pages_domain_acme_orders ALTER COLUMN id SET DEFAULT nextval('public.pages_domain_acme_orders_id_seq'::regclass); + +ALTER TABLE ONLY public.pages_domains ALTER COLUMN id SET DEFAULT nextval('public.pages_domains_id_seq'::regclass); + +ALTER TABLE ONLY public.path_locks ALTER COLUMN id SET DEFAULT nextval('public.path_locks_id_seq'::regclass); + +ALTER TABLE ONLY public.personal_access_tokens ALTER COLUMN id SET DEFAULT nextval('public.personal_access_tokens_id_seq'::regclass); + +ALTER TABLE ONLY public.plan_limits ALTER COLUMN id SET DEFAULT nextval('public.plan_limits_id_seq'::regclass); + +ALTER TABLE ONLY public.plans ALTER COLUMN id SET DEFAULT nextval('public.plans_id_seq'::regclass); + +ALTER TABLE ONLY public.pool_repositories ALTER COLUMN id SET DEFAULT nextval('public.pool_repositories_id_seq'::regclass); + +ALTER TABLE ONLY public.programming_languages ALTER COLUMN id SET DEFAULT nextval('public.programming_languages_id_seq'::regclass); + +ALTER TABLE ONLY public.project_aliases ALTER COLUMN id SET DEFAULT nextval('public.project_aliases_id_seq'::regclass); + +ALTER TABLE ONLY public.project_auto_devops ALTER COLUMN id SET DEFAULT nextval('public.project_auto_devops_id_seq'::regclass); + +ALTER TABLE ONLY public.project_ci_cd_settings ALTER COLUMN id SET DEFAULT nextval('public.project_ci_cd_settings_id_seq'::regclass); + +ALTER TABLE ONLY public.project_custom_attributes ALTER COLUMN id SET DEFAULT nextval('public.project_custom_attributes_id_seq'::regclass); + +ALTER TABLE ONLY public.project_daily_statistics ALTER COLUMN id SET DEFAULT nextval('public.project_daily_statistics_id_seq'::regclass); + +ALTER TABLE ONLY public.project_deploy_tokens ALTER COLUMN id SET DEFAULT nextval('public.project_deploy_tokens_id_seq'::regclass); + +ALTER TABLE ONLY public.project_export_jobs ALTER COLUMN id SET DEFAULT nextval('public.project_export_jobs_id_seq'::regclass); + +ALTER TABLE ONLY public.project_features ALTER COLUMN id SET DEFAULT nextval('public.project_features_id_seq'::regclass); + +ALTER TABLE ONLY public.project_group_links ALTER COLUMN id SET DEFAULT nextval('public.project_group_links_id_seq'::regclass); + +ALTER TABLE ONLY public.project_import_data ALTER COLUMN id SET DEFAULT nextval('public.project_import_data_id_seq'::regclass); + +ALTER TABLE ONLY public.project_incident_management_settings ALTER COLUMN project_id SET DEFAULT nextval('public.project_incident_management_settings_project_id_seq'::regclass); + +ALTER TABLE ONLY public.project_mirror_data ALTER COLUMN id SET DEFAULT nextval('public.project_mirror_data_id_seq'::regclass); + +ALTER TABLE ONLY public.project_repositories ALTER COLUMN id SET DEFAULT nextval('public.project_repositories_id_seq'::regclass); + +ALTER TABLE ONLY public.project_repository_states ALTER COLUMN id SET DEFAULT nextval('public.project_repository_states_id_seq'::regclass); + +ALTER TABLE ONLY public.project_statistics ALTER COLUMN id SET DEFAULT nextval('public.project_statistics_id_seq'::regclass); + +ALTER TABLE ONLY public.project_tracing_settings ALTER COLUMN id SET DEFAULT nextval('public.project_tracing_settings_id_seq'::regclass); + +ALTER TABLE ONLY public.projects ALTER COLUMN id SET DEFAULT nextval('public.projects_id_seq'::regclass); + +ALTER TABLE ONLY public.prometheus_alert_events ALTER COLUMN id SET DEFAULT nextval('public.prometheus_alert_events_id_seq'::regclass); + +ALTER TABLE ONLY public.prometheus_alerts ALTER COLUMN id SET DEFAULT nextval('public.prometheus_alerts_id_seq'::regclass); + +ALTER TABLE ONLY public.prometheus_metrics ALTER COLUMN id SET DEFAULT nextval('public.prometheus_metrics_id_seq'::regclass); + +ALTER TABLE ONLY public.protected_branch_merge_access_levels ALTER COLUMN id SET DEFAULT nextval('public.protected_branch_merge_access_levels_id_seq'::regclass); + +ALTER TABLE ONLY public.protected_branch_push_access_levels ALTER COLUMN id SET DEFAULT nextval('public.protected_branch_push_access_levels_id_seq'::regclass); + +ALTER TABLE ONLY public.protected_branch_unprotect_access_levels ALTER COLUMN id SET DEFAULT nextval('public.protected_branch_unprotect_access_levels_id_seq'::regclass); + +ALTER TABLE ONLY public.protected_branches ALTER COLUMN id SET DEFAULT nextval('public.protected_branches_id_seq'::regclass); + +ALTER TABLE ONLY public.protected_environment_deploy_access_levels ALTER COLUMN id SET DEFAULT nextval('public.protected_environment_deploy_access_levels_id_seq'::regclass); + +ALTER TABLE ONLY public.protected_environments ALTER COLUMN id SET DEFAULT nextval('public.protected_environments_id_seq'::regclass); + +ALTER TABLE ONLY public.protected_tag_create_access_levels ALTER COLUMN id SET DEFAULT nextval('public.protected_tag_create_access_levels_id_seq'::regclass); + +ALTER TABLE ONLY public.protected_tags ALTER COLUMN id SET DEFAULT nextval('public.protected_tags_id_seq'::regclass); + +ALTER TABLE ONLY public.push_rules ALTER COLUMN id SET DEFAULT nextval('public.push_rules_id_seq'::regclass); + +ALTER TABLE ONLY public.redirect_routes ALTER COLUMN id SET DEFAULT nextval('public.redirect_routes_id_seq'::regclass); + +ALTER TABLE ONLY public.release_links ALTER COLUMN id SET DEFAULT nextval('public.release_links_id_seq'::regclass); + +ALTER TABLE ONLY public.releases ALTER COLUMN id SET DEFAULT nextval('public.releases_id_seq'::regclass); + +ALTER TABLE ONLY public.remote_mirrors ALTER COLUMN id SET DEFAULT nextval('public.remote_mirrors_id_seq'::regclass); + +ALTER TABLE ONLY public.requirements ALTER COLUMN id SET DEFAULT nextval('public.requirements_id_seq'::regclass); + +ALTER TABLE ONLY public.resource_label_events ALTER COLUMN id SET DEFAULT nextval('public.resource_label_events_id_seq'::regclass); + +ALTER TABLE ONLY public.resource_milestone_events ALTER COLUMN id SET DEFAULT nextval('public.resource_milestone_events_id_seq'::regclass); + +ALTER TABLE ONLY public.resource_weight_events ALTER COLUMN id SET DEFAULT nextval('public.resource_weight_events_id_seq'::regclass); + +ALTER TABLE ONLY public.reviews ALTER COLUMN id SET DEFAULT nextval('public.reviews_id_seq'::regclass); + +ALTER TABLE ONLY public.routes ALTER COLUMN id SET DEFAULT nextval('public.routes_id_seq'::regclass); + +ALTER TABLE ONLY public.saml_providers ALTER COLUMN id SET DEFAULT nextval('public.saml_providers_id_seq'::regclass); + +ALTER TABLE ONLY public.scim_identities ALTER COLUMN id SET DEFAULT nextval('public.scim_identities_id_seq'::regclass); + +ALTER TABLE ONLY public.scim_oauth_access_tokens ALTER COLUMN id SET DEFAULT nextval('public.scim_oauth_access_tokens_id_seq'::regclass); + +ALTER TABLE ONLY public.security_scans ALTER COLUMN id SET DEFAULT nextval('public.security_scans_id_seq'::regclass); + +ALTER TABLE ONLY public.self_managed_prometheus_alert_events ALTER COLUMN id SET DEFAULT nextval('public.self_managed_prometheus_alert_events_id_seq'::regclass); + +ALTER TABLE ONLY public.sent_notifications ALTER COLUMN id SET DEFAULT nextval('public.sent_notifications_id_seq'::regclass); + +ALTER TABLE ONLY public.sentry_issues ALTER COLUMN id SET DEFAULT nextval('public.sentry_issues_id_seq'::regclass); + +ALTER TABLE ONLY public.services ALTER COLUMN id SET DEFAULT nextval('public.services_id_seq'::regclass); + +ALTER TABLE ONLY public.shards ALTER COLUMN id SET DEFAULT nextval('public.shards_id_seq'::regclass); + +ALTER TABLE ONLY public.slack_integrations ALTER COLUMN id SET DEFAULT nextval('public.slack_integrations_id_seq'::regclass); + +ALTER TABLE ONLY public.smartcard_identities ALTER COLUMN id SET DEFAULT nextval('public.smartcard_identities_id_seq'::regclass); + +ALTER TABLE ONLY public.snippet_user_mentions ALTER COLUMN id SET DEFAULT nextval('public.snippet_user_mentions_id_seq'::regclass); + +ALTER TABLE ONLY public.snippets ALTER COLUMN id SET DEFAULT nextval('public.snippets_id_seq'::regclass); + +ALTER TABLE ONLY public.software_license_policies ALTER COLUMN id SET DEFAULT nextval('public.software_license_policies_id_seq'::regclass); + +ALTER TABLE ONLY public.software_licenses ALTER COLUMN id SET DEFAULT nextval('public.software_licenses_id_seq'::regclass); + +ALTER TABLE ONLY public.spam_logs ALTER COLUMN id SET DEFAULT nextval('public.spam_logs_id_seq'::regclass); + +ALTER TABLE ONLY public.status_page_settings ALTER COLUMN project_id SET DEFAULT nextval('public.status_page_settings_project_id_seq'::regclass); + +ALTER TABLE ONLY public.subscriptions ALTER COLUMN id SET DEFAULT nextval('public.subscriptions_id_seq'::regclass); + +ALTER TABLE ONLY public.suggestions ALTER COLUMN id SET DEFAULT nextval('public.suggestions_id_seq'::regclass); + +ALTER TABLE ONLY public.system_note_metadata ALTER COLUMN id SET DEFAULT nextval('public.system_note_metadata_id_seq'::regclass); + +ALTER TABLE ONLY public.taggings ALTER COLUMN id SET DEFAULT nextval('public.taggings_id_seq'::regclass); + +ALTER TABLE ONLY public.tags ALTER COLUMN id SET DEFAULT nextval('public.tags_id_seq'::regclass); + +ALTER TABLE ONLY public.term_agreements ALTER COLUMN id SET DEFAULT nextval('public.term_agreements_id_seq'::regclass); + +ALTER TABLE ONLY public.timelogs ALTER COLUMN id SET DEFAULT nextval('public.timelogs_id_seq'::regclass); + +ALTER TABLE ONLY public.todos ALTER COLUMN id SET DEFAULT nextval('public.todos_id_seq'::regclass); + +ALTER TABLE ONLY public.trending_projects ALTER COLUMN id SET DEFAULT nextval('public.trending_projects_id_seq'::regclass); + +ALTER TABLE ONLY public.u2f_registrations ALTER COLUMN id SET DEFAULT nextval('public.u2f_registrations_id_seq'::regclass); + +ALTER TABLE ONLY public.uploads ALTER COLUMN id SET DEFAULT nextval('public.uploads_id_seq'::regclass); + +ALTER TABLE ONLY public.user_agent_details ALTER COLUMN id SET DEFAULT nextval('public.user_agent_details_id_seq'::regclass); + +ALTER TABLE ONLY public.user_callouts ALTER COLUMN id SET DEFAULT nextval('public.user_callouts_id_seq'::regclass); + +ALTER TABLE ONLY public.user_custom_attributes ALTER COLUMN id SET DEFAULT nextval('public.user_custom_attributes_id_seq'::regclass); + +ALTER TABLE ONLY public.user_details ALTER COLUMN user_id SET DEFAULT nextval('public.user_details_user_id_seq'::regclass); + +ALTER TABLE ONLY public.user_preferences ALTER COLUMN id SET DEFAULT nextval('public.user_preferences_id_seq'::regclass); + +ALTER TABLE ONLY public.user_statuses ALTER COLUMN user_id SET DEFAULT nextval('public.user_statuses_user_id_seq'::regclass); + +ALTER TABLE ONLY public.user_synced_attributes_metadata ALTER COLUMN id SET DEFAULT nextval('public.user_synced_attributes_metadata_id_seq'::regclass); + +ALTER TABLE ONLY public.users ALTER COLUMN id SET DEFAULT nextval('public.users_id_seq'::regclass); + +ALTER TABLE ONLY public.users_ops_dashboard_projects ALTER COLUMN id SET DEFAULT nextval('public.users_ops_dashboard_projects_id_seq'::regclass); + +ALTER TABLE ONLY public.users_star_projects ALTER COLUMN id SET DEFAULT nextval('public.users_star_projects_id_seq'::regclass); + +ALTER TABLE ONLY public.users_statistics ALTER COLUMN id SET DEFAULT nextval('public.users_statistics_id_seq'::regclass); + +ALTER TABLE ONLY public.vulnerabilities ALTER COLUMN id SET DEFAULT nextval('public.vulnerabilities_id_seq'::regclass); + +ALTER TABLE ONLY public.vulnerability_exports ALTER COLUMN id SET DEFAULT nextval('public.vulnerability_exports_id_seq'::regclass); + +ALTER TABLE ONLY public.vulnerability_feedback ALTER COLUMN id SET DEFAULT nextval('public.vulnerability_feedback_id_seq'::regclass); + +ALTER TABLE ONLY public.vulnerability_identifiers ALTER COLUMN id SET DEFAULT nextval('public.vulnerability_identifiers_id_seq'::regclass); + +ALTER TABLE ONLY public.vulnerability_issue_links ALTER COLUMN id SET DEFAULT nextval('public.vulnerability_issue_links_id_seq'::regclass); + +ALTER TABLE ONLY public.vulnerability_occurrence_identifiers ALTER COLUMN id SET DEFAULT nextval('public.vulnerability_occurrence_identifiers_id_seq'::regclass); + +ALTER TABLE ONLY public.vulnerability_occurrence_pipelines ALTER COLUMN id SET DEFAULT nextval('public.vulnerability_occurrence_pipelines_id_seq'::regclass); + +ALTER TABLE ONLY public.vulnerability_occurrences ALTER COLUMN id SET DEFAULT nextval('public.vulnerability_occurrences_id_seq'::regclass); + +ALTER TABLE ONLY public.vulnerability_scanners ALTER COLUMN id SET DEFAULT nextval('public.vulnerability_scanners_id_seq'::regclass); + +ALTER TABLE ONLY public.web_hook_logs ALTER COLUMN id SET DEFAULT nextval('public.web_hook_logs_id_seq'::regclass); + +ALTER TABLE ONLY public.web_hooks ALTER COLUMN id SET DEFAULT nextval('public.web_hooks_id_seq'::regclass); + +ALTER TABLE ONLY public.wiki_page_meta ALTER COLUMN id SET DEFAULT nextval('public.wiki_page_meta_id_seq'::regclass); + +ALTER TABLE ONLY public.wiki_page_slugs ALTER COLUMN id SET DEFAULT nextval('public.wiki_page_slugs_id_seq'::regclass); + +ALTER TABLE ONLY public.x509_certificates ALTER COLUMN id SET DEFAULT nextval('public.x509_certificates_id_seq'::regclass); + +ALTER TABLE ONLY public.x509_commit_signatures ALTER COLUMN id SET DEFAULT nextval('public.x509_commit_signatures_id_seq'::regclass); + +ALTER TABLE ONLY public.x509_issuers ALTER COLUMN id SET DEFAULT nextval('public.x509_issuers_id_seq'::regclass); + +ALTER TABLE ONLY public.zoom_meetings ALTER COLUMN id SET DEFAULT nextval('public.zoom_meetings_id_seq'::regclass); + +ALTER TABLE ONLY public.abuse_reports + ADD CONSTRAINT abuse_reports_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.alerts_service_data + ADD CONSTRAINT alerts_service_data_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.allowed_email_domains + ADD CONSTRAINT allowed_email_domains_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.analytics_cycle_analytics_group_stages + ADD CONSTRAINT analytics_cycle_analytics_group_stages_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.analytics_cycle_analytics_project_stages + ADD CONSTRAINT analytics_cycle_analytics_project_stages_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.appearances + ADD CONSTRAINT appearances_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.application_setting_terms + ADD CONSTRAINT application_setting_terms_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.application_settings + ADD CONSTRAINT application_settings_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.approval_merge_request_rule_sources + ADD CONSTRAINT approval_merge_request_rule_sources_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.approval_merge_request_rules_approved_approvers + ADD CONSTRAINT approval_merge_request_rules_approved_approvers_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.approval_merge_request_rules_groups + ADD CONSTRAINT approval_merge_request_rules_groups_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.approval_merge_request_rules + ADD CONSTRAINT approval_merge_request_rules_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.approval_merge_request_rules_users + ADD CONSTRAINT approval_merge_request_rules_users_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.approval_project_rules_groups + ADD CONSTRAINT approval_project_rules_groups_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.approval_project_rules + ADD CONSTRAINT approval_project_rules_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.approval_project_rules_users + ADD CONSTRAINT approval_project_rules_users_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.approvals + ADD CONSTRAINT approvals_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.approver_groups + ADD CONSTRAINT approver_groups_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.approvers + ADD CONSTRAINT approvers_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ar_internal_metadata + ADD CONSTRAINT ar_internal_metadata_pkey PRIMARY KEY (key); + +ALTER TABLE ONLY public.audit_events + ADD CONSTRAINT audit_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.award_emoji + ADD CONSTRAINT award_emoji_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.aws_roles + ADD CONSTRAINT aws_roles_pkey PRIMARY KEY (user_id); + +ALTER TABLE ONLY public.badges + ADD CONSTRAINT badges_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.board_assignees + ADD CONSTRAINT board_assignees_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.board_group_recent_visits + ADD CONSTRAINT board_group_recent_visits_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.board_labels + ADD CONSTRAINT board_labels_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.board_project_recent_visits + ADD CONSTRAINT board_project_recent_visits_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.boards + ADD CONSTRAINT boards_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.broadcast_messages + ADD CONSTRAINT broadcast_messages_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.chat_names + ADD CONSTRAINT chat_names_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.chat_teams + ADD CONSTRAINT chat_teams_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_build_needs + ADD CONSTRAINT ci_build_needs_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_build_trace_chunks + ADD CONSTRAINT ci_build_trace_chunks_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_build_trace_section_names + ADD CONSTRAINT ci_build_trace_section_names_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_builds_metadata + ADD CONSTRAINT ci_builds_metadata_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_builds + ADD CONSTRAINT ci_builds_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_builds_runner_session + ADD CONSTRAINT ci_builds_runner_session_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_daily_report_results + ADD CONSTRAINT ci_daily_report_results_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_group_variables + ADD CONSTRAINT ci_group_variables_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_job_artifacts + ADD CONSTRAINT ci_job_artifacts_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_job_variables + ADD CONSTRAINT ci_job_variables_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_pipeline_chat_data + ADD CONSTRAINT ci_pipeline_chat_data_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_pipeline_schedule_variables + ADD CONSTRAINT ci_pipeline_schedule_variables_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_pipeline_schedules + ADD CONSTRAINT ci_pipeline_schedules_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_pipeline_variables + ADD CONSTRAINT ci_pipeline_variables_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_pipelines_config + ADD CONSTRAINT ci_pipelines_config_pkey PRIMARY KEY (pipeline_id); + +ALTER TABLE ONLY public.ci_pipelines + ADD CONSTRAINT ci_pipelines_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_refs + ADD CONSTRAINT ci_refs_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_resource_groups + ADD CONSTRAINT ci_resource_groups_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_resources + ADD CONSTRAINT ci_resources_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_runner_namespaces + ADD CONSTRAINT ci_runner_namespaces_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_runner_projects + ADD CONSTRAINT ci_runner_projects_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_runners + ADD CONSTRAINT ci_runners_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_sources_pipelines + ADD CONSTRAINT ci_sources_pipelines_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_sources_projects + ADD CONSTRAINT ci_sources_projects_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_stages + ADD CONSTRAINT ci_stages_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_subscriptions_projects + ADD CONSTRAINT ci_subscriptions_projects_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_trigger_requests + ADD CONSTRAINT ci_trigger_requests_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_triggers + ADD CONSTRAINT ci_triggers_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ci_variables + ADD CONSTRAINT ci_variables_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.cluster_groups + ADD CONSTRAINT cluster_groups_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.cluster_platforms_kubernetes + ADD CONSTRAINT cluster_platforms_kubernetes_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.cluster_projects + ADD CONSTRAINT cluster_projects_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.cluster_providers_aws + ADD CONSTRAINT cluster_providers_aws_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.cluster_providers_gcp + ADD CONSTRAINT cluster_providers_gcp_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.clusters_applications_cert_managers + ADD CONSTRAINT clusters_applications_cert_managers_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.clusters_applications_crossplane + ADD CONSTRAINT clusters_applications_crossplane_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.clusters_applications_elastic_stacks + ADD CONSTRAINT clusters_applications_elastic_stacks_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.clusters_applications_helm + ADD CONSTRAINT clusters_applications_helm_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.clusters_applications_ingress + ADD CONSTRAINT clusters_applications_ingress_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.clusters_applications_jupyter + ADD CONSTRAINT clusters_applications_jupyter_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.clusters_applications_knative + ADD CONSTRAINT clusters_applications_knative_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.clusters_applications_prometheus + ADD CONSTRAINT clusters_applications_prometheus_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.clusters_applications_runners + ADD CONSTRAINT clusters_applications_runners_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.clusters_kubernetes_namespaces + ADD CONSTRAINT clusters_kubernetes_namespaces_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.clusters + ADD CONSTRAINT clusters_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.commit_user_mentions + ADD CONSTRAINT commit_user_mentions_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.container_expiration_policies + ADD CONSTRAINT container_expiration_policies_pkey PRIMARY KEY (project_id); + +ALTER TABLE ONLY public.container_repositories + ADD CONSTRAINT container_repositories_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.conversational_development_index_metrics + ADD CONSTRAINT conversational_development_index_metrics_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.dependency_proxy_blobs + ADD CONSTRAINT dependency_proxy_blobs_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.dependency_proxy_group_settings + ADD CONSTRAINT dependency_proxy_group_settings_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.deploy_keys_projects + ADD CONSTRAINT deploy_keys_projects_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.deploy_tokens + ADD CONSTRAINT deploy_tokens_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.deployment_clusters + ADD CONSTRAINT deployment_clusters_pkey PRIMARY KEY (deployment_id); + +ALTER TABLE ONLY public.deployments + ADD CONSTRAINT deployments_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.description_versions + ADD CONSTRAINT description_versions_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.design_management_designs + ADD CONSTRAINT design_management_designs_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.design_management_designs_versions + ADD CONSTRAINT design_management_designs_versions_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.design_management_versions + ADD CONSTRAINT design_management_versions_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.design_user_mentions + ADD CONSTRAINT design_user_mentions_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.draft_notes + ADD CONSTRAINT draft_notes_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.emails + ADD CONSTRAINT emails_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.environments + ADD CONSTRAINT environments_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.epic_issues + ADD CONSTRAINT epic_issues_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.epic_metrics + ADD CONSTRAINT epic_metrics_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.epic_user_mentions + ADD CONSTRAINT epic_user_mentions_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.epics + ADD CONSTRAINT epics_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.events + ADD CONSTRAINT events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.evidences + ADD CONSTRAINT evidences_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.external_pull_requests + ADD CONSTRAINT external_pull_requests_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.feature_gates + ADD CONSTRAINT feature_gates_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.features + ADD CONSTRAINT features_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.fork_network_members + ADD CONSTRAINT fork_network_members_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.fork_networks + ADD CONSTRAINT fork_networks_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.geo_cache_invalidation_events + ADD CONSTRAINT geo_cache_invalidation_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.geo_container_repository_updated_events + ADD CONSTRAINT geo_container_repository_updated_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.geo_event_log + ADD CONSTRAINT geo_event_log_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.geo_events + ADD CONSTRAINT geo_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.geo_hashed_storage_attachments_events + ADD CONSTRAINT geo_hashed_storage_attachments_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.geo_hashed_storage_migrated_events + ADD CONSTRAINT geo_hashed_storage_migrated_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.geo_job_artifact_deleted_events + ADD CONSTRAINT geo_job_artifact_deleted_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.geo_lfs_object_deleted_events + ADD CONSTRAINT geo_lfs_object_deleted_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.geo_node_namespace_links + ADD CONSTRAINT geo_node_namespace_links_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.geo_node_statuses + ADD CONSTRAINT geo_node_statuses_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.geo_nodes + ADD CONSTRAINT geo_nodes_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.geo_repositories_changed_events + ADD CONSTRAINT geo_repositories_changed_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.geo_repository_created_events + ADD CONSTRAINT geo_repository_created_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.geo_repository_deleted_events + ADD CONSTRAINT geo_repository_deleted_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.geo_repository_renamed_events + ADD CONSTRAINT geo_repository_renamed_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.geo_repository_updated_events + ADD CONSTRAINT geo_repository_updated_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.geo_reset_checksum_events + ADD CONSTRAINT geo_reset_checksum_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.geo_upload_deleted_events + ADD CONSTRAINT geo_upload_deleted_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.gitlab_subscription_histories + ADD CONSTRAINT gitlab_subscription_histories_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.gitlab_subscriptions + ADD CONSTRAINT gitlab_subscriptions_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.gpg_key_subkeys + ADD CONSTRAINT gpg_key_subkeys_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.gpg_keys + ADD CONSTRAINT gpg_keys_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.gpg_signatures + ADD CONSTRAINT gpg_signatures_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.grafana_integrations + ADD CONSTRAINT grafana_integrations_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.group_custom_attributes + ADD CONSTRAINT group_custom_attributes_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.group_deletion_schedules + ADD CONSTRAINT group_deletion_schedules_pkey PRIMARY KEY (group_id); + +ALTER TABLE ONLY public.group_deploy_tokens + ADD CONSTRAINT group_deploy_tokens_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.group_group_links + ADD CONSTRAINT group_group_links_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.historical_data + ADD CONSTRAINT historical_data_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.identities + ADD CONSTRAINT identities_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.import_export_uploads + ADD CONSTRAINT import_export_uploads_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.import_failures + ADD CONSTRAINT import_failures_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.index_statuses + ADD CONSTRAINT index_statuses_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.insights + ADD CONSTRAINT insights_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.internal_ids + ADD CONSTRAINT internal_ids_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ip_restrictions + ADD CONSTRAINT ip_restrictions_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.issue_links + ADD CONSTRAINT issue_links_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.issue_metrics + ADD CONSTRAINT issue_metrics_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.issue_tracker_data + ADD CONSTRAINT issue_tracker_data_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.issue_user_mentions + ADD CONSTRAINT issue_user_mentions_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.issues + ADD CONSTRAINT issues_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.jira_connect_installations + ADD CONSTRAINT jira_connect_installations_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.jira_connect_subscriptions + ADD CONSTRAINT jira_connect_subscriptions_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.jira_tracker_data + ADD CONSTRAINT jira_tracker_data_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.keys + ADD CONSTRAINT keys_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.label_links + ADD CONSTRAINT label_links_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.label_priorities + ADD CONSTRAINT label_priorities_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.labels + ADD CONSTRAINT labels_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.ldap_group_links + ADD CONSTRAINT ldap_group_links_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.lfs_file_locks + ADD CONSTRAINT lfs_file_locks_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.lfs_objects + ADD CONSTRAINT lfs_objects_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.lfs_objects_projects + ADD CONSTRAINT lfs_objects_projects_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.licenses + ADD CONSTRAINT licenses_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.list_user_preferences + ADD CONSTRAINT list_user_preferences_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.lists + ADD CONSTRAINT lists_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.members + ADD CONSTRAINT members_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.merge_request_assignees + ADD CONSTRAINT merge_request_assignees_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.merge_request_blocks + ADD CONSTRAINT merge_request_blocks_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.merge_request_context_commits + ADD CONSTRAINT merge_request_context_commits_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.merge_request_diffs + ADD CONSTRAINT merge_request_diffs_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.merge_request_metrics + ADD CONSTRAINT merge_request_metrics_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.merge_request_user_mentions + ADD CONSTRAINT merge_request_user_mentions_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.merge_requests_closing_issues + ADD CONSTRAINT merge_requests_closing_issues_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.merge_requests + ADD CONSTRAINT merge_requests_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.merge_trains + ADD CONSTRAINT merge_trains_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.milestones + ADD CONSTRAINT milestones_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.namespace_aggregation_schedules + ADD CONSTRAINT namespace_aggregation_schedules_pkey PRIMARY KEY (namespace_id); + +ALTER TABLE ONLY public.namespace_root_storage_statistics + ADD CONSTRAINT namespace_root_storage_statistics_pkey PRIMARY KEY (namespace_id); + +ALTER TABLE ONLY public.namespace_statistics + ADD CONSTRAINT namespace_statistics_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.namespaces + ADD CONSTRAINT namespaces_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.note_diff_files + ADD CONSTRAINT note_diff_files_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.notes + ADD CONSTRAINT notes_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.notification_settings + ADD CONSTRAINT notification_settings_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.oauth_access_grants + ADD CONSTRAINT oauth_access_grants_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.oauth_access_tokens + ADD CONSTRAINT oauth_access_tokens_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.oauth_applications + ADD CONSTRAINT oauth_applications_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.oauth_openid_requests + ADD CONSTRAINT oauth_openid_requests_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.open_project_tracker_data + ADD CONSTRAINT open_project_tracker_data_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.operations_feature_flag_scopes + ADD CONSTRAINT operations_feature_flag_scopes_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.operations_feature_flags_clients + ADD CONSTRAINT operations_feature_flags_clients_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.operations_feature_flags + ADD CONSTRAINT operations_feature_flags_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.operations_scopes + ADD CONSTRAINT operations_scopes_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.operations_strategies + ADD CONSTRAINT operations_strategies_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.packages_build_infos + ADD CONSTRAINT packages_build_infos_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.packages_conan_file_metadata + ADD CONSTRAINT packages_conan_file_metadata_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.packages_conan_metadata + ADD CONSTRAINT packages_conan_metadata_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.packages_dependencies + ADD CONSTRAINT packages_dependencies_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.packages_dependency_links + ADD CONSTRAINT packages_dependency_links_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.packages_maven_metadata + ADD CONSTRAINT packages_maven_metadata_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.packages_package_files + ADD CONSTRAINT packages_package_files_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.packages_packages + ADD CONSTRAINT packages_packages_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.packages_tags + ADD CONSTRAINT packages_tags_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.pages_domain_acme_orders + ADD CONSTRAINT pages_domain_acme_orders_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.pages_domains + ADD CONSTRAINT pages_domains_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.path_locks + ADD CONSTRAINT path_locks_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.personal_access_tokens + ADD CONSTRAINT personal_access_tokens_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.plan_limits + ADD CONSTRAINT plan_limits_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.plans + ADD CONSTRAINT plans_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.pool_repositories + ADD CONSTRAINT pool_repositories_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.programming_languages + ADD CONSTRAINT programming_languages_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.project_alerting_settings + ADD CONSTRAINT project_alerting_settings_pkey PRIMARY KEY (project_id); + +ALTER TABLE ONLY public.project_aliases + ADD CONSTRAINT project_aliases_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.project_auto_devops + ADD CONSTRAINT project_auto_devops_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.project_ci_cd_settings + ADD CONSTRAINT project_ci_cd_settings_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.project_custom_attributes + ADD CONSTRAINT project_custom_attributes_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.project_daily_statistics + ADD CONSTRAINT project_daily_statistics_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.project_deploy_tokens + ADD CONSTRAINT project_deploy_tokens_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.project_error_tracking_settings + ADD CONSTRAINT project_error_tracking_settings_pkey PRIMARY KEY (project_id); + +ALTER TABLE ONLY public.project_export_jobs + ADD CONSTRAINT project_export_jobs_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.project_feature_usages + ADD CONSTRAINT project_feature_usages_pkey PRIMARY KEY (project_id); + +ALTER TABLE ONLY public.project_features + ADD CONSTRAINT project_features_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.project_group_links + ADD CONSTRAINT project_group_links_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.project_import_data + ADD CONSTRAINT project_import_data_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.project_incident_management_settings + ADD CONSTRAINT project_incident_management_settings_pkey PRIMARY KEY (project_id); + +ALTER TABLE ONLY public.project_metrics_settings + ADD CONSTRAINT project_metrics_settings_pkey PRIMARY KEY (project_id); + +ALTER TABLE ONLY public.project_mirror_data + ADD CONSTRAINT project_mirror_data_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.project_repositories + ADD CONSTRAINT project_repositories_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.project_repository_states + ADD CONSTRAINT project_repository_states_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.project_settings + ADD CONSTRAINT project_settings_pkey PRIMARY KEY (project_id); + +ALTER TABLE ONLY public.project_statistics + ADD CONSTRAINT project_statistics_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.project_tracing_settings + ADD CONSTRAINT project_tracing_settings_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.projects + ADD CONSTRAINT projects_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.prometheus_alert_events + ADD CONSTRAINT prometheus_alert_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.prometheus_alerts + ADD CONSTRAINT prometheus_alerts_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.prometheus_metrics + ADD CONSTRAINT prometheus_metrics_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.protected_branch_merge_access_levels + ADD CONSTRAINT protected_branch_merge_access_levels_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.protected_branch_push_access_levels + ADD CONSTRAINT protected_branch_push_access_levels_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.protected_branch_unprotect_access_levels + ADD CONSTRAINT protected_branch_unprotect_access_levels_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.protected_branches + ADD CONSTRAINT protected_branches_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.protected_environment_deploy_access_levels + ADD CONSTRAINT protected_environment_deploy_access_levels_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.protected_environments + ADD CONSTRAINT protected_environments_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.protected_tag_create_access_levels + ADD CONSTRAINT protected_tag_create_access_levels_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.protected_tags + ADD CONSTRAINT protected_tags_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.push_rules + ADD CONSTRAINT push_rules_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.redirect_routes + ADD CONSTRAINT redirect_routes_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.release_links + ADD CONSTRAINT release_links_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.releases + ADD CONSTRAINT releases_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.remote_mirrors + ADD CONSTRAINT remote_mirrors_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.requirements + ADD CONSTRAINT requirements_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.resource_label_events + ADD CONSTRAINT resource_label_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.resource_milestone_events + ADD CONSTRAINT resource_milestone_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.resource_weight_events + ADD CONSTRAINT resource_weight_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.reviews + ADD CONSTRAINT reviews_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.routes + ADD CONSTRAINT routes_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.saml_providers + ADD CONSTRAINT saml_providers_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.schema_migrations + ADD CONSTRAINT schema_migrations_pkey PRIMARY KEY (version); + +ALTER TABLE ONLY public.scim_identities + ADD CONSTRAINT scim_identities_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.scim_oauth_access_tokens + ADD CONSTRAINT scim_oauth_access_tokens_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.security_scans + ADD CONSTRAINT security_scans_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.self_managed_prometheus_alert_events + ADD CONSTRAINT self_managed_prometheus_alert_events_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.sent_notifications + ADD CONSTRAINT sent_notifications_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.sentry_issues + ADD CONSTRAINT sentry_issues_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.serverless_domain_cluster + ADD CONSTRAINT serverless_domain_cluster_pkey PRIMARY KEY (uuid); + +ALTER TABLE ONLY public.service_desk_settings + ADD CONSTRAINT service_desk_settings_pkey PRIMARY KEY (project_id); + +ALTER TABLE ONLY public.services + ADD CONSTRAINT services_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.shards + ADD CONSTRAINT shards_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.slack_integrations + ADD CONSTRAINT slack_integrations_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.smartcard_identities + ADD CONSTRAINT smartcard_identities_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.snippet_repositories + ADD CONSTRAINT snippet_repositories_pkey PRIMARY KEY (snippet_id); + +ALTER TABLE ONLY public.snippet_user_mentions + ADD CONSTRAINT snippet_user_mentions_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.snippets + ADD CONSTRAINT snippets_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.software_license_policies + ADD CONSTRAINT software_license_policies_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.software_licenses + ADD CONSTRAINT software_licenses_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.spam_logs + ADD CONSTRAINT spam_logs_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.status_page_settings + ADD CONSTRAINT status_page_settings_pkey PRIMARY KEY (project_id); + +ALTER TABLE ONLY public.subscriptions + ADD CONSTRAINT subscriptions_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.suggestions + ADD CONSTRAINT suggestions_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.system_note_metadata + ADD CONSTRAINT system_note_metadata_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.taggings + ADD CONSTRAINT taggings_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.tags + ADD CONSTRAINT tags_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.term_agreements + ADD CONSTRAINT term_agreements_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.timelogs + ADD CONSTRAINT timelogs_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.todos + ADD CONSTRAINT todos_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.trending_projects + ADD CONSTRAINT trending_projects_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.u2f_registrations + ADD CONSTRAINT u2f_registrations_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.uploads + ADD CONSTRAINT uploads_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.user_agent_details + ADD CONSTRAINT user_agent_details_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.user_callouts + ADD CONSTRAINT user_callouts_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.user_custom_attributes + ADD CONSTRAINT user_custom_attributes_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.user_details + ADD CONSTRAINT user_details_pkey PRIMARY KEY (user_id); + +ALTER TABLE ONLY public.user_highest_roles + ADD CONSTRAINT user_highest_roles_pkey PRIMARY KEY (user_id); + +ALTER TABLE ONLY public.user_preferences + ADD CONSTRAINT user_preferences_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.user_statuses + ADD CONSTRAINT user_statuses_pkey PRIMARY KEY (user_id); + +ALTER TABLE ONLY public.user_synced_attributes_metadata + ADD CONSTRAINT user_synced_attributes_metadata_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.users_ops_dashboard_projects + ADD CONSTRAINT users_ops_dashboard_projects_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.users_star_projects + ADD CONSTRAINT users_star_projects_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.users_statistics + ADD CONSTRAINT users_statistics_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.vulnerabilities + ADD CONSTRAINT vulnerabilities_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.vulnerability_exports + ADD CONSTRAINT vulnerability_exports_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.vulnerability_feedback + ADD CONSTRAINT vulnerability_feedback_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.vulnerability_identifiers + ADD CONSTRAINT vulnerability_identifiers_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.vulnerability_issue_links + ADD CONSTRAINT vulnerability_issue_links_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.vulnerability_occurrence_identifiers + ADD CONSTRAINT vulnerability_occurrence_identifiers_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.vulnerability_occurrence_pipelines + ADD CONSTRAINT vulnerability_occurrence_pipelines_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.vulnerability_occurrences + ADD CONSTRAINT vulnerability_occurrences_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.vulnerability_scanners + ADD CONSTRAINT vulnerability_scanners_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.web_hook_logs + ADD CONSTRAINT web_hook_logs_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.web_hooks + ADD CONSTRAINT web_hooks_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.wiki_page_meta + ADD CONSTRAINT wiki_page_meta_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.wiki_page_slugs + ADD CONSTRAINT wiki_page_slugs_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.x509_certificates + ADD CONSTRAINT x509_certificates_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.x509_commit_signatures + ADD CONSTRAINT x509_commit_signatures_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.x509_issuers + ADD CONSTRAINT x509_issuers_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY public.zoom_meetings + ADD CONSTRAINT zoom_meetings_pkey PRIMARY KEY (id); + +CREATE INDEX analytics_index_audit_events_on_created_at_and_author_id ON public.audit_events USING btree (created_at, author_id); + +CREATE INDEX analytics_index_events_on_created_at_and_author_id ON public.events USING btree (created_at, author_id); + +CREATE INDEX analytics_repository_languages_on_project_id ON public.analytics_language_trend_repository_languages USING btree (project_id); + +CREATE UNIQUE INDEX analytics_repository_languages_unique_index ON public.analytics_language_trend_repository_languages USING btree (programming_language_id, project_id, snapshot_date); + +CREATE UNIQUE INDEX any_approver_merge_request_rule_type_unique_index ON public.approval_merge_request_rules USING btree (merge_request_id, rule_type) WHERE (rule_type = 4); + +CREATE UNIQUE INDEX any_approver_project_rule_type_unique_index ON public.approval_project_rules USING btree (project_id) WHERE (rule_type = 3); + +CREATE UNIQUE INDEX approval_rule_name_index_for_code_owners ON public.approval_merge_request_rules USING btree (merge_request_id, code_owner, name) WHERE (code_owner = true); + +CREATE INDEX ci_builds_gitlab_monitor_metrics ON public.ci_builds USING btree (status, created_at, project_id) WHERE ((type)::text = 'Ci::Build'::text); + +CREATE INDEX code_owner_approval_required ON public.protected_branches USING btree (project_id, code_owner_approval_required) WHERE (code_owner_approval_required = true); + +CREATE INDEX commit_id_and_note_id_index ON public.commit_user_mentions USING btree (commit_id, note_id); + +CREATE UNIQUE INDEX design_management_designs_versions_uniqueness ON public.design_management_designs_versions USING btree (design_id, version_id); + +CREATE INDEX design_user_mentions_on_design_id_and_note_id_index ON public.design_user_mentions USING btree (design_id, note_id); + +CREATE UNIQUE INDEX epic_user_mentions_on_epic_id_and_note_id_index ON public.epic_user_mentions USING btree (epic_id, note_id); + +CREATE UNIQUE INDEX epic_user_mentions_on_epic_id_index ON public.epic_user_mentions USING btree (epic_id) WHERE (note_id IS NULL); + +CREATE INDEX idx_deployment_clusters_on_cluster_id_and_kubernetes_namespace ON public.deployment_clusters USING btree (cluster_id, kubernetes_namespace); + +CREATE UNIQUE INDEX idx_deployment_merge_requests_unique_index ON public.deployment_merge_requests USING btree (deployment_id, merge_request_id); + +CREATE UNIQUE INDEX idx_environment_merge_requests_unique_index ON public.deployment_merge_requests USING btree (environment_id, merge_request_id); + +CREATE INDEX idx_geo_con_rep_updated_events_on_container_repository_id ON public.geo_container_repository_updated_events USING btree (container_repository_id); + +CREATE INDEX idx_issues_on_project_id_and_created_at_and_id_and_state_id ON public.issues USING btree (project_id, created_at, id, state_id); + +CREATE INDEX idx_issues_on_project_id_and_due_date_and_id_and_state_id ON public.issues USING btree (project_id, due_date, id, state_id) WHERE (due_date IS NOT NULL); + +CREATE INDEX idx_issues_on_project_id_and_rel_position_and_state_id_and_id ON public.issues USING btree (project_id, relative_position, state_id, id DESC); + +CREATE INDEX idx_issues_on_project_id_and_updated_at_and_id_and_state_id ON public.issues USING btree (project_id, updated_at, id, state_id); + +CREATE INDEX idx_issues_on_state_id ON public.issues USING btree (state_id); + +CREATE INDEX idx_jira_connect_subscriptions_on_installation_id ON public.jira_connect_subscriptions USING btree (jira_connect_installation_id); + +CREATE UNIQUE INDEX idx_jira_connect_subscriptions_on_installation_id_namespace_id ON public.jira_connect_subscriptions USING btree (jira_connect_installation_id, namespace_id); + +CREATE INDEX idx_merge_requests_on_id_and_merge_jid ON public.merge_requests USING btree (id, merge_jid) WHERE ((merge_jid IS NOT NULL) AND (state_id = 4)); + +CREATE INDEX idx_merge_requests_on_source_project_and_branch_state_opened ON public.merge_requests USING btree (source_project_id, source_branch) WHERE (state_id = 1); + +CREATE INDEX idx_merge_requests_on_state_id_and_merge_status ON public.merge_requests USING btree (state_id, merge_status) WHERE ((state_id = 1) AND ((merge_status)::text = 'can_be_merged'::text)); + +CREATE INDEX idx_merge_requests_on_target_project_id_and_iid_opened ON public.merge_requests USING btree (target_project_id, iid) WHERE (state_id = 1); + +CREATE INDEX idx_mr_cc_diff_files_on_mr_cc_id_and_sha ON public.merge_request_context_commit_diff_files USING btree (merge_request_context_commit_id, sha); + +CREATE INDEX idx_packages_packages_on_project_id_name_version_package_type ON public.packages_packages USING btree (project_id, name, version, package_type); + +CREATE UNIQUE INDEX idx_pkgs_dep_links_on_pkg_id_dependency_id_dependency_type ON public.packages_dependency_links USING btree (package_id, dependency_id, dependency_type); + +CREATE INDEX idx_proj_feat_usg_on_jira_dvcs_cloud_last_sync_at_and_proj_id ON public.project_feature_usages USING btree (jira_dvcs_cloud_last_sync_at, project_id) WHERE (jira_dvcs_cloud_last_sync_at IS NOT NULL); + +CREATE INDEX idx_proj_feat_usg_on_jira_dvcs_server_last_sync_at_and_proj_id ON public.project_feature_usages USING btree (jira_dvcs_server_last_sync_at, project_id) WHERE (jira_dvcs_server_last_sync_at IS NOT NULL); + +CREATE UNIQUE INDEX idx_project_id_payload_key_self_managed_prometheus_alert_events ON public.self_managed_prometheus_alert_events USING btree (project_id, payload_key); + +CREATE INDEX idx_project_repository_check_partial ON public.projects USING btree (repository_storage, created_at) WHERE (last_repository_check_at IS NULL); + +CREATE INDEX idx_projects_on_repository_storage_last_repository_updated_at ON public.projects USING btree (id, repository_storage, last_repository_updated_at); + +CREATE INDEX idx_repository_states_on_last_repository_verification_ran_at ON public.project_repository_states USING btree (project_id, last_repository_verification_ran_at) WHERE ((repository_verification_checksum IS NOT NULL) AND (last_repository_verification_failure IS NULL)); + +CREATE INDEX idx_repository_states_on_last_wiki_verification_ran_at ON public.project_repository_states USING btree (project_id, last_wiki_verification_ran_at) WHERE ((wiki_verification_checksum IS NOT NULL) AND (last_wiki_verification_failure IS NULL)); + +CREATE INDEX idx_repository_states_on_repository_failure_partial ON public.project_repository_states USING btree (last_repository_verification_failure) WHERE (last_repository_verification_failure IS NOT NULL); + +CREATE INDEX idx_repository_states_on_wiki_failure_partial ON public.project_repository_states USING btree (last_wiki_verification_failure) WHERE (last_wiki_verification_failure IS NOT NULL); + +CREATE INDEX idx_repository_states_outdated_checksums ON public.project_repository_states USING btree (project_id) 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))); + +CREATE UNIQUE INDEX idx_security_scans_on_build_and_scan_type ON public.security_scans USING btree (build_id, scan_type); + +CREATE INDEX idx_security_scans_on_scan_type ON public.security_scans USING btree (scan_type); + +CREATE UNIQUE INDEX idx_serverless_domain_cluster_on_clusters_applications_knative ON public.serverless_domain_cluster USING btree (clusters_applications_knative_id); + +CREATE UNIQUE INDEX idx_vulnerability_issue_links_on_vulnerability_id_and_issue_id ON public.vulnerability_issue_links USING btree (vulnerability_id, issue_id); + +CREATE UNIQUE INDEX idx_vulnerability_issue_links_on_vulnerability_id_and_link_type ON public.vulnerability_issue_links USING btree (vulnerability_id, link_type) WHERE (link_type = 2); + +CREATE INDEX index_abuse_reports_on_user_id ON public.abuse_reports USING btree (user_id); + +CREATE INDEX index_alerts_service_data_on_service_id ON public.alerts_service_data USING btree (service_id); + +CREATE INDEX index_allowed_email_domains_on_group_id ON public.allowed_email_domains USING btree (group_id); + +CREATE INDEX index_analytics_ca_group_stages_on_end_event_label_id ON public.analytics_cycle_analytics_group_stages USING btree (end_event_label_id); + +CREATE INDEX index_analytics_ca_group_stages_on_group_id ON public.analytics_cycle_analytics_group_stages USING btree (group_id); + +CREATE UNIQUE INDEX index_analytics_ca_group_stages_on_group_id_and_name ON public.analytics_cycle_analytics_group_stages USING btree (group_id, name); + +CREATE INDEX index_analytics_ca_group_stages_on_relative_position ON public.analytics_cycle_analytics_group_stages USING btree (relative_position); + +CREATE INDEX index_analytics_ca_group_stages_on_start_event_label_id ON public.analytics_cycle_analytics_group_stages USING btree (start_event_label_id); + +CREATE INDEX index_analytics_ca_project_stages_on_end_event_label_id ON public.analytics_cycle_analytics_project_stages USING btree (end_event_label_id); + +CREATE INDEX index_analytics_ca_project_stages_on_project_id ON public.analytics_cycle_analytics_project_stages USING btree (project_id); + +CREATE UNIQUE INDEX index_analytics_ca_project_stages_on_project_id_and_name ON public.analytics_cycle_analytics_project_stages USING btree (project_id, name); + +CREATE INDEX index_analytics_ca_project_stages_on_relative_position ON public.analytics_cycle_analytics_project_stages USING btree (relative_position); + +CREATE INDEX index_analytics_ca_project_stages_on_start_event_label_id ON public.analytics_cycle_analytics_project_stages USING btree (start_event_label_id); + +CREATE INDEX index_application_settings_on_custom_project_templates_group_id ON public.application_settings USING btree (custom_project_templates_group_id); + +CREATE INDEX index_application_settings_on_file_template_project_id ON public.application_settings USING btree (file_template_project_id); + +CREATE INDEX index_application_settings_on_instance_administrators_group_id ON public.application_settings USING btree (instance_administrators_group_id); + +CREATE INDEX index_application_settings_on_usage_stats_set_by_user_id ON public.application_settings USING btree (usage_stats_set_by_user_id); + +CREATE INDEX index_applicationsettings_on_instance_administration_project_id ON public.application_settings USING btree (instance_administration_project_id); + +CREATE UNIQUE INDEX index_approval_merge_request_rule_sources_1 ON public.approval_merge_request_rule_sources USING btree (approval_merge_request_rule_id); + +CREATE INDEX index_approval_merge_request_rule_sources_2 ON public.approval_merge_request_rule_sources USING btree (approval_project_rule_id); + +CREATE INDEX index_approval_merge_request_rules_1 ON public.approval_merge_request_rules USING btree (merge_request_id, code_owner); + +CREATE UNIQUE INDEX index_approval_merge_request_rules_approved_approvers_1 ON public.approval_merge_request_rules_approved_approvers USING btree (approval_merge_request_rule_id, user_id); + +CREATE INDEX index_approval_merge_request_rules_approved_approvers_2 ON public.approval_merge_request_rules_approved_approvers USING btree (user_id); + +CREATE UNIQUE INDEX index_approval_merge_request_rules_groups_1 ON public.approval_merge_request_rules_groups USING btree (approval_merge_request_rule_id, group_id); + +CREATE INDEX index_approval_merge_request_rules_groups_2 ON public.approval_merge_request_rules_groups USING btree (group_id); + +CREATE UNIQUE INDEX index_approval_merge_request_rules_users_1 ON public.approval_merge_request_rules_users USING btree (approval_merge_request_rule_id, user_id); + +CREATE INDEX index_approval_merge_request_rules_users_2 ON public.approval_merge_request_rules_users USING btree (user_id); + +CREATE UNIQUE INDEX index_approval_project_rules_groups_1 ON public.approval_project_rules_groups USING btree (approval_project_rule_id, group_id); + +CREATE INDEX index_approval_project_rules_groups_2 ON public.approval_project_rules_groups USING btree (group_id); + +CREATE INDEX index_approval_project_rules_on_project_id ON public.approval_project_rules USING btree (project_id); + +CREATE INDEX index_approval_project_rules_on_rule_type ON public.approval_project_rules USING btree (rule_type); + +CREATE INDEX index_approval_project_rules_protected_branches_pb_id ON public.approval_project_rules_protected_branches USING btree (protected_branch_id); + +CREATE UNIQUE INDEX index_approval_project_rules_protected_branches_unique ON public.approval_project_rules_protected_branches USING btree (approval_project_rule_id, protected_branch_id); + +CREATE UNIQUE INDEX index_approval_project_rules_users_1 ON public.approval_project_rules_users USING btree (approval_project_rule_id, user_id); + +CREATE INDEX index_approval_project_rules_users_2 ON public.approval_project_rules_users USING btree (user_id); + +CREATE UNIQUE INDEX index_approval_rule_name_for_code_owners_rule_type ON public.approval_merge_request_rules USING btree (merge_request_id, name) WHERE (rule_type = 2); + +CREATE INDEX index_approval_rules_code_owners_rule_type ON public.approval_merge_request_rules USING btree (merge_request_id) WHERE (rule_type = 2); + +CREATE INDEX index_approvals_on_merge_request_id ON public.approvals USING btree (merge_request_id); + +CREATE UNIQUE INDEX index_approvals_on_user_id_and_merge_request_id ON public.approvals USING btree (user_id, merge_request_id); + +CREATE INDEX index_approver_groups_on_group_id ON public.approver_groups USING btree (group_id); + +CREATE INDEX index_approver_groups_on_target_id_and_target_type ON public.approver_groups USING btree (target_id, target_type); + +CREATE INDEX index_approvers_on_target_id_and_target_type ON public.approvers USING btree (target_id, target_type); + +CREATE INDEX index_approvers_on_user_id ON public.approvers USING btree (user_id); + +CREATE INDEX index_audit_events_on_entity_id_and_entity_type_and_id_desc ON public.audit_events USING btree (entity_id, entity_type, id DESC); + +CREATE INDEX index_award_emoji_on_awardable_type_and_awardable_id ON public.award_emoji USING btree (awardable_type, awardable_id); + +CREATE INDEX index_award_emoji_on_user_id_and_name ON public.award_emoji USING btree (user_id, name); + +CREATE UNIQUE INDEX index_aws_roles_on_role_external_id ON public.aws_roles USING btree (role_external_id); + +CREATE UNIQUE INDEX index_aws_roles_on_user_id ON public.aws_roles USING btree (user_id); + +CREATE INDEX index_badges_on_group_id ON public.badges USING btree (group_id); + +CREATE INDEX index_badges_on_project_id ON public.badges USING btree (project_id); + +CREATE INDEX index_board_assignees_on_assignee_id ON public.board_assignees USING btree (assignee_id); + +CREATE UNIQUE INDEX index_board_assignees_on_board_id_and_assignee_id ON public.board_assignees USING btree (board_id, assignee_id); + +CREATE INDEX index_board_group_recent_visits_on_board_id ON public.board_group_recent_visits USING btree (board_id); + +CREATE INDEX index_board_group_recent_visits_on_group_id ON public.board_group_recent_visits USING btree (group_id); + +CREATE UNIQUE INDEX index_board_group_recent_visits_on_user_group_and_board ON public.board_group_recent_visits USING btree (user_id, group_id, board_id); + +CREATE INDEX index_board_group_recent_visits_on_user_id ON public.board_group_recent_visits USING btree (user_id); + +CREATE UNIQUE INDEX index_board_labels_on_board_id_and_label_id ON public.board_labels USING btree (board_id, label_id); + +CREATE INDEX index_board_labels_on_label_id ON public.board_labels USING btree (label_id); + +CREATE INDEX index_board_project_recent_visits_on_board_id ON public.board_project_recent_visits USING btree (board_id); + +CREATE INDEX index_board_project_recent_visits_on_project_id ON public.board_project_recent_visits USING btree (project_id); + +CREATE INDEX index_board_project_recent_visits_on_user_id ON public.board_project_recent_visits USING btree (user_id); + +CREATE UNIQUE INDEX index_board_project_recent_visits_on_user_project_and_board ON public.board_project_recent_visits USING btree (user_id, project_id, board_id); + +CREATE INDEX index_boards_on_group_id ON public.boards USING btree (group_id); + +CREATE INDEX index_boards_on_milestone_id ON public.boards USING btree (milestone_id); + +CREATE INDEX index_boards_on_project_id ON public.boards USING btree (project_id); + +CREATE INDEX index_broadcast_message_on_ends_at_and_broadcast_type_and_id ON public.broadcast_messages USING btree (ends_at, broadcast_type, id); + +CREATE UNIQUE INDEX index_chat_names_on_service_id_and_team_id_and_chat_id ON public.chat_names USING btree (service_id, team_id, chat_id); + +CREATE UNIQUE INDEX index_chat_names_on_user_id_and_service_id ON public.chat_names USING btree (user_id, service_id); + +CREATE UNIQUE INDEX index_chat_teams_on_namespace_id ON public.chat_teams USING btree (namespace_id); + +CREATE UNIQUE INDEX index_ci_build_needs_on_build_id_and_name ON public.ci_build_needs USING btree (build_id, name); + +CREATE UNIQUE INDEX index_ci_build_trace_chunks_on_build_id_and_chunk_index ON public.ci_build_trace_chunks USING btree (build_id, chunk_index); + +CREATE UNIQUE INDEX index_ci_build_trace_section_names_on_project_id_and_name ON public.ci_build_trace_section_names USING btree (project_id, name); + +CREATE UNIQUE INDEX index_ci_build_trace_sections_on_build_id_and_section_name_id ON public.ci_build_trace_sections USING btree (build_id, section_name_id); + +CREATE INDEX index_ci_build_trace_sections_on_project_id ON public.ci_build_trace_sections USING btree (project_id); + +CREATE INDEX index_ci_build_trace_sections_on_section_name_id ON public.ci_build_trace_sections USING btree (section_name_id); + +CREATE UNIQUE INDEX index_ci_builds_metadata_on_build_id ON public.ci_builds_metadata USING btree (build_id); + +CREATE INDEX index_ci_builds_metadata_on_build_id_and_has_exposed_artifacts ON public.ci_builds_metadata USING btree (build_id) WHERE (has_exposed_artifacts IS TRUE); + +CREATE INDEX index_ci_builds_metadata_on_build_id_and_interruptible ON public.ci_builds_metadata USING btree (build_id) WHERE (interruptible = true); + +CREATE INDEX index_ci_builds_metadata_on_project_id ON public.ci_builds_metadata USING btree (project_id); + +CREATE INDEX index_ci_builds_on_artifacts_expire_at ON public.ci_builds USING btree (artifacts_expire_at) WHERE (artifacts_file <> ''::text); + +CREATE INDEX index_ci_builds_on_auto_canceled_by_id ON public.ci_builds USING btree (auto_canceled_by_id); + +CREATE INDEX index_ci_builds_on_commit_id_and_artifacts_expireatandidpartial ON public.ci_builds USING btree (commit_id, artifacts_expire_at, id) 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]))); + +CREATE INDEX index_ci_builds_on_commit_id_and_stage_idx_and_created_at ON public.ci_builds USING btree (commit_id, stage_idx, created_at); + +CREATE INDEX index_ci_builds_on_commit_id_and_status_and_type ON public.ci_builds USING btree (commit_id, status, type); + +CREATE INDEX index_ci_builds_on_commit_id_and_type_and_name_and_ref ON public.ci_builds USING btree (commit_id, type, name, ref); + +CREATE INDEX index_ci_builds_on_commit_id_and_type_and_ref ON public.ci_builds USING btree (commit_id, type, ref); + +CREATE INDEX index_ci_builds_on_name_for_security_reports_values ON public.ci_builds USING btree (name) 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, ('license_scanning'::character varying)::text])); + +CREATE INDEX index_ci_builds_on_project_id_and_id ON public.ci_builds USING btree (project_id, id); + +CREATE INDEX index_ci_builds_on_project_id_and_name_and_ref ON public.ci_builds USING btree (project_id, name, ref) WHERE (((type)::text = 'Ci::Build'::text) AND ((status)::text = 'success'::text) AND ((retried = false) OR (retried IS NULL))); + +CREATE INDEX index_ci_builds_on_project_id_for_successfull_pages_deploy ON public.ci_builds USING btree (project_id) WHERE (((type)::text = 'GenericCommitStatus'::text) AND ((stage)::text = 'deploy'::text) AND ((name)::text = 'pages:deploy'::text) AND ((status)::text = 'success'::text)); + +CREATE INDEX index_ci_builds_on_protected ON public.ci_builds USING btree (protected); + +CREATE INDEX index_ci_builds_on_queued_at ON public.ci_builds USING btree (queued_at); + +CREATE INDEX index_ci_builds_on_runner_id ON public.ci_builds USING btree (runner_id); + +CREATE INDEX index_ci_builds_on_stage_id ON public.ci_builds USING btree (stage_id); + +CREATE INDEX index_ci_builds_on_status_and_type_and_runner_id ON public.ci_builds USING btree (status, type, runner_id); + +CREATE UNIQUE INDEX index_ci_builds_on_token ON public.ci_builds USING btree (token); + +CREATE UNIQUE INDEX index_ci_builds_on_token_encrypted ON public.ci_builds USING btree (token_encrypted) WHERE (token_encrypted IS NOT NULL); + +CREATE INDEX index_ci_builds_on_updated_at ON public.ci_builds USING btree (updated_at); + +CREATE INDEX index_ci_builds_on_upstream_pipeline_id ON public.ci_builds USING btree (upstream_pipeline_id) WHERE (upstream_pipeline_id IS NOT NULL); + +CREATE INDEX index_ci_builds_on_user_id ON public.ci_builds USING btree (user_id); + +CREATE INDEX index_ci_builds_project_id_and_status_for_live_jobs_partial2 ON public.ci_builds USING btree (project_id, status) WHERE (((type)::text = 'Ci::Build'::text) AND ((status)::text = ANY (ARRAY[('running'::character varying)::text, ('pending'::character varying)::text, ('created'::character varying)::text]))); + +CREATE UNIQUE INDEX index_ci_builds_runner_session_on_build_id ON public.ci_builds_runner_session USING btree (build_id); + +CREATE INDEX index_ci_daily_report_results_on_last_pipeline_id ON public.ci_daily_report_results USING btree (last_pipeline_id); + +CREATE UNIQUE INDEX index_ci_group_variables_on_group_id_and_key ON public.ci_group_variables USING btree (group_id, key); + +CREATE INDEX index_ci_job_artifacts_on_expire_at_and_job_id ON public.ci_job_artifacts USING btree (expire_at, job_id); + +CREATE INDEX index_ci_job_artifacts_on_file_store ON public.ci_job_artifacts USING btree (file_store); + +CREATE UNIQUE INDEX index_ci_job_artifacts_on_job_id_and_file_type ON public.ci_job_artifacts USING btree (job_id, file_type); + +CREATE INDEX index_ci_job_artifacts_on_project_id ON public.ci_job_artifacts USING btree (project_id); + +CREATE INDEX index_ci_job_artifacts_on_project_id_for_security_reports ON public.ci_job_artifacts USING btree (project_id) WHERE (file_type = ANY (ARRAY[5, 6, 7, 8])); + +CREATE INDEX index_ci_job_variables_on_job_id ON public.ci_job_variables USING btree (job_id); + +CREATE UNIQUE INDEX index_ci_job_variables_on_key_and_job_id ON public.ci_job_variables USING btree (key, job_id); + +CREATE INDEX index_ci_pipeline_chat_data_on_chat_name_id ON public.ci_pipeline_chat_data USING btree (chat_name_id); + +CREATE UNIQUE INDEX index_ci_pipeline_chat_data_on_pipeline_id ON public.ci_pipeline_chat_data USING btree (pipeline_id); + +CREATE UNIQUE INDEX index_ci_pipeline_schedule_variables_on_schedule_id_and_key ON public.ci_pipeline_schedule_variables USING btree (pipeline_schedule_id, key); + +CREATE INDEX index_ci_pipeline_schedules_on_next_run_at_and_active ON public.ci_pipeline_schedules USING btree (next_run_at, active); + +CREATE INDEX index_ci_pipeline_schedules_on_owner_id ON public.ci_pipeline_schedules USING btree (owner_id); + +CREATE INDEX index_ci_pipeline_schedules_on_project_id ON public.ci_pipeline_schedules USING btree (project_id); + +CREATE INDEX index_ci_pipeline_variables_on_pipeline_id ON public.ci_pipeline_variables USING btree (pipeline_id) WHERE ((key)::text = 'AUTO_DEVOPS_MODSECURITY_SEC_RULE_ENGINE'::text); + +CREATE UNIQUE INDEX index_ci_pipeline_variables_on_pipeline_id_and_key ON public.ci_pipeline_variables USING btree (pipeline_id, key); + +CREATE INDEX index_ci_pipelines_config_on_pipeline_id ON public.ci_pipelines_config USING btree (pipeline_id); + +CREATE INDEX index_ci_pipelines_on_auto_canceled_by_id ON public.ci_pipelines USING btree (auto_canceled_by_id); + +CREATE INDEX index_ci_pipelines_on_external_pull_request_id ON public.ci_pipelines USING btree (external_pull_request_id) WHERE (external_pull_request_id IS NOT NULL); + +CREATE INDEX index_ci_pipelines_on_merge_request_id ON public.ci_pipelines USING btree (merge_request_id) WHERE (merge_request_id IS NOT NULL); + +CREATE INDEX index_ci_pipelines_on_pipeline_schedule_id ON public.ci_pipelines USING btree (pipeline_schedule_id); + +CREATE INDEX index_ci_pipelines_on_project_id_and_id_desc ON public.ci_pipelines USING btree (project_id, id DESC); + +CREATE UNIQUE INDEX index_ci_pipelines_on_project_id_and_iid ON public.ci_pipelines USING btree (project_id, iid) WHERE (iid IS NOT NULL); + +CREATE INDEX index_ci_pipelines_on_project_id_and_ref_and_status_and_id ON public.ci_pipelines USING btree (project_id, ref, status, id); + +CREATE INDEX index_ci_pipelines_on_project_id_and_sha ON public.ci_pipelines USING btree (project_id, sha); + +CREATE INDEX index_ci_pipelines_on_project_id_and_source ON public.ci_pipelines USING btree (project_id, source); + +CREATE INDEX index_ci_pipelines_on_project_id_and_status_and_config_source ON public.ci_pipelines USING btree (project_id, status, config_source); + +CREATE INDEX index_ci_pipelines_on_project_id_and_status_and_updated_at ON public.ci_pipelines USING btree (project_id, status, updated_at); + +CREATE INDEX index_ci_pipelines_on_project_idandrefandiddesc ON public.ci_pipelines USING btree (project_id, ref, id DESC); + +CREATE INDEX index_ci_pipelines_on_status ON public.ci_pipelines USING btree (status); + +CREATE INDEX index_ci_pipelines_on_user_id_and_created_at ON public.ci_pipelines USING btree (user_id, created_at); + +CREATE INDEX index_ci_refs_on_last_updated_by_pipeline_id ON public.ci_refs USING btree (last_updated_by_pipeline_id); + +CREATE UNIQUE INDEX index_ci_refs_on_project_id_and_ref_and_tag ON public.ci_refs USING btree (project_id, ref, tag); + +CREATE UNIQUE INDEX index_ci_resource_groups_on_project_id_and_key ON public.ci_resource_groups USING btree (project_id, key); + +CREATE INDEX index_ci_resources_on_build_id ON public.ci_resources USING btree (build_id); + +CREATE UNIQUE INDEX index_ci_resources_on_resource_group_id_and_build_id ON public.ci_resources USING btree (resource_group_id, build_id); + +CREATE INDEX index_ci_runner_namespaces_on_namespace_id ON public.ci_runner_namespaces USING btree (namespace_id); + +CREATE UNIQUE INDEX index_ci_runner_namespaces_on_runner_id_and_namespace_id ON public.ci_runner_namespaces USING btree (runner_id, namespace_id); + +CREATE INDEX index_ci_runner_projects_on_project_id ON public.ci_runner_projects USING btree (project_id); + +CREATE INDEX index_ci_runner_projects_on_runner_id ON public.ci_runner_projects USING btree (runner_id); + +CREATE INDEX index_ci_runners_on_contacted_at ON public.ci_runners USING btree (contacted_at); + +CREATE INDEX index_ci_runners_on_is_shared ON public.ci_runners USING btree (is_shared); + +CREATE INDEX index_ci_runners_on_locked ON public.ci_runners USING btree (locked); + +CREATE INDEX index_ci_runners_on_runner_type ON public.ci_runners USING btree (runner_type); + +CREATE INDEX index_ci_runners_on_token ON public.ci_runners USING btree (token); + +CREATE INDEX index_ci_runners_on_token_encrypted ON public.ci_runners USING btree (token_encrypted); + +CREATE INDEX index_ci_sources_pipelines_on_pipeline_id ON public.ci_sources_pipelines USING btree (pipeline_id); + +CREATE INDEX index_ci_sources_pipelines_on_project_id ON public.ci_sources_pipelines USING btree (project_id); + +CREATE INDEX index_ci_sources_pipelines_on_source_job_id ON public.ci_sources_pipelines USING btree (source_job_id); + +CREATE INDEX index_ci_sources_pipelines_on_source_pipeline_id ON public.ci_sources_pipelines USING btree (source_pipeline_id); + +CREATE INDEX index_ci_sources_pipelines_on_source_project_id ON public.ci_sources_pipelines USING btree (source_project_id); + +CREATE INDEX index_ci_sources_projects_on_pipeline_id ON public.ci_sources_projects USING btree (pipeline_id); + +CREATE UNIQUE INDEX index_ci_sources_projects_on_source_project_id_and_pipeline_id ON public.ci_sources_projects USING btree (source_project_id, pipeline_id); + +CREATE INDEX index_ci_stages_on_pipeline_id ON public.ci_stages USING btree (pipeline_id); + +CREATE UNIQUE INDEX index_ci_stages_on_pipeline_id_and_name ON public.ci_stages USING btree (pipeline_id, name); + +CREATE INDEX index_ci_stages_on_pipeline_id_and_position ON public.ci_stages USING btree (pipeline_id, "position"); + +CREATE INDEX index_ci_stages_on_project_id ON public.ci_stages USING btree (project_id); + +CREATE INDEX index_ci_subscriptions_projects_on_upstream_project_id ON public.ci_subscriptions_projects USING btree (upstream_project_id); + +CREATE UNIQUE INDEX index_ci_subscriptions_projects_unique_subscription ON public.ci_subscriptions_projects USING btree (downstream_project_id, upstream_project_id); + +CREATE INDEX index_ci_trigger_requests_on_commit_id ON public.ci_trigger_requests USING btree (commit_id); + +CREATE INDEX index_ci_trigger_requests_on_trigger_id_and_id ON public.ci_trigger_requests USING btree (trigger_id, id DESC); + +CREATE INDEX index_ci_triggers_on_owner_id ON public.ci_triggers USING btree (owner_id); + +CREATE INDEX index_ci_triggers_on_project_id ON public.ci_triggers USING btree (project_id); + +CREATE INDEX index_ci_variables_on_project_id ON public.ci_variables USING btree (project_id) WHERE ((key)::text = 'AUTO_DEVOPS_MODSECURITY_SEC_RULE_ENGINE'::text); + +CREATE UNIQUE INDEX index_ci_variables_on_project_id_and_key_and_environment_scope ON public.ci_variables USING btree (project_id, key, environment_scope); + +CREATE UNIQUE INDEX index_cluster_groups_on_cluster_id_and_group_id ON public.cluster_groups USING btree (cluster_id, group_id); + +CREATE INDEX index_cluster_groups_on_group_id ON public.cluster_groups USING btree (group_id); + +CREATE UNIQUE INDEX index_cluster_platforms_kubernetes_on_cluster_id ON public.cluster_platforms_kubernetes USING btree (cluster_id); + +CREATE INDEX index_cluster_projects_on_cluster_id ON public.cluster_projects USING btree (cluster_id); + +CREATE INDEX index_cluster_projects_on_project_id ON public.cluster_projects USING btree (project_id); + +CREATE UNIQUE INDEX index_cluster_providers_aws_on_cluster_id ON public.cluster_providers_aws USING btree (cluster_id); + +CREATE INDEX index_cluster_providers_aws_on_cluster_id_and_status ON public.cluster_providers_aws USING btree (cluster_id, status); + +CREATE INDEX index_cluster_providers_aws_on_created_by_user_id ON public.cluster_providers_aws USING btree (created_by_user_id); + +CREATE INDEX index_cluster_providers_gcp_on_cloud_run ON public.cluster_providers_gcp USING btree (cloud_run); + +CREATE UNIQUE INDEX index_cluster_providers_gcp_on_cluster_id ON public.cluster_providers_gcp USING btree (cluster_id); + +CREATE UNIQUE INDEX index_clusters_applications_cert_managers_on_cluster_id ON public.clusters_applications_cert_managers USING btree (cluster_id); + +CREATE UNIQUE INDEX index_clusters_applications_crossplane_on_cluster_id ON public.clusters_applications_crossplane USING btree (cluster_id); + +CREATE UNIQUE INDEX index_clusters_applications_elastic_stacks_on_cluster_id ON public.clusters_applications_elastic_stacks USING btree (cluster_id); + +CREATE UNIQUE INDEX index_clusters_applications_helm_on_cluster_id ON public.clusters_applications_helm USING btree (cluster_id); + +CREATE UNIQUE INDEX index_clusters_applications_ingress_on_cluster_id ON public.clusters_applications_ingress USING btree (cluster_id); + +CREATE UNIQUE INDEX index_clusters_applications_jupyter_on_cluster_id ON public.clusters_applications_jupyter USING btree (cluster_id); + +CREATE INDEX index_clusters_applications_jupyter_on_oauth_application_id ON public.clusters_applications_jupyter USING btree (oauth_application_id); + +CREATE UNIQUE INDEX index_clusters_applications_knative_on_cluster_id ON public.clusters_applications_knative USING btree (cluster_id); + +CREATE UNIQUE INDEX index_clusters_applications_prometheus_on_cluster_id ON public.clusters_applications_prometheus USING btree (cluster_id); + +CREATE UNIQUE INDEX index_clusters_applications_runners_on_cluster_id ON public.clusters_applications_runners USING btree (cluster_id); + +CREATE INDEX index_clusters_applications_runners_on_runner_id ON public.clusters_applications_runners USING btree (runner_id); + +CREATE INDEX index_clusters_kubernetes_namespaces_on_cluster_id ON public.clusters_kubernetes_namespaces USING btree (cluster_id); + +CREATE INDEX index_clusters_kubernetes_namespaces_on_cluster_project_id ON public.clusters_kubernetes_namespaces USING btree (cluster_project_id); + +CREATE INDEX index_clusters_kubernetes_namespaces_on_environment_id ON public.clusters_kubernetes_namespaces USING btree (environment_id); + +CREATE INDEX index_clusters_kubernetes_namespaces_on_project_id ON public.clusters_kubernetes_namespaces USING btree (project_id); + +CREATE INDEX index_clusters_on_enabled_and_provider_type_and_id ON public.clusters USING btree (enabled, provider_type, id); + +CREATE INDEX index_clusters_on_management_project_id ON public.clusters USING btree (management_project_id) WHERE (management_project_id IS NOT NULL); + +CREATE INDEX index_clusters_on_user_id ON public.clusters USING btree (user_id); + +CREATE UNIQUE INDEX index_commit_user_mentions_on_note_id ON public.commit_user_mentions USING btree (note_id); + +CREATE INDEX index_container_expiration_policies_on_next_run_at_and_enabled ON public.container_expiration_policies USING btree (next_run_at, enabled); + +CREATE INDEX index_container_repositories_on_project_id ON public.container_repositories USING btree (project_id); + +CREATE UNIQUE INDEX index_container_repositories_on_project_id_and_name ON public.container_repositories USING btree (project_id, name); + +CREATE UNIQUE INDEX index_daily_report_results_unique_columns ON public.ci_daily_report_results USING btree (project_id, ref_path, param_type, date, title); + +CREATE INDEX index_dependency_proxy_blobs_on_group_id_and_file_name ON public.dependency_proxy_blobs USING btree (group_id, file_name); + +CREATE INDEX index_dependency_proxy_group_settings_on_group_id ON public.dependency_proxy_group_settings USING btree (group_id); + +CREATE INDEX index_deploy_keys_projects_on_deploy_key_id ON public.deploy_keys_projects USING btree (deploy_key_id); + +CREATE INDEX index_deploy_keys_projects_on_project_id ON public.deploy_keys_projects USING btree (project_id); + +CREATE UNIQUE INDEX index_deploy_tokens_on_token ON public.deploy_tokens USING btree (token); + +CREATE INDEX index_deploy_tokens_on_token_and_expires_at_and_id ON public.deploy_tokens USING btree (token, expires_at, id) WHERE (revoked IS FALSE); + +CREATE UNIQUE INDEX index_deploy_tokens_on_token_encrypted ON public.deploy_tokens USING btree (token_encrypted); + +CREATE UNIQUE INDEX index_deployment_clusters_on_cluster_id_and_deployment_id ON public.deployment_clusters USING btree (cluster_id, deployment_id); + +CREATE INDEX index_deployment_merge_requests_on_merge_request_id ON public.deployment_merge_requests USING btree (merge_request_id); + +CREATE INDEX index_deployments_on_cluster_id_and_status ON public.deployments USING btree (cluster_id, status); + +CREATE INDEX index_deployments_on_created_at ON public.deployments USING btree (created_at); + +CREATE INDEX index_deployments_on_deployable_type_and_deployable_id ON public.deployments USING btree (deployable_type, deployable_id); + +CREATE INDEX index_deployments_on_environment_id_and_id ON public.deployments USING btree (environment_id, id); + +CREATE INDEX index_deployments_on_environment_id_and_iid_and_project_id ON public.deployments USING btree (environment_id, iid, project_id); + +CREATE INDEX index_deployments_on_environment_id_and_status ON public.deployments USING btree (environment_id, status); + +CREATE INDEX index_deployments_on_id_and_status ON public.deployments USING btree (id, status); + +CREATE INDEX index_deployments_on_project_id_and_id ON public.deployments USING btree (project_id, id DESC); + +CREATE UNIQUE INDEX index_deployments_on_project_id_and_iid ON public.deployments USING btree (project_id, iid); + +CREATE INDEX index_deployments_on_project_id_and_ref ON public.deployments USING btree (project_id, ref); + +CREATE INDEX index_deployments_on_project_id_and_status ON public.deployments USING btree (project_id, status); + +CREATE INDEX index_deployments_on_project_id_and_status_and_created_at ON public.deployments USING btree (project_id, status, created_at); + +CREATE INDEX index_deployments_on_project_id_and_updated_at_and_id ON public.deployments USING btree (project_id, updated_at DESC, id DESC); + +CREATE INDEX index_deployments_on_user_id_and_status_and_created_at ON public.deployments USING btree (user_id, status, created_at); + +CREATE INDEX index_description_versions_on_epic_id ON public.description_versions USING btree (epic_id) WHERE (epic_id IS NOT NULL); + +CREATE INDEX index_description_versions_on_issue_id ON public.description_versions USING btree (issue_id) WHERE (issue_id IS NOT NULL); + +CREATE INDEX index_description_versions_on_merge_request_id ON public.description_versions USING btree (merge_request_id) WHERE (merge_request_id IS NOT NULL); + +CREATE UNIQUE INDEX index_design_management_designs_on_issue_id_and_filename ON public.design_management_designs USING btree (issue_id, filename); + +CREATE INDEX index_design_management_designs_on_project_id ON public.design_management_designs USING btree (project_id); + +CREATE INDEX index_design_management_designs_versions_on_design_id ON public.design_management_designs_versions USING btree (design_id); + +CREATE INDEX index_design_management_designs_versions_on_event ON public.design_management_designs_versions USING btree (event); + +CREATE INDEX index_design_management_designs_versions_on_version_id ON public.design_management_designs_versions USING btree (version_id); + +CREATE INDEX index_design_management_versions_on_author_id ON public.design_management_versions USING btree (author_id) WHERE (author_id IS NOT NULL); + +CREATE INDEX index_design_management_versions_on_issue_id ON public.design_management_versions USING btree (issue_id); + +CREATE UNIQUE INDEX index_design_management_versions_on_sha_and_issue_id ON public.design_management_versions USING btree (sha, issue_id); + +CREATE UNIQUE INDEX index_design_user_mentions_on_note_id ON public.design_user_mentions USING btree (note_id); + +CREATE INDEX index_draft_notes_on_author_id ON public.draft_notes USING btree (author_id); + +CREATE INDEX index_draft_notes_on_discussion_id ON public.draft_notes USING btree (discussion_id); + +CREATE INDEX index_draft_notes_on_merge_request_id ON public.draft_notes USING btree (merge_request_id); + +CREATE INDEX index_elasticsearch_indexed_namespaces_on_created_at ON public.elasticsearch_indexed_namespaces USING btree (created_at); + +CREATE UNIQUE INDEX index_elasticsearch_indexed_namespaces_on_namespace_id ON public.elasticsearch_indexed_namespaces USING btree (namespace_id); + +CREATE UNIQUE INDEX index_elasticsearch_indexed_projects_on_project_id ON public.elasticsearch_indexed_projects USING btree (project_id); + +CREATE UNIQUE INDEX index_emails_on_confirmation_token ON public.emails USING btree (confirmation_token); + +CREATE UNIQUE INDEX index_emails_on_email ON public.emails USING btree (email); + +CREATE INDEX index_emails_on_user_id ON public.emails USING btree (user_id); + +CREATE INDEX index_environments_on_auto_stop_at ON public.environments USING btree (auto_stop_at) WHERE (auto_stop_at IS NOT NULL); + +CREATE INDEX index_environments_on_name_varchar_pattern_ops ON public.environments USING btree (name varchar_pattern_ops); + +CREATE UNIQUE INDEX index_environments_on_project_id_and_name ON public.environments USING btree (project_id, name); + +CREATE UNIQUE INDEX index_environments_on_project_id_and_slug ON public.environments USING btree (project_id, slug); + +CREATE INDEX index_environments_on_project_id_state_environment_type ON public.environments USING btree (project_id, state, environment_type); + +CREATE INDEX index_environments_on_state_and_auto_stop_at ON public.environments USING btree (state, auto_stop_at) WHERE ((auto_stop_at IS NOT NULL) AND ((state)::text = 'available'::text)); + +CREATE INDEX index_epic_issues_on_epic_id ON public.epic_issues USING btree (epic_id); + +CREATE UNIQUE INDEX index_epic_issues_on_issue_id ON public.epic_issues USING btree (issue_id); + +CREATE INDEX index_epic_metrics ON public.epic_metrics USING btree (epic_id); + +CREATE UNIQUE INDEX index_epic_user_mentions_on_note_id ON public.epic_user_mentions USING btree (note_id) WHERE (note_id IS NOT NULL); + +CREATE INDEX index_epics_on_assignee_id ON public.epics USING btree (assignee_id); + +CREATE INDEX index_epics_on_author_id ON public.epics USING btree (author_id); + +CREATE INDEX index_epics_on_closed_by_id ON public.epics USING btree (closed_by_id); + +CREATE INDEX index_epics_on_due_date_sourcing_epic_id ON public.epics USING btree (due_date_sourcing_epic_id) WHERE (due_date_sourcing_epic_id IS NOT NULL); + +CREATE INDEX index_epics_on_due_date_sourcing_milestone_id ON public.epics USING btree (due_date_sourcing_milestone_id); + +CREATE INDEX index_epics_on_end_date ON public.epics USING btree (end_date); + +CREATE INDEX index_epics_on_group_id ON public.epics USING btree (group_id); + +CREATE UNIQUE INDEX index_epics_on_group_id_and_external_key ON public.epics USING btree (group_id, external_key) WHERE (external_key IS NOT NULL); + +CREATE INDEX index_epics_on_group_id_and_iid_varchar_pattern ON public.epics USING btree (group_id, ((iid)::character varying) varchar_pattern_ops); + +CREATE INDEX index_epics_on_iid ON public.epics USING btree (iid); + +CREATE INDEX index_epics_on_lock_version ON public.epics USING btree (lock_version) WHERE (lock_version IS NULL); + +CREATE INDEX index_epics_on_parent_id ON public.epics USING btree (parent_id); + +CREATE INDEX index_epics_on_start_date ON public.epics USING btree (start_date); + +CREATE INDEX index_epics_on_start_date_sourcing_epic_id ON public.epics USING btree (start_date_sourcing_epic_id) WHERE (start_date_sourcing_epic_id IS NOT NULL); + +CREATE INDEX index_epics_on_start_date_sourcing_milestone_id ON public.epics USING btree (start_date_sourcing_milestone_id); + +CREATE INDEX index_events_on_action ON public.events USING btree (action); + +CREATE INDEX index_events_on_author_id_and_created_at ON public.events USING btree (author_id, created_at); + +CREATE INDEX index_events_on_author_id_and_project_id ON public.events USING btree (author_id, project_id); + +CREATE INDEX index_events_on_group_id_partial ON public.events USING btree (group_id) WHERE (group_id IS NOT NULL); + +CREATE INDEX index_events_on_project_id_and_created_at ON public.events USING btree (project_id, created_at); + +CREATE INDEX index_events_on_project_id_and_id ON public.events USING btree (project_id, id); + +CREATE INDEX index_events_on_target_type_and_target_id ON public.events USING btree (target_type, target_id); + +CREATE INDEX index_evidences_on_release_id ON public.evidences USING btree (release_id); + +CREATE UNIQUE INDEX index_external_pull_requests_on_project_and_branches ON public.external_pull_requests USING btree (project_id, source_branch, target_branch); + +CREATE UNIQUE INDEX index_feature_flag_scopes_on_flag_id_and_environment_scope ON public.operations_feature_flag_scopes USING btree (feature_flag_id, environment_scope); + +CREATE UNIQUE INDEX index_feature_flags_clients_on_project_id_and_token_encrypted ON public.operations_feature_flags_clients USING btree (project_id, token_encrypted); + +CREATE UNIQUE INDEX index_feature_gates_on_feature_key_and_key_and_value ON public.feature_gates USING btree (feature_key, key, value); + +CREATE UNIQUE INDEX index_features_on_key ON public.features USING btree (key); + +CREATE INDEX index_for_resource_group ON public.ci_builds USING btree (resource_group_id, id) WHERE (resource_group_id IS NOT NULL); + +CREATE INDEX index_for_status_per_branch_per_project ON public.merge_trains USING btree (target_project_id, target_branch, status); + +CREATE INDEX index_fork_network_members_on_fork_network_id ON public.fork_network_members USING btree (fork_network_id); + +CREATE INDEX index_fork_network_members_on_forked_from_project_id ON public.fork_network_members USING btree (forked_from_project_id); + +CREATE UNIQUE INDEX index_fork_network_members_on_project_id ON public.fork_network_members USING btree (project_id); + +CREATE UNIQUE INDEX index_fork_networks_on_root_project_id ON public.fork_networks USING btree (root_project_id); + +CREATE INDEX index_geo_event_log_on_cache_invalidation_event_id ON public.geo_event_log USING btree (cache_invalidation_event_id) WHERE (cache_invalidation_event_id IS NOT NULL); + +CREATE INDEX index_geo_event_log_on_container_repository_updated_event_id ON public.geo_event_log USING btree (container_repository_updated_event_id); + +CREATE INDEX index_geo_event_log_on_geo_event_id ON public.geo_event_log USING btree (geo_event_id) WHERE (geo_event_id IS NOT NULL); + +CREATE INDEX index_geo_event_log_on_hashed_storage_attachments_event_id ON public.geo_event_log USING btree (hashed_storage_attachments_event_id) WHERE (hashed_storage_attachments_event_id IS NOT NULL); + +CREATE INDEX index_geo_event_log_on_hashed_storage_migrated_event_id ON public.geo_event_log USING btree (hashed_storage_migrated_event_id) WHERE (hashed_storage_migrated_event_id IS NOT NULL); + +CREATE INDEX index_geo_event_log_on_job_artifact_deleted_event_id ON public.geo_event_log USING btree (job_artifact_deleted_event_id) WHERE (job_artifact_deleted_event_id IS NOT NULL); + +CREATE INDEX index_geo_event_log_on_lfs_object_deleted_event_id ON public.geo_event_log USING btree (lfs_object_deleted_event_id) WHERE (lfs_object_deleted_event_id IS NOT NULL); + +CREATE INDEX index_geo_event_log_on_repositories_changed_event_id ON public.geo_event_log USING btree (repositories_changed_event_id) WHERE (repositories_changed_event_id IS NOT NULL); + +CREATE INDEX index_geo_event_log_on_repository_created_event_id ON public.geo_event_log USING btree (repository_created_event_id) WHERE (repository_created_event_id IS NOT NULL); + +CREATE INDEX index_geo_event_log_on_repository_deleted_event_id ON public.geo_event_log USING btree (repository_deleted_event_id) WHERE (repository_deleted_event_id IS NOT NULL); + +CREATE INDEX index_geo_event_log_on_repository_renamed_event_id ON public.geo_event_log USING btree (repository_renamed_event_id) WHERE (repository_renamed_event_id IS NOT NULL); + +CREATE INDEX index_geo_event_log_on_repository_updated_event_id ON public.geo_event_log USING btree (repository_updated_event_id) WHERE (repository_updated_event_id IS NOT NULL); + +CREATE INDEX index_geo_event_log_on_reset_checksum_event_id ON public.geo_event_log USING btree (reset_checksum_event_id) WHERE (reset_checksum_event_id IS NOT NULL); + +CREATE INDEX index_geo_event_log_on_upload_deleted_event_id ON public.geo_event_log USING btree (upload_deleted_event_id) WHERE (upload_deleted_event_id IS NOT NULL); + +CREATE INDEX index_geo_hashed_storage_attachments_events_on_project_id ON public.geo_hashed_storage_attachments_events USING btree (project_id); + +CREATE INDEX index_geo_hashed_storage_migrated_events_on_project_id ON public.geo_hashed_storage_migrated_events USING btree (project_id); + +CREATE INDEX index_geo_job_artifact_deleted_events_on_job_artifact_id ON public.geo_job_artifact_deleted_events USING btree (job_artifact_id); + +CREATE INDEX index_geo_lfs_object_deleted_events_on_lfs_object_id ON public.geo_lfs_object_deleted_events USING btree (lfs_object_id); + +CREATE INDEX index_geo_node_namespace_links_on_geo_node_id ON public.geo_node_namespace_links USING btree (geo_node_id); + +CREATE UNIQUE INDEX index_geo_node_namespace_links_on_geo_node_id_and_namespace_id ON public.geo_node_namespace_links USING btree (geo_node_id, namespace_id); + +CREATE INDEX index_geo_node_namespace_links_on_namespace_id ON public.geo_node_namespace_links USING btree (namespace_id); + +CREATE UNIQUE INDEX index_geo_node_statuses_on_geo_node_id ON public.geo_node_statuses USING btree (geo_node_id); + +CREATE INDEX index_geo_nodes_on_access_key ON public.geo_nodes USING btree (access_key); + +CREATE UNIQUE INDEX index_geo_nodes_on_name ON public.geo_nodes USING btree (name); + +CREATE INDEX index_geo_nodes_on_primary ON public.geo_nodes USING btree ("primary"); + +CREATE INDEX index_geo_repositories_changed_events_on_geo_node_id ON public.geo_repositories_changed_events USING btree (geo_node_id); + +CREATE INDEX index_geo_repository_created_events_on_project_id ON public.geo_repository_created_events USING btree (project_id); + +CREATE INDEX index_geo_repository_deleted_events_on_project_id ON public.geo_repository_deleted_events USING btree (project_id); + +CREATE INDEX index_geo_repository_renamed_events_on_project_id ON public.geo_repository_renamed_events USING btree (project_id); + +CREATE INDEX index_geo_repository_updated_events_on_project_id ON public.geo_repository_updated_events USING btree (project_id); + +CREATE INDEX index_geo_repository_updated_events_on_source ON public.geo_repository_updated_events USING btree (source); + +CREATE INDEX index_geo_reset_checksum_events_on_project_id ON public.geo_reset_checksum_events USING btree (project_id); + +CREATE INDEX index_geo_upload_deleted_events_on_upload_id ON public.geo_upload_deleted_events USING btree (upload_id); + +CREATE INDEX index_gitlab_subscription_histories_on_gitlab_subscription_id ON public.gitlab_subscription_histories USING btree (gitlab_subscription_id); + +CREATE INDEX index_gitlab_subscriptions_on_hosted_plan_id ON public.gitlab_subscriptions USING btree (hosted_plan_id); + +CREATE UNIQUE INDEX index_gitlab_subscriptions_on_namespace_id ON public.gitlab_subscriptions USING btree (namespace_id); + +CREATE UNIQUE INDEX index_gpg_key_subkeys_on_fingerprint ON public.gpg_key_subkeys USING btree (fingerprint); + +CREATE INDEX index_gpg_key_subkeys_on_gpg_key_id ON public.gpg_key_subkeys USING btree (gpg_key_id); + +CREATE UNIQUE INDEX index_gpg_key_subkeys_on_keyid ON public.gpg_key_subkeys USING btree (keyid); + +CREATE UNIQUE INDEX index_gpg_keys_on_fingerprint ON public.gpg_keys USING btree (fingerprint); + +CREATE UNIQUE INDEX index_gpg_keys_on_primary_keyid ON public.gpg_keys USING btree (primary_keyid); + +CREATE INDEX index_gpg_keys_on_user_id ON public.gpg_keys USING btree (user_id); + +CREATE UNIQUE INDEX index_gpg_signatures_on_commit_sha ON public.gpg_signatures USING btree (commit_sha); + +CREATE INDEX index_gpg_signatures_on_gpg_key_id ON public.gpg_signatures USING btree (gpg_key_id); + +CREATE INDEX index_gpg_signatures_on_gpg_key_primary_keyid ON public.gpg_signatures USING btree (gpg_key_primary_keyid); + +CREATE INDEX index_gpg_signatures_on_gpg_key_subkey_id ON public.gpg_signatures USING btree (gpg_key_subkey_id); + +CREATE INDEX index_gpg_signatures_on_project_id ON public.gpg_signatures USING btree (project_id); + +CREATE INDEX index_grafana_integrations_on_enabled ON public.grafana_integrations USING btree (enabled) WHERE (enabled IS TRUE); + +CREATE INDEX index_grafana_integrations_on_project_id ON public.grafana_integrations USING btree (project_id); + +CREATE UNIQUE INDEX index_group_custom_attributes_on_group_id_and_key ON public.group_custom_attributes USING btree (group_id, key); + +CREATE INDEX index_group_custom_attributes_on_key_and_value ON public.group_custom_attributes USING btree (key, value); + +CREATE INDEX index_group_deletion_schedules_on_marked_for_deletion_on ON public.group_deletion_schedules USING btree (marked_for_deletion_on); + +CREATE INDEX index_group_deletion_schedules_on_user_id ON public.group_deletion_schedules USING btree (user_id); + +CREATE INDEX index_group_deploy_tokens_on_deploy_token_id ON public.group_deploy_tokens USING btree (deploy_token_id); + +CREATE UNIQUE INDEX index_group_deploy_tokens_on_group_and_deploy_token_ids ON public.group_deploy_tokens USING btree (group_id, deploy_token_id); + +CREATE UNIQUE INDEX index_group_group_links_on_shared_group_and_shared_with_group ON public.group_group_links USING btree (shared_group_id, shared_with_group_id); + +CREATE INDEX index_group_group_links_on_shared_with_group_id ON public.group_group_links USING btree (shared_with_group_id); + +CREATE INDEX index_identities_on_saml_provider_id ON public.identities USING btree (saml_provider_id) WHERE (saml_provider_id IS NOT NULL); + +CREATE INDEX index_identities_on_user_id ON public.identities USING btree (user_id); + +CREATE UNIQUE INDEX index_import_export_uploads_on_group_id ON public.import_export_uploads USING btree (group_id) WHERE (group_id IS NOT NULL); + +CREATE INDEX index_import_export_uploads_on_project_id ON public.import_export_uploads USING btree (project_id); + +CREATE INDEX index_import_export_uploads_on_updated_at ON public.import_export_uploads USING btree (updated_at); + +CREATE INDEX index_import_failures_on_correlation_id_value ON public.import_failures USING btree (correlation_id_value); + +CREATE INDEX index_import_failures_on_group_id_not_null ON public.import_failures USING btree (group_id) WHERE (group_id IS NOT NULL); + +CREATE INDEX index_import_failures_on_project_id_not_null ON public.import_failures USING btree (project_id) WHERE (project_id IS NOT NULL); + +CREATE UNIQUE INDEX index_index_statuses_on_project_id ON public.index_statuses USING btree (project_id); + +CREATE INDEX index_insights_on_namespace_id ON public.insights USING btree (namespace_id); + +CREATE INDEX index_insights_on_project_id ON public.insights USING btree (project_id); + +CREATE INDEX index_internal_ids_on_namespace_id ON public.internal_ids USING btree (namespace_id); + +CREATE INDEX index_internal_ids_on_project_id ON public.internal_ids USING btree (project_id); + +CREATE UNIQUE INDEX index_internal_ids_on_usage_and_namespace_id ON public.internal_ids USING btree (usage, namespace_id) WHERE (namespace_id IS NOT NULL); + +CREATE UNIQUE INDEX index_internal_ids_on_usage_and_project_id ON public.internal_ids USING btree (usage, project_id) WHERE (project_id IS NOT NULL); + +CREATE INDEX index_ip_restrictions_on_group_id ON public.ip_restrictions USING btree (group_id); + +CREATE UNIQUE INDEX index_issue_assignees_on_issue_id_and_user_id ON public.issue_assignees USING btree (issue_id, user_id); + +CREATE INDEX index_issue_assignees_on_user_id ON public.issue_assignees USING btree (user_id); + +CREATE INDEX index_issue_links_on_source_id ON public.issue_links USING btree (source_id); + +CREATE UNIQUE INDEX index_issue_links_on_source_id_and_target_id ON public.issue_links USING btree (source_id, target_id); + +CREATE INDEX index_issue_links_on_target_id ON public.issue_links USING btree (target_id); + +CREATE INDEX index_issue_metrics ON public.issue_metrics USING btree (issue_id); + +CREATE INDEX index_issue_metrics_on_issue_id_and_timestamps ON public.issue_metrics USING btree (issue_id, first_mentioned_in_commit_at, first_associated_with_milestone_at, first_added_to_board_at); + +CREATE INDEX index_issue_tracker_data_on_service_id ON public.issue_tracker_data USING btree (service_id); + +CREATE UNIQUE INDEX index_issue_user_mentions_on_note_id ON public.issue_user_mentions USING btree (note_id) WHERE (note_id IS NOT NULL); + +CREATE INDEX index_issues_on_author_id ON public.issues USING btree (author_id); + +CREATE INDEX index_issues_on_author_id_and_id_and_created_at ON public.issues USING btree (author_id, id, created_at); + +CREATE INDEX index_issues_on_closed_by_id ON public.issues USING btree (closed_by_id); + +CREATE INDEX index_issues_on_confidential ON public.issues USING btree (confidential); + +CREATE INDEX index_issues_on_description_trigram ON public.issues USING gin (description public.gin_trgm_ops); + +CREATE INDEX index_issues_on_duplicated_to_id ON public.issues USING btree (duplicated_to_id) WHERE (duplicated_to_id IS NOT NULL); + +CREATE INDEX index_issues_on_lock_version ON public.issues USING btree (lock_version) WHERE (lock_version IS NULL); + +CREATE INDEX index_issues_on_milestone_id ON public.issues USING btree (milestone_id); + +CREATE INDEX index_issues_on_moved_to_id ON public.issues USING btree (moved_to_id) WHERE (moved_to_id IS NOT NULL); + +CREATE UNIQUE INDEX index_issues_on_project_id_and_external_key ON public.issues USING btree (project_id, external_key) WHERE (external_key IS NOT NULL); + +CREATE UNIQUE INDEX index_issues_on_project_id_and_iid ON public.issues USING btree (project_id, iid); + +CREATE INDEX index_issues_on_promoted_to_epic_id ON public.issues USING btree (promoted_to_epic_id) WHERE (promoted_to_epic_id IS NOT NULL); + +CREATE INDEX index_issues_on_relative_position ON public.issues USING btree (relative_position); + +CREATE INDEX index_issues_on_title_trigram ON public.issues USING gin (title public.gin_trgm_ops); + +CREATE INDEX index_issues_on_updated_at ON public.issues USING btree (updated_at); + +CREATE INDEX index_issues_on_updated_by_id ON public.issues USING btree (updated_by_id) WHERE (updated_by_id IS NOT NULL); + +CREATE UNIQUE INDEX index_jira_connect_installations_on_client_key ON public.jira_connect_installations USING btree (client_key); + +CREATE INDEX index_jira_connect_subscriptions_on_namespace_id ON public.jira_connect_subscriptions USING btree (namespace_id); + +CREATE INDEX index_jira_tracker_data_on_service_id ON public.jira_tracker_data USING btree (service_id); + +CREATE UNIQUE INDEX index_keys_on_fingerprint ON public.keys USING btree (fingerprint); + +CREATE INDEX index_keys_on_fingerprint_sha256 ON public.keys USING btree (fingerprint_sha256); + +CREATE INDEX index_keys_on_id_and_ldap_key_type ON public.keys USING btree (id) WHERE ((type)::text = 'LDAPKey'::text); + +CREATE INDEX index_keys_on_last_used_at ON public.keys USING btree (last_used_at DESC NULLS LAST); + +CREATE INDEX index_keys_on_user_id ON public.keys USING btree (user_id); + +CREATE UNIQUE INDEX index_kubernetes_namespaces_on_cluster_project_environment_id ON public.clusters_kubernetes_namespaces USING btree (cluster_id, project_id, environment_id); + +CREATE INDEX index_label_links_on_label_id ON public.label_links USING btree (label_id); + +CREATE INDEX index_label_links_on_target_id_and_target_type ON public.label_links USING btree (target_id, target_type); + +CREATE INDEX index_label_priorities_on_label_id ON public.label_priorities USING btree (label_id); + +CREATE INDEX index_label_priorities_on_priority ON public.label_priorities USING btree (priority); + +CREATE UNIQUE INDEX index_label_priorities_on_project_id_and_label_id ON public.label_priorities USING btree (project_id, label_id); + +CREATE UNIQUE INDEX index_labels_on_group_id_and_project_id_and_title ON public.labels USING btree (group_id, project_id, title); + +CREATE INDEX index_labels_on_group_id_and_title ON public.labels USING btree (group_id, title) WHERE (project_id = NULL::integer); + +CREATE INDEX index_labels_on_project_id ON public.labels USING btree (project_id); + +CREATE INDEX index_labels_on_project_id_and_title ON public.labels USING btree (project_id, title) WHERE (group_id = NULL::integer); + +CREATE INDEX index_labels_on_template ON public.labels USING btree (template) WHERE template; + +CREATE INDEX index_labels_on_title ON public.labels USING btree (title); + +CREATE INDEX index_labels_on_type_and_project_id ON public.labels USING btree (type, project_id); + +CREATE UNIQUE INDEX index_lfs_file_locks_on_project_id_and_path ON public.lfs_file_locks USING btree (project_id, path); + +CREATE INDEX index_lfs_file_locks_on_user_id ON public.lfs_file_locks USING btree (user_id); + +CREATE INDEX index_lfs_objects_on_file_store ON public.lfs_objects USING btree (file_store); + +CREATE UNIQUE INDEX index_lfs_objects_on_oid ON public.lfs_objects USING btree (oid); + +CREATE INDEX index_lfs_objects_projects_on_lfs_object_id ON public.lfs_objects_projects USING btree (lfs_object_id); + +CREATE INDEX index_lfs_objects_projects_on_project_id_and_lfs_object_id ON public.lfs_objects_projects USING btree (project_id, lfs_object_id); + +CREATE INDEX index_list_user_preferences_on_list_id ON public.list_user_preferences USING btree (list_id); + +CREATE INDEX index_list_user_preferences_on_user_id ON public.list_user_preferences USING btree (user_id); + +CREATE UNIQUE INDEX index_list_user_preferences_on_user_id_and_list_id ON public.list_user_preferences USING btree (user_id, list_id); + +CREATE UNIQUE INDEX index_lists_on_board_id_and_label_id ON public.lists USING btree (board_id, label_id); + +CREATE INDEX index_lists_on_label_id ON public.lists USING btree (label_id); + +CREATE INDEX index_lists_on_list_type ON public.lists USING btree (list_type); + +CREATE INDEX index_lists_on_milestone_id ON public.lists USING btree (milestone_id); + +CREATE INDEX index_lists_on_user_id ON public.lists USING btree (user_id); + +CREATE INDEX index_members_on_access_level ON public.members USING btree (access_level); + +CREATE INDEX index_members_on_expires_at ON public.members USING btree (expires_at); + +CREATE INDEX index_members_on_invite_email ON public.members USING btree (invite_email); + +CREATE UNIQUE INDEX index_members_on_invite_token ON public.members USING btree (invite_token); + +CREATE INDEX index_members_on_requested_at ON public.members USING btree (requested_at); + +CREATE INDEX index_members_on_source_id_and_source_type ON public.members USING btree (source_id, source_type); + +CREATE INDEX index_members_on_user_id ON public.members USING btree (user_id); + +CREATE INDEX index_members_on_user_id_created_at ON public.members USING btree (user_id, created_at) WHERE ((ldap = true) AND ((type)::text = 'GroupMember'::text) AND ((source_type)::text = 'Namespace'::text)); + +CREATE INDEX index_merge_request_assignees_on_merge_request_id ON public.merge_request_assignees USING btree (merge_request_id); + +CREATE UNIQUE INDEX index_merge_request_assignees_on_merge_request_id_and_user_id ON public.merge_request_assignees USING btree (merge_request_id, user_id); + +CREATE INDEX index_merge_request_assignees_on_user_id ON public.merge_request_assignees USING btree (user_id); + +CREATE INDEX index_merge_request_blocks_on_blocked_merge_request_id ON public.merge_request_blocks USING btree (blocked_merge_request_id); + +CREATE UNIQUE INDEX index_merge_request_diff_commits_on_mr_diff_id_and_order ON public.merge_request_diff_commits USING btree (merge_request_diff_id, relative_order); + +CREATE INDEX index_merge_request_diff_commits_on_sha ON public.merge_request_diff_commits USING btree (sha); + +CREATE UNIQUE INDEX index_merge_request_diff_files_on_mr_diff_id_and_order ON public.merge_request_diff_files USING btree (merge_request_diff_id, relative_order); + +CREATE INDEX index_merge_request_diffs_on_merge_request_id_and_id ON public.merge_request_diffs USING btree (merge_request_id, id); + +CREATE INDEX index_merge_request_diffs_on_merge_request_id_and_id_partial ON public.merge_request_diffs USING btree (merge_request_id, id) WHERE ((NOT stored_externally) OR (stored_externally IS NULL)); + +CREATE INDEX index_merge_request_metrics ON public.merge_request_metrics USING btree (merge_request_id); + +CREATE INDEX index_merge_request_metrics_on_first_deployed_to_production_at ON public.merge_request_metrics USING btree (first_deployed_to_production_at); + +CREATE INDEX index_merge_request_metrics_on_latest_closed_at ON public.merge_request_metrics USING btree (latest_closed_at) WHERE (latest_closed_at IS NOT NULL); + +CREATE INDEX index_merge_request_metrics_on_latest_closed_by_id ON public.merge_request_metrics USING btree (latest_closed_by_id); + +CREATE INDEX index_merge_request_metrics_on_merge_request_id_and_merged_at ON public.merge_request_metrics USING btree (merge_request_id, merged_at) WHERE (merged_at IS NOT NULL); + +CREATE INDEX index_merge_request_metrics_on_merged_at ON public.merge_request_metrics USING btree (merged_at); + +CREATE INDEX index_merge_request_metrics_on_merged_by_id ON public.merge_request_metrics USING btree (merged_by_id); + +CREATE INDEX index_merge_request_metrics_on_pipeline_id ON public.merge_request_metrics USING btree (pipeline_id); + +CREATE UNIQUE INDEX index_merge_request_user_mentions_on_note_id ON public.merge_request_user_mentions USING btree (note_id) WHERE (note_id IS NOT NULL); + +CREATE INDEX index_merge_requests_closing_issues_on_issue_id ON public.merge_requests_closing_issues USING btree (issue_id); + +CREATE INDEX index_merge_requests_closing_issues_on_merge_request_id ON public.merge_requests_closing_issues USING btree (merge_request_id); + +CREATE INDEX index_merge_requests_on_assignee_id ON public.merge_requests USING btree (assignee_id); + +CREATE INDEX index_merge_requests_on_author_id ON public.merge_requests USING btree (author_id); + +CREATE INDEX index_merge_requests_on_created_at ON public.merge_requests USING btree (created_at); + +CREATE INDEX index_merge_requests_on_description_trigram ON public.merge_requests USING gin (description public.gin_trgm_ops); + +CREATE INDEX index_merge_requests_on_head_pipeline_id ON public.merge_requests USING btree (head_pipeline_id); + +CREATE INDEX index_merge_requests_on_latest_merge_request_diff_id ON public.merge_requests USING btree (latest_merge_request_diff_id); + +CREATE INDEX index_merge_requests_on_lock_version ON public.merge_requests USING btree (lock_version) WHERE (lock_version IS NULL); + +CREATE INDEX index_merge_requests_on_merge_user_id ON public.merge_requests USING btree (merge_user_id) WHERE (merge_user_id IS NOT NULL); + +CREATE INDEX index_merge_requests_on_milestone_id ON public.merge_requests USING btree (milestone_id); + +CREATE INDEX index_merge_requests_on_source_branch ON public.merge_requests USING btree (source_branch); + +CREATE INDEX index_merge_requests_on_source_project_id_and_source_branch ON public.merge_requests USING btree (source_project_id, source_branch); + +CREATE INDEX index_merge_requests_on_target_branch ON public.merge_requests USING btree (target_branch); + +CREATE UNIQUE INDEX index_merge_requests_on_target_project_id_and_iid ON public.merge_requests USING btree (target_project_id, iid); + +CREATE INDEX index_merge_requests_on_target_project_id_and_target_branch ON public.merge_requests USING btree (target_project_id, target_branch) WHERE ((state_id = 1) AND (merge_when_pipeline_succeeds = true)); + +CREATE INDEX index_merge_requests_on_title ON public.merge_requests USING btree (title); + +CREATE INDEX index_merge_requests_on_title_trigram ON public.merge_requests USING gin (title public.gin_trgm_ops); + +CREATE INDEX index_merge_requests_on_tp_id_and_merge_commit_sha_and_id ON public.merge_requests USING btree (target_project_id, merge_commit_sha, id); + +CREATE INDEX index_merge_requests_on_updated_by_id ON public.merge_requests USING btree (updated_by_id) WHERE (updated_by_id IS NOT NULL); + +CREATE INDEX index_merge_requests_target_project_id_created_at ON public.merge_requests USING btree (target_project_id, created_at); + +CREATE UNIQUE INDEX index_merge_trains_on_merge_request_id ON public.merge_trains USING btree (merge_request_id); + +CREATE INDEX index_merge_trains_on_pipeline_id ON public.merge_trains USING btree (pipeline_id); + +CREATE INDEX index_merge_trains_on_user_id ON public.merge_trains USING btree (user_id); + +CREATE INDEX index_milestone_releases_on_release_id ON public.milestone_releases USING btree (release_id); + +CREATE INDEX index_milestones_on_description_trigram ON public.milestones USING gin (description public.gin_trgm_ops); + +CREATE INDEX index_milestones_on_due_date ON public.milestones USING btree (due_date); + +CREATE INDEX index_milestones_on_group_id ON public.milestones USING btree (group_id); + +CREATE UNIQUE INDEX index_milestones_on_project_id_and_iid ON public.milestones USING btree (project_id, iid); + +CREATE INDEX index_milestones_on_title ON public.milestones USING btree (title); + +CREATE INDEX index_milestones_on_title_trigram ON public.milestones USING gin (title public.gin_trgm_ops); + +CREATE UNIQUE INDEX index_miletone_releases_on_milestone_and_release ON public.milestone_releases USING btree (milestone_id, release_id); + +CREATE INDEX index_mirror_data_on_next_execution_and_retry_count ON public.project_mirror_data USING btree (next_execution_timestamp, retry_count); + +CREATE UNIQUE INDEX index_mr_blocks_on_blocking_and_blocked_mr_ids ON public.merge_request_blocks USING btree (blocking_merge_request_id, blocked_merge_request_id); + +CREATE UNIQUE INDEX index_mr_context_commits_on_merge_request_id_and_sha ON public.merge_request_context_commits USING btree (merge_request_id, sha); + +CREATE UNIQUE INDEX index_namespace_aggregation_schedules_on_namespace_id ON public.namespace_aggregation_schedules USING btree (namespace_id); + +CREATE UNIQUE INDEX index_namespace_root_storage_statistics_on_namespace_id ON public.namespace_root_storage_statistics USING btree (namespace_id); + +CREATE UNIQUE INDEX index_namespace_statistics_on_namespace_id ON public.namespace_statistics USING btree (namespace_id); + +CREATE INDEX index_namespaces_on_created_at ON public.namespaces USING btree (created_at); + +CREATE INDEX index_namespaces_on_custom_project_templates_group_id_and_type ON public.namespaces USING btree (custom_project_templates_group_id, type) WHERE (custom_project_templates_group_id IS NOT NULL); + +CREATE INDEX index_namespaces_on_file_template_project_id ON public.namespaces USING btree (file_template_project_id); + +CREATE INDEX index_namespaces_on_ldap_sync_last_successful_update_at ON public.namespaces USING btree (ldap_sync_last_successful_update_at); + +CREATE INDEX index_namespaces_on_ldap_sync_last_update_at ON public.namespaces USING btree (ldap_sync_last_update_at); + +CREATE UNIQUE INDEX index_namespaces_on_name_and_parent_id ON public.namespaces USING btree (name, parent_id); + +CREATE INDEX index_namespaces_on_name_trigram ON public.namespaces USING gin (name public.gin_trgm_ops); + +CREATE INDEX index_namespaces_on_owner_id ON public.namespaces USING btree (owner_id); + +CREATE UNIQUE INDEX index_namespaces_on_parent_id_and_id ON public.namespaces USING btree (parent_id, id); + +CREATE INDEX index_namespaces_on_path ON public.namespaces USING btree (path); + +CREATE INDEX index_namespaces_on_path_trigram ON public.namespaces USING gin (path public.gin_trgm_ops); + +CREATE INDEX index_namespaces_on_plan_id ON public.namespaces USING btree (plan_id); + +CREATE INDEX index_namespaces_on_require_two_factor_authentication ON public.namespaces USING btree (require_two_factor_authentication); + +CREATE UNIQUE INDEX index_namespaces_on_runners_token ON public.namespaces USING btree (runners_token); + +CREATE UNIQUE INDEX index_namespaces_on_runners_token_encrypted ON public.namespaces USING btree (runners_token_encrypted); + +CREATE INDEX index_namespaces_on_shared_and_extra_runners_minutes_limit ON public.namespaces USING btree (shared_runners_minutes_limit, extra_shared_runners_minutes_limit); + +CREATE INDEX index_namespaces_on_trial_ends_on ON public.namespaces USING btree (trial_ends_on) WHERE (trial_ends_on IS NOT NULL); + +CREATE INDEX index_namespaces_on_type_partial ON public.namespaces USING btree (type) WHERE (type IS NOT NULL); + +CREATE UNIQUE INDEX index_note_diff_files_on_diff_note_id ON public.note_diff_files USING btree (diff_note_id); + +CREATE INDEX index_notes_on_author_id_and_created_at ON public.notes USING btree (author_id, created_at); + +CREATE INDEX index_notes_on_commit_id ON public.notes USING btree (commit_id); + +CREATE INDEX index_notes_on_created_at ON public.notes USING btree (created_at); + +CREATE INDEX index_notes_on_discussion_id ON public.notes USING btree (discussion_id); + +CREATE INDEX index_notes_on_line_code ON public.notes USING btree (line_code); + +CREATE INDEX index_notes_on_note_trigram ON public.notes USING gin (note public.gin_trgm_ops); + +CREATE INDEX index_notes_on_noteable_id_and_noteable_type ON public.notes USING btree (noteable_id, noteable_type); + +CREATE INDEX index_notes_on_project_id_and_id_and_system_false ON public.notes USING btree (project_id, id) WHERE (NOT system); + +CREATE INDEX index_notes_on_project_id_and_noteable_type ON public.notes USING btree (project_id, noteable_type); + +CREATE INDEX index_notes_on_review_id ON public.notes USING btree (review_id); + +CREATE INDEX index_notification_settings_on_source_id_and_source_type ON public.notification_settings USING btree (source_id, source_type); + +CREATE INDEX index_notification_settings_on_user_id ON public.notification_settings USING btree (user_id); + +CREATE UNIQUE INDEX index_notifications_on_user_id_and_source_id_and_source_type ON public.notification_settings USING btree (user_id, source_id, source_type); + +CREATE UNIQUE INDEX index_oauth_access_grants_on_token ON public.oauth_access_grants USING btree (token); + +CREATE INDEX index_oauth_access_tokens_on_application_id ON public.oauth_access_tokens USING btree (application_id); + +CREATE UNIQUE INDEX index_oauth_access_tokens_on_refresh_token ON public.oauth_access_tokens USING btree (refresh_token); + +CREATE INDEX index_oauth_access_tokens_on_resource_owner_id ON public.oauth_access_tokens USING btree (resource_owner_id); + +CREATE UNIQUE INDEX index_oauth_access_tokens_on_token ON public.oauth_access_tokens USING btree (token); + +CREATE INDEX index_oauth_applications_on_owner_id_and_owner_type ON public.oauth_applications USING btree (owner_id, owner_type); + +CREATE UNIQUE INDEX index_oauth_applications_on_uid ON public.oauth_applications USING btree (uid); + +CREATE INDEX index_oauth_openid_requests_on_access_grant_id ON public.oauth_openid_requests USING btree (access_grant_id); + +CREATE UNIQUE INDEX index_on_deploy_keys_id_and_type_and_public ON public.keys USING btree (id, type) WHERE (public = true); + +CREATE INDEX index_on_id_partial_with_legacy_storage ON public.projects USING btree (id) WHERE ((storage_version < 2) OR (storage_version IS NULL)); + +CREATE INDEX index_on_identities_lower_extern_uid_and_provider ON public.identities USING btree (lower((extern_uid)::text), provider); + +CREATE INDEX index_on_users_name_lower ON public.users USING btree (lower((name)::text)); + +CREATE INDEX index_open_project_tracker_data_on_service_id ON public.open_project_tracker_data USING btree (service_id); + +CREATE UNIQUE INDEX index_operations_feature_flags_on_project_id_and_iid ON public.operations_feature_flags USING btree (project_id, iid); + +CREATE UNIQUE INDEX index_operations_feature_flags_on_project_id_and_name ON public.operations_feature_flags USING btree (project_id, name); + +CREATE UNIQUE INDEX index_operations_scopes_on_strategy_id_and_environment_scope ON public.operations_scopes USING btree (strategy_id, environment_scope); + +CREATE INDEX index_operations_strategies_on_feature_flag_id ON public.operations_strategies USING btree (feature_flag_id); + +CREATE UNIQUE INDEX index_packages_build_infos_on_package_id ON public.packages_build_infos USING btree (package_id); + +CREATE INDEX index_packages_build_infos_on_pipeline_id ON public.packages_build_infos USING btree (pipeline_id); + +CREATE UNIQUE INDEX index_packages_conan_file_metadata_on_package_file_id ON public.packages_conan_file_metadata USING btree (package_file_id); + +CREATE UNIQUE INDEX index_packages_conan_metadata_on_package_id_username_channel ON public.packages_conan_metadata USING btree (package_id, package_username, package_channel); + +CREATE UNIQUE INDEX index_packages_dependencies_on_name_and_version_pattern ON public.packages_dependencies USING btree (name, version_pattern); + +CREATE INDEX index_packages_dependency_links_on_dependency_id ON public.packages_dependency_links USING btree (dependency_id); + +CREATE INDEX index_packages_maven_metadata_on_package_id_and_path ON public.packages_maven_metadata USING btree (package_id, path); + +CREATE INDEX index_packages_package_files_on_package_id_and_file_name ON public.packages_package_files USING btree (package_id, file_name); + +CREATE INDEX index_packages_packages_on_name_trigram ON public.packages_packages USING gin (name public.gin_trgm_ops); + +CREATE INDEX index_packages_packages_on_project_id_and_created_at ON public.packages_packages USING btree (project_id, created_at); + +CREATE INDEX index_packages_packages_on_project_id_and_package_type ON public.packages_packages USING btree (project_id, package_type); + +CREATE INDEX index_packages_packages_on_project_id_and_version ON public.packages_packages USING btree (project_id, version); + +CREATE INDEX index_packages_project_id_name_partial_for_nuget ON public.packages_packages USING btree (project_id, name) WHERE (((name)::text <> 'NuGet.Temporary.Package'::text) AND (version IS NOT NULL) AND (package_type = 4)); + +CREATE INDEX index_packages_tags_on_package_id ON public.packages_tags USING btree (package_id); + +CREATE INDEX index_packages_tags_on_package_id_and_updated_at ON public.packages_tags USING btree (package_id, updated_at DESC); + +CREATE INDEX index_pages_domain_acme_orders_on_challenge_token ON public.pages_domain_acme_orders USING btree (challenge_token); + +CREATE INDEX index_pages_domain_acme_orders_on_pages_domain_id ON public.pages_domain_acme_orders USING btree (pages_domain_id); + +CREATE INDEX index_pages_domains_need_auto_ssl_renewal ON public.pages_domains USING btree (certificate_source, certificate_valid_not_after) WHERE (auto_ssl_enabled = true); + +CREATE UNIQUE INDEX index_pages_domains_on_domain_and_wildcard ON public.pages_domains USING btree (domain, wildcard); + +CREATE INDEX index_pages_domains_on_domain_lowercase ON public.pages_domains USING btree (lower((domain)::text)); + +CREATE INDEX index_pages_domains_on_project_id ON public.pages_domains USING btree (project_id); + +CREATE INDEX index_pages_domains_on_project_id_and_enabled_until ON public.pages_domains USING btree (project_id, enabled_until); + +CREATE INDEX index_pages_domains_on_remove_at ON public.pages_domains USING btree (remove_at); + +CREATE INDEX index_pages_domains_on_scope ON public.pages_domains USING btree (scope); + +CREATE INDEX index_pages_domains_on_usage ON public.pages_domains USING btree (usage); + +CREATE INDEX index_pages_domains_on_verified_at ON public.pages_domains USING btree (verified_at); + +CREATE INDEX index_pages_domains_on_verified_at_and_enabled_until ON public.pages_domains USING btree (verified_at, enabled_until); + +CREATE INDEX index_pages_domains_on_wildcard ON public.pages_domains USING btree (wildcard); + +CREATE INDEX index_pat_on_user_id_and_expires_at ON public.personal_access_tokens USING btree (user_id, expires_at); + +CREATE INDEX index_path_locks_on_path ON public.path_locks USING btree (path); + +CREATE INDEX index_path_locks_on_project_id ON public.path_locks USING btree (project_id); + +CREATE INDEX index_path_locks_on_user_id ON public.path_locks USING btree (user_id); + +CREATE UNIQUE INDEX index_personal_access_tokens_on_token_digest ON public.personal_access_tokens USING btree (token_digest); + +CREATE INDEX index_personal_access_tokens_on_user_id ON public.personal_access_tokens USING btree (user_id); + +CREATE UNIQUE INDEX index_plan_limits_on_plan_id ON public.plan_limits USING btree (plan_id); + +CREATE INDEX index_plans_on_name ON public.plans USING btree (name); + +CREATE UNIQUE INDEX index_pool_repositories_on_disk_path ON public.pool_repositories USING btree (disk_path); + +CREATE INDEX index_pool_repositories_on_shard_id ON public.pool_repositories USING btree (shard_id); + +CREATE UNIQUE INDEX index_pool_repositories_on_source_project_id_and_shard_id ON public.pool_repositories USING btree (source_project_id, shard_id); + +CREATE UNIQUE INDEX index_programming_languages_on_name ON public.programming_languages USING btree (name); + +CREATE UNIQUE INDEX index_project_aliases_on_name ON public.project_aliases USING btree (name); + +CREATE INDEX index_project_aliases_on_project_id ON public.project_aliases USING btree (project_id); + +CREATE INDEX index_project_authorizations_on_project_id ON public.project_authorizations USING btree (project_id); + +CREATE UNIQUE INDEX index_project_authorizations_on_user_id_project_id_access_level ON public.project_authorizations USING btree (user_id, project_id, access_level); + +CREATE UNIQUE INDEX index_project_auto_devops_on_project_id ON public.project_auto_devops USING btree (project_id); + +CREATE UNIQUE INDEX index_project_ci_cd_settings_on_project_id ON public.project_ci_cd_settings USING btree (project_id); + +CREATE INDEX index_project_custom_attributes_on_key_and_value ON public.project_custom_attributes USING btree (key, value); + +CREATE UNIQUE INDEX index_project_custom_attributes_on_project_id_and_key ON public.project_custom_attributes USING btree (project_id, key); + +CREATE UNIQUE INDEX index_project_daily_statistics_on_project_id_and_date ON public.project_daily_statistics USING btree (project_id, date DESC); + +CREATE INDEX index_project_deploy_tokens_on_deploy_token_id ON public.project_deploy_tokens USING btree (deploy_token_id); + +CREATE UNIQUE INDEX index_project_deploy_tokens_on_project_id_and_deploy_token_id ON public.project_deploy_tokens USING btree (project_id, deploy_token_id); + +CREATE UNIQUE INDEX index_project_export_jobs_on_jid ON public.project_export_jobs USING btree (jid); + +CREATE INDEX index_project_export_jobs_on_project_id_and_jid ON public.project_export_jobs USING btree (project_id, jid); + +CREATE INDEX index_project_export_jobs_on_project_id_and_status ON public.project_export_jobs USING btree (project_id, status); + +CREATE INDEX index_project_export_jobs_on_status ON public.project_export_jobs USING btree (status); + +CREATE INDEX index_project_feature_usages_on_project_id ON public.project_feature_usages USING btree (project_id); + +CREATE UNIQUE INDEX index_project_features_on_project_id ON public.project_features USING btree (project_id); + +CREATE INDEX index_project_features_on_project_id_bal_20 ON public.project_features USING btree (project_id) WHERE (builds_access_level = 20); + +CREATE INDEX index_project_features_on_project_id_ral_20 ON public.project_features USING btree (project_id) WHERE (repository_access_level = 20); + +CREATE INDEX index_project_group_links_on_group_id ON public.project_group_links USING btree (group_id); + +CREATE INDEX index_project_group_links_on_project_id ON public.project_group_links USING btree (project_id); + +CREATE INDEX index_project_import_data_on_project_id ON public.project_import_data USING btree (project_id); + +CREATE INDEX index_project_mirror_data_on_last_successful_update_at ON public.project_mirror_data USING btree (last_successful_update_at); + +CREATE INDEX index_project_mirror_data_on_last_update_at_and_retry_count ON public.project_mirror_data USING btree (last_update_at, retry_count); + +CREATE UNIQUE INDEX index_project_mirror_data_on_project_id ON public.project_mirror_data USING btree (project_id); + +CREATE INDEX index_project_mirror_data_on_status ON public.project_mirror_data USING btree (status); + +CREATE UNIQUE INDEX index_project_pages_metadata_on_project_id ON public.project_pages_metadata USING btree (project_id); + +CREATE INDEX index_project_pages_metadata_on_project_id_and_deployed_is_true ON public.project_pages_metadata USING btree (project_id) WHERE (deployed = true); + +CREATE UNIQUE INDEX index_project_repositories_on_disk_path ON public.project_repositories USING btree (disk_path); + +CREATE UNIQUE INDEX index_project_repositories_on_project_id ON public.project_repositories USING btree (project_id); + +CREATE INDEX index_project_repositories_on_shard_id ON public.project_repositories USING btree (shard_id); + +CREATE UNIQUE INDEX index_project_repository_states_on_project_id ON public.project_repository_states USING btree (project_id); + +CREATE INDEX index_project_statistics_on_namespace_id ON public.project_statistics USING btree (namespace_id); + +CREATE UNIQUE INDEX index_project_statistics_on_project_id ON public.project_statistics USING btree (project_id); + +CREATE UNIQUE INDEX index_project_tracing_settings_on_project_id ON public.project_tracing_settings USING btree (project_id); + +CREATE INDEX index_projects_api_created_at_id_desc ON public.projects USING btree (created_at, id DESC); + +CREATE INDEX index_projects_api_last_activity_at_id_desc ON public.projects USING btree (last_activity_at, id DESC); + +CREATE INDEX index_projects_api_name_id_desc ON public.projects USING btree (name, id DESC); + +CREATE INDEX index_projects_api_path_id_desc ON public.projects USING btree (path, id DESC); + +CREATE INDEX index_projects_api_updated_at_id_desc ON public.projects USING btree (updated_at, id DESC); + +CREATE INDEX index_projects_api_vis20_created_at ON public.projects USING btree (created_at, id) WHERE (visibility_level = 20); + +CREATE INDEX index_projects_api_vis20_last_activity_at ON public.projects USING btree (last_activity_at, id) WHERE (visibility_level = 20); + +CREATE INDEX index_projects_api_vis20_name ON public.projects USING btree (name, id) WHERE (visibility_level = 20); + +CREATE INDEX index_projects_api_vis20_path ON public.projects USING btree (path, id) WHERE (visibility_level = 20); + +CREATE INDEX index_projects_api_vis20_updated_at ON public.projects USING btree (updated_at, id) WHERE (visibility_level = 20); + +CREATE INDEX index_projects_on_created_at_and_id ON public.projects USING btree (created_at, id); + +CREATE INDEX index_projects_on_creator_id_and_created_at ON public.projects USING btree (creator_id, created_at); + +CREATE INDEX index_projects_on_description_trigram ON public.projects USING gin (description public.gin_trgm_ops); + +CREATE UNIQUE INDEX index_projects_on_id_partial_for_visibility ON public.projects USING btree (id) WHERE (visibility_level = ANY (ARRAY[10, 20])); + +CREATE INDEX index_projects_on_id_service_desk_enabled ON public.projects USING btree (id) WHERE (service_desk_enabled = true); + +CREATE INDEX index_projects_on_last_activity_at_and_id ON public.projects USING btree (last_activity_at, id); + +CREATE INDEX index_projects_on_last_repository_check_at ON public.projects USING btree (last_repository_check_at) WHERE (last_repository_check_at IS NOT NULL); + +CREATE INDEX index_projects_on_last_repository_check_failed ON public.projects USING btree (last_repository_check_failed); + +CREATE INDEX index_projects_on_last_repository_updated_at ON public.projects USING btree (last_repository_updated_at); + +CREATE INDEX index_projects_on_lower_name ON public.projects USING btree (lower((name)::text)); + +CREATE INDEX index_projects_on_marked_for_deletion_at ON public.projects USING btree (marked_for_deletion_at) WHERE (marked_for_deletion_at IS NOT NULL); + +CREATE INDEX index_projects_on_marked_for_deletion_by_user_id ON public.projects USING btree (marked_for_deletion_by_user_id) WHERE (marked_for_deletion_by_user_id IS NOT NULL); + +CREATE INDEX index_projects_on_mirror_creator_id_created_at ON public.projects USING btree (creator_id, created_at) WHERE ((mirror = true) AND (mirror_trigger_builds = true)); + +CREATE INDEX index_projects_on_mirror_id_where_mirror_and_trigger_builds ON public.projects USING btree (id) WHERE ((mirror = true) AND (mirror_trigger_builds = true)); + +CREATE INDEX index_projects_on_mirror_last_successful_update_at ON public.projects USING btree (mirror_last_successful_update_at); + +CREATE INDEX index_projects_on_mirror_user_id ON public.projects USING btree (mirror_user_id); + +CREATE INDEX index_projects_on_name_and_id ON public.projects USING btree (name, id); + +CREATE INDEX index_projects_on_name_trigram ON public.projects USING gin (name public.gin_trgm_ops); + +CREATE INDEX index_projects_on_namespace_id ON public.projects USING btree (namespace_id); + +CREATE INDEX index_projects_on_path_and_id ON public.projects USING btree (path, id); + +CREATE INDEX index_projects_on_path_trigram ON public.projects USING gin (path public.gin_trgm_ops); + +CREATE INDEX index_projects_on_pending_delete ON public.projects USING btree (pending_delete); + +CREATE INDEX index_projects_on_pool_repository_id ON public.projects USING btree (pool_repository_id) WHERE (pool_repository_id IS NOT NULL); + +CREATE INDEX index_projects_on_repository_storage ON public.projects USING btree (repository_storage); + +CREATE INDEX index_projects_on_runners_token ON public.projects USING btree (runners_token); + +CREATE INDEX index_projects_on_runners_token_encrypted ON public.projects USING btree (runners_token_encrypted); + +CREATE INDEX index_projects_on_star_count ON public.projects USING btree (star_count); + +CREATE INDEX index_projects_on_updated_at_and_id ON public.projects USING btree (updated_at, id); + +CREATE UNIQUE INDEX index_prometheus_alert_event_scoped_payload_key ON public.prometheus_alert_events USING btree (prometheus_alert_id, payload_key); + +CREATE INDEX index_prometheus_alert_events_on_project_id_and_status ON public.prometheus_alert_events USING btree (project_id, status); + +CREATE UNIQUE INDEX index_prometheus_alerts_metric_environment ON public.prometheus_alerts USING btree (project_id, prometheus_metric_id, environment_id); + +CREATE INDEX index_prometheus_alerts_on_environment_id ON public.prometheus_alerts USING btree (environment_id); + +CREATE INDEX index_prometheus_alerts_on_prometheus_metric_id ON public.prometheus_alerts USING btree (prometheus_metric_id); + +CREATE INDEX index_prometheus_metrics_on_common ON public.prometheus_metrics USING btree (common); + +CREATE INDEX index_prometheus_metrics_on_group ON public.prometheus_metrics USING btree ("group"); + +CREATE UNIQUE INDEX index_prometheus_metrics_on_identifier ON public.prometheus_metrics USING btree (identifier); + +CREATE INDEX index_prometheus_metrics_on_project_id ON public.prometheus_metrics USING btree (project_id); + +CREATE INDEX index_protected_branch_merge_access ON public.protected_branch_merge_access_levels USING btree (protected_branch_id); + +CREATE INDEX index_protected_branch_merge_access_levels_on_group_id ON public.protected_branch_merge_access_levels USING btree (group_id); + +CREATE INDEX index_protected_branch_merge_access_levels_on_user_id ON public.protected_branch_merge_access_levels USING btree (user_id); + +CREATE INDEX index_protected_branch_push_access ON public.protected_branch_push_access_levels USING btree (protected_branch_id); + +CREATE INDEX index_protected_branch_push_access_levels_on_group_id ON public.protected_branch_push_access_levels USING btree (group_id); + +CREATE INDEX index_protected_branch_push_access_levels_on_user_id ON public.protected_branch_push_access_levels USING btree (user_id); + +CREATE INDEX index_protected_branch_unprotect_access ON public.protected_branch_unprotect_access_levels USING btree (protected_branch_id); + +CREATE INDEX index_protected_branch_unprotect_access_levels_on_group_id ON public.protected_branch_unprotect_access_levels USING btree (group_id); + +CREATE INDEX index_protected_branch_unprotect_access_levels_on_user_id ON public.protected_branch_unprotect_access_levels USING btree (user_id); + +CREATE INDEX index_protected_branches_on_project_id ON public.protected_branches USING btree (project_id); + +CREATE INDEX index_protected_environment_deploy_access ON public.protected_environment_deploy_access_levels USING btree (protected_environment_id); + +CREATE INDEX index_protected_environment_deploy_access_levels_on_group_id ON public.protected_environment_deploy_access_levels USING btree (group_id); + +CREATE INDEX index_protected_environment_deploy_access_levels_on_user_id ON public.protected_environment_deploy_access_levels USING btree (user_id); + +CREATE INDEX index_protected_environments_on_project_id ON public.protected_environments USING btree (project_id); + +CREATE UNIQUE INDEX index_protected_environments_on_project_id_and_name ON public.protected_environments USING btree (project_id, name); + +CREATE INDEX index_protected_tag_create_access ON public.protected_tag_create_access_levels USING btree (protected_tag_id); + +CREATE INDEX index_protected_tag_create_access_levels_on_group_id ON public.protected_tag_create_access_levels USING btree (group_id); + +CREATE INDEX index_protected_tag_create_access_levels_on_user_id ON public.protected_tag_create_access_levels USING btree (user_id); + +CREATE INDEX index_protected_tags_on_project_id ON public.protected_tags USING btree (project_id); + +CREATE UNIQUE INDEX index_protected_tags_on_project_id_and_name ON public.protected_tags USING btree (project_id, name); + +CREATE UNIQUE INDEX index_push_event_payloads_on_event_id ON public.push_event_payloads USING btree (event_id); + +CREATE INDEX index_push_rules_on_is_sample ON public.push_rules USING btree (is_sample) WHERE is_sample; + +CREATE INDEX index_push_rules_on_project_id ON public.push_rules USING btree (project_id); + +CREATE UNIQUE INDEX index_redirect_routes_on_path ON public.redirect_routes USING btree (path); + +CREATE UNIQUE INDEX index_redirect_routes_on_path_unique_text_pattern_ops ON public.redirect_routes USING btree (lower((path)::text) varchar_pattern_ops); + +CREATE INDEX index_redirect_routes_on_source_type_and_source_id ON public.redirect_routes USING btree (source_type, source_id); + +CREATE UNIQUE INDEX index_release_links_on_release_id_and_name ON public.release_links USING btree (release_id, name); + +CREATE UNIQUE INDEX index_release_links_on_release_id_and_url ON public.release_links USING btree (release_id, url); + +CREATE INDEX index_releases_on_author_id ON public.releases USING btree (author_id); + +CREATE INDEX index_releases_on_project_id_and_tag ON public.releases USING btree (project_id, tag); + +CREATE INDEX index_remote_mirrors_on_last_successful_update_at ON public.remote_mirrors USING btree (last_successful_update_at); + +CREATE INDEX index_remote_mirrors_on_project_id ON public.remote_mirrors USING btree (project_id); + +CREATE UNIQUE INDEX index_repository_languages_on_project_and_languages_id ON public.repository_languages USING btree (project_id, programming_language_id); + +CREATE INDEX index_requirements_on_author_id ON public.requirements USING btree (author_id); + +CREATE INDEX index_requirements_on_created_at ON public.requirements USING btree (created_at); + +CREATE INDEX index_requirements_on_project_id ON public.requirements USING btree (project_id); + +CREATE UNIQUE INDEX index_requirements_on_project_id_and_iid ON public.requirements USING btree (project_id, iid) WHERE (project_id IS NOT NULL); + +CREATE INDEX index_requirements_on_state ON public.requirements USING btree (state); + +CREATE INDEX index_requirements_on_title_trigram ON public.requirements USING gin (title public.gin_trgm_ops); + +CREATE INDEX index_requirements_on_updated_at ON public.requirements USING btree (updated_at); + +CREATE INDEX index_resource_label_events_on_epic_id ON public.resource_label_events USING btree (epic_id); + +CREATE INDEX index_resource_label_events_on_issue_id ON public.resource_label_events USING btree (issue_id); + +CREATE INDEX index_resource_label_events_on_label_id_and_action ON public.resource_label_events USING btree (label_id, action); + +CREATE INDEX index_resource_label_events_on_merge_request_id ON public.resource_label_events USING btree (merge_request_id); + +CREATE INDEX index_resource_label_events_on_user_id ON public.resource_label_events USING btree (user_id); + +CREATE INDEX index_resource_milestone_events_on_issue_id ON public.resource_milestone_events USING btree (issue_id); + +CREATE INDEX index_resource_milestone_events_on_merge_request_id ON public.resource_milestone_events USING btree (merge_request_id); + +CREATE INDEX index_resource_milestone_events_on_milestone_id ON public.resource_milestone_events USING btree (milestone_id); + +CREATE INDEX index_resource_milestone_events_on_user_id ON public.resource_milestone_events USING btree (user_id); + +CREATE INDEX index_resource_weight_events_on_issue_id_and_weight ON public.resource_weight_events USING btree (issue_id, weight); + +CREATE INDEX index_resource_weight_events_on_user_id ON public.resource_weight_events USING btree (user_id); + +CREATE INDEX index_reviews_on_author_id ON public.reviews USING btree (author_id); + +CREATE INDEX index_reviews_on_merge_request_id ON public.reviews USING btree (merge_request_id); + +CREATE INDEX index_reviews_on_project_id ON public.reviews USING btree (project_id); + +CREATE UNIQUE INDEX index_routes_on_path ON public.routes USING btree (path); + +CREATE INDEX index_routes_on_path_text_pattern_ops ON public.routes USING btree (path varchar_pattern_ops); + +CREATE UNIQUE INDEX index_routes_on_source_type_and_source_id ON public.routes USING btree (source_type, source_id); + +CREATE INDEX index_saml_providers_on_group_id ON public.saml_providers USING btree (group_id); + +CREATE INDEX index_scim_identities_on_group_id ON public.scim_identities USING btree (group_id); + +CREATE UNIQUE INDEX index_scim_identities_on_lower_extern_uid_and_group_id ON public.scim_identities USING btree (lower((extern_uid)::text), group_id); + +CREATE UNIQUE INDEX index_scim_identities_on_user_id_and_group_id ON public.scim_identities USING btree (user_id, group_id); + +CREATE UNIQUE INDEX index_scim_oauth_access_tokens_on_group_id_and_token_encrypted ON public.scim_oauth_access_tokens USING btree (group_id, token_encrypted); + +CREATE INDEX index_self_managed_prometheus_alert_events_on_environment_id ON public.self_managed_prometheus_alert_events USING btree (environment_id); + +CREATE INDEX index_sent_notifications_on_noteable_type_noteable_id ON public.sent_notifications USING btree (noteable_id) WHERE ((noteable_type)::text = 'Issue'::text); + +CREATE UNIQUE INDEX index_sent_notifications_on_reply_key ON public.sent_notifications USING btree (reply_key); + +CREATE UNIQUE INDEX index_sentry_issues_on_issue_id ON public.sentry_issues USING btree (issue_id); + +CREATE INDEX index_sentry_issues_on_sentry_issue_identifier ON public.sentry_issues USING btree (sentry_issue_identifier); + +CREATE INDEX index_serverless_domain_cluster_on_creator_id ON public.serverless_domain_cluster USING btree (creator_id); + +CREATE INDEX index_serverless_domain_cluster_on_pages_domain_id ON public.serverless_domain_cluster USING btree (pages_domain_id); + +CREATE INDEX index_services_on_project_id_and_type ON public.services USING btree (project_id, type); + +CREATE INDEX index_services_on_template ON public.services USING btree (template); + +CREATE INDEX index_services_on_type ON public.services USING btree (type); + +CREATE INDEX index_services_on_type_and_id_and_template_when_active ON public.services USING btree (type, id, template) WHERE (active = true); + +CREATE UNIQUE INDEX index_services_on_type_and_instance ON public.services USING btree (type, instance) WHERE (instance IS TRUE); + +CREATE UNIQUE INDEX index_services_on_type_and_template ON public.services USING btree (type, template) WHERE (template IS TRUE); + +CREATE UNIQUE INDEX index_shards_on_name ON public.shards USING btree (name); + +CREATE INDEX index_slack_integrations_on_service_id ON public.slack_integrations USING btree (service_id); + +CREATE UNIQUE INDEX index_slack_integrations_on_team_id_and_alias ON public.slack_integrations USING btree (team_id, alias); + +CREATE UNIQUE INDEX index_smartcard_identities_on_subject_and_issuer ON public.smartcard_identities USING btree (subject, issuer); + +CREATE INDEX index_smartcard_identities_on_user_id ON public.smartcard_identities USING btree (user_id); + +CREATE UNIQUE INDEX index_snippet_repositories_on_disk_path ON public.snippet_repositories USING btree (disk_path); + +CREATE INDEX index_snippet_repositories_on_shard_id ON public.snippet_repositories USING btree (shard_id); + +CREATE UNIQUE INDEX index_snippet_user_mentions_on_note_id ON public.snippet_user_mentions USING btree (note_id) WHERE (note_id IS NOT NULL); + +CREATE INDEX index_snippets_on_author_id ON public.snippets USING btree (author_id); + +CREATE INDEX index_snippets_on_content_trigram ON public.snippets USING gin (content public.gin_trgm_ops); + +CREATE INDEX index_snippets_on_created_at ON public.snippets USING btree (created_at); + +CREATE INDEX index_snippets_on_description_trigram ON public.snippets USING gin (description public.gin_trgm_ops); + +CREATE INDEX index_snippets_on_file_name_trigram ON public.snippets USING gin (file_name public.gin_trgm_ops); + +CREATE INDEX index_snippets_on_project_id_and_visibility_level ON public.snippets USING btree (project_id, visibility_level); + +CREATE INDEX index_snippets_on_title_trigram ON public.snippets USING gin (title public.gin_trgm_ops); + +CREATE INDEX index_snippets_on_updated_at ON public.snippets USING btree (updated_at); + +CREATE INDEX index_snippets_on_visibility_level_and_secret ON public.snippets USING btree (visibility_level, secret); + +CREATE INDEX index_software_license_policies_on_software_license_id ON public.software_license_policies USING btree (software_license_id); + +CREATE UNIQUE INDEX index_software_license_policies_unique_per_project ON public.software_license_policies USING btree (project_id, software_license_id); + +CREATE INDEX index_software_licenses_on_spdx_identifier ON public.software_licenses USING btree (spdx_identifier); + +CREATE UNIQUE INDEX index_software_licenses_on_unique_name ON public.software_licenses USING btree (name); + +CREATE INDEX index_status_page_settings_on_project_id ON public.status_page_settings USING btree (project_id); + +CREATE INDEX index_subscriptions_on_project_id ON public.subscriptions USING btree (project_id); + +CREATE UNIQUE INDEX index_subscriptions_on_subscribable_and_user_id_and_project_id ON public.subscriptions USING btree (subscribable_id, subscribable_type, user_id, project_id); + +CREATE UNIQUE INDEX index_suggestions_on_note_id_and_relative_order ON public.suggestions USING btree (note_id, relative_order); + +CREATE UNIQUE INDEX index_system_note_metadata_on_description_version_id ON public.system_note_metadata USING btree (description_version_id) WHERE (description_version_id IS NOT NULL); + +CREATE UNIQUE INDEX index_system_note_metadata_on_note_id ON public.system_note_metadata USING btree (note_id); + +CREATE INDEX index_taggings_on_tag_id ON public.taggings USING btree (tag_id); + +CREATE INDEX index_taggings_on_taggable_id_and_taggable_type ON public.taggings USING btree (taggable_id, taggable_type); + +CREATE INDEX index_taggings_on_taggable_id_and_taggable_type_and_context ON public.taggings USING btree (taggable_id, taggable_type, context); + +CREATE UNIQUE INDEX index_tags_on_name ON public.tags USING btree (name); + +CREATE INDEX index_tags_on_name_trigram ON public.tags USING gin (name public.gin_trgm_ops); + +CREATE INDEX index_term_agreements_on_term_id ON public.term_agreements USING btree (term_id); + +CREATE INDEX index_term_agreements_on_user_id ON public.term_agreements USING btree (user_id); + +CREATE INDEX index_timelogs_on_issue_id ON public.timelogs USING btree (issue_id); + +CREATE INDEX index_timelogs_on_merge_request_id ON public.timelogs USING btree (merge_request_id); + +CREATE INDEX index_timelogs_on_spent_at ON public.timelogs USING btree (spent_at) WHERE (spent_at IS NOT NULL); + +CREATE INDEX index_timelogs_on_user_id ON public.timelogs USING btree (user_id); + +CREATE INDEX index_todos_on_author_id ON public.todos USING btree (author_id); + +CREATE INDEX index_todos_on_author_id_and_created_at ON public.todos USING btree (author_id, created_at); + +CREATE INDEX index_todos_on_commit_id ON public.todos USING btree (commit_id); + +CREATE INDEX index_todos_on_group_id ON public.todos USING btree (group_id); + +CREATE INDEX index_todos_on_note_id ON public.todos USING btree (note_id); + +CREATE INDEX index_todos_on_project_id ON public.todos USING btree (project_id); + +CREATE INDEX index_todos_on_target_type_and_target_id ON public.todos USING btree (target_type, target_id); + +CREATE INDEX index_todos_on_user_id ON public.todos USING btree (user_id); + +CREATE INDEX index_todos_on_user_id_and_id_done ON public.todos USING btree (user_id, id) WHERE ((state)::text = 'done'::text); + +CREATE INDEX index_todos_on_user_id_and_id_pending ON public.todos USING btree (user_id, id) WHERE ((state)::text = 'pending'::text); + +CREATE UNIQUE INDEX index_trending_projects_on_project_id ON public.trending_projects USING btree (project_id); + +CREATE INDEX index_u2f_registrations_on_key_handle ON public.u2f_registrations USING btree (key_handle); + +CREATE INDEX index_u2f_registrations_on_user_id ON public.u2f_registrations USING btree (user_id); + +CREATE INDEX index_uploads_on_checksum ON public.uploads USING btree (checksum); + +CREATE INDEX index_uploads_on_model_id_and_model_type ON public.uploads USING btree (model_id, model_type); + +CREATE INDEX index_uploads_on_store ON public.uploads USING btree (store); + +CREATE INDEX index_uploads_on_uploader_and_path ON public.uploads USING btree (uploader, path); + +CREATE INDEX index_user_agent_details_on_subject_id_and_subject_type ON public.user_agent_details USING btree (subject_id, subject_type); + +CREATE INDEX index_user_callouts_on_user_id ON public.user_callouts USING btree (user_id); + +CREATE UNIQUE INDEX index_user_callouts_on_user_id_and_feature_name ON public.user_callouts USING btree (user_id, feature_name); + +CREATE INDEX index_user_custom_attributes_on_key_and_value ON public.user_custom_attributes USING btree (key, value); + +CREATE UNIQUE INDEX index_user_custom_attributes_on_user_id_and_key ON public.user_custom_attributes USING btree (user_id, key); + +CREATE UNIQUE INDEX index_user_details_on_user_id ON public.user_details USING btree (user_id); + +CREATE INDEX index_user_highest_roles_on_user_id_and_highest_access_level ON public.user_highest_roles USING btree (user_id, highest_access_level); + +CREATE UNIQUE INDEX index_user_interacted_projects_on_project_id_and_user_id ON public.user_interacted_projects USING btree (project_id, user_id); + +CREATE INDEX index_user_interacted_projects_on_user_id ON public.user_interacted_projects USING btree (user_id); + +CREATE UNIQUE INDEX index_user_preferences_on_user_id ON public.user_preferences USING btree (user_id); + +CREATE INDEX index_user_statuses_on_user_id ON public.user_statuses USING btree (user_id); + +CREATE UNIQUE INDEX index_user_synced_attributes_metadata_on_user_id ON public.user_synced_attributes_metadata USING btree (user_id); + +CREATE INDEX index_users_on_accepted_term_id ON public.users USING btree (accepted_term_id); + +CREATE INDEX index_users_on_admin ON public.users USING btree (admin); + +CREATE INDEX index_users_on_bot_type ON public.users USING btree (bot_type); + +CREATE UNIQUE INDEX index_users_on_confirmation_token ON public.users USING btree (confirmation_token); + +CREATE INDEX index_users_on_created_at ON public.users USING btree (created_at); + +CREATE UNIQUE INDEX index_users_on_email ON public.users USING btree (email); + +CREATE INDEX index_users_on_email_trigram ON public.users USING gin (email public.gin_trgm_ops); + +CREATE INDEX index_users_on_feed_token ON public.users USING btree (feed_token); + +CREATE INDEX index_users_on_ghost ON public.users USING btree (ghost); + +CREATE INDEX index_users_on_group_view ON public.users USING btree (group_view); + +CREATE INDEX index_users_on_incoming_email_token ON public.users USING btree (incoming_email_token); + +CREATE INDEX index_users_on_managing_group_id ON public.users USING btree (managing_group_id); + +CREATE INDEX index_users_on_name ON public.users USING btree (name); + +CREATE INDEX index_users_on_name_trigram ON public.users USING gin (name public.gin_trgm_ops); + +CREATE INDEX index_users_on_public_email ON public.users USING btree (public_email) WHERE ((public_email)::text <> ''::text); + +CREATE UNIQUE INDEX index_users_on_reset_password_token ON public.users USING btree (reset_password_token); + +CREATE INDEX index_users_on_state ON public.users USING btree (state); + +CREATE INDEX index_users_on_state_and_user_type_internal ON public.users USING btree (state, user_type) WHERE (ghost IS NOT TRUE); + +CREATE UNIQUE INDEX index_users_on_static_object_token ON public.users USING btree (static_object_token); + +CREATE INDEX index_users_on_unconfirmed_email ON public.users USING btree (unconfirmed_email) WHERE (unconfirmed_email IS NOT NULL); + +CREATE UNIQUE INDEX index_users_on_unlock_token ON public.users USING btree (unlock_token); + +CREATE INDEX index_users_on_user_type ON public.users USING btree (user_type); + +CREATE INDEX index_users_on_username ON public.users USING btree (username); + +CREATE INDEX index_users_on_username_trigram ON public.users USING gin (username public.gin_trgm_ops); + +CREATE INDEX index_users_ops_dashboard_projects_on_project_id ON public.users_ops_dashboard_projects USING btree (project_id); + +CREATE UNIQUE INDEX index_users_ops_dashboard_projects_on_user_id_and_project_id ON public.users_ops_dashboard_projects USING btree (user_id, project_id); + +CREATE INDEX index_users_security_dashboard_projects_on_user_id ON public.users_security_dashboard_projects USING btree (user_id); + +CREATE INDEX index_users_star_projects_on_project_id ON public.users_star_projects USING btree (project_id); + +CREATE UNIQUE INDEX index_users_star_projects_on_user_id_and_project_id ON public.users_star_projects USING btree (user_id, project_id); + +CREATE INDEX index_vulnerabilities_on_author_id ON public.vulnerabilities USING btree (author_id); + +CREATE INDEX index_vulnerabilities_on_confirmed_by_id ON public.vulnerabilities USING btree (confirmed_by_id); + +CREATE INDEX index_vulnerabilities_on_dismissed_by_id ON public.vulnerabilities USING btree (dismissed_by_id); + +CREATE INDEX index_vulnerabilities_on_due_date_sourcing_milestone_id ON public.vulnerabilities USING btree (due_date_sourcing_milestone_id); + +CREATE INDEX index_vulnerabilities_on_epic_id ON public.vulnerabilities USING btree (epic_id); + +CREATE INDEX index_vulnerabilities_on_last_edited_by_id ON public.vulnerabilities USING btree (last_edited_by_id); + +CREATE INDEX index_vulnerabilities_on_milestone_id ON public.vulnerabilities USING btree (milestone_id); + +CREATE INDEX index_vulnerabilities_on_project_id ON public.vulnerabilities USING btree (project_id); + +CREATE INDEX index_vulnerabilities_on_resolved_by_id ON public.vulnerabilities USING btree (resolved_by_id); + +CREATE INDEX index_vulnerabilities_on_start_date_sourcing_milestone_id ON public.vulnerabilities USING btree (start_date_sourcing_milestone_id); + +CREATE INDEX index_vulnerabilities_on_updated_by_id ON public.vulnerabilities USING btree (updated_by_id); + +CREATE INDEX index_vulnerability_exports_on_author_id ON public.vulnerability_exports USING btree (author_id); + +CREATE UNIQUE INDEX index_vulnerability_exports_on_project_id_and_id ON public.vulnerability_exports USING btree (project_id, id); + +CREATE INDEX index_vulnerability_feedback_on_author_id ON public.vulnerability_feedback USING btree (author_id); + +CREATE INDEX index_vulnerability_feedback_on_comment_author_id ON public.vulnerability_feedback USING btree (comment_author_id); + +CREATE INDEX index_vulnerability_feedback_on_issue_id ON public.vulnerability_feedback USING btree (issue_id); + +CREATE INDEX index_vulnerability_feedback_on_merge_request_id ON public.vulnerability_feedback USING btree (merge_request_id); + +CREATE INDEX index_vulnerability_feedback_on_pipeline_id ON public.vulnerability_feedback USING btree (pipeline_id); + +CREATE UNIQUE INDEX index_vulnerability_identifiers_on_project_id_and_fingerprint ON public.vulnerability_identifiers USING btree (project_id, fingerprint); + +CREATE INDEX index_vulnerability_issue_links_on_issue_id ON public.vulnerability_issue_links USING btree (issue_id); + +CREATE INDEX index_vulnerability_occurrence_identifiers_on_identifier_id ON public.vulnerability_occurrence_identifiers USING btree (identifier_id); + +CREATE UNIQUE INDEX index_vulnerability_occurrence_identifiers_on_unique_keys ON public.vulnerability_occurrence_identifiers USING btree (occurrence_id, identifier_id); + +CREATE INDEX index_vulnerability_occurrence_pipelines_on_pipeline_id ON public.vulnerability_occurrence_pipelines USING btree (pipeline_id); + +CREATE INDEX index_vulnerability_occurrences_on_primary_identifier_id ON public.vulnerability_occurrences USING btree (primary_identifier_id); + +CREATE INDEX index_vulnerability_occurrences_on_scanner_id ON public.vulnerability_occurrences USING btree (scanner_id); + +CREATE UNIQUE INDEX index_vulnerability_occurrences_on_unique_keys ON public.vulnerability_occurrences USING btree (project_id, primary_identifier_id, location_fingerprint, scanner_id); + +CREATE UNIQUE INDEX index_vulnerability_occurrences_on_uuid ON public.vulnerability_occurrences USING btree (uuid); + +CREATE INDEX index_vulnerability_occurrences_on_vulnerability_id ON public.vulnerability_occurrences USING btree (vulnerability_id); + +CREATE UNIQUE INDEX index_vulnerability_scanners_on_project_id_and_external_id ON public.vulnerability_scanners USING btree (project_id, external_id); + +CREATE INDEX index_web_hook_logs_on_created_at_and_web_hook_id ON public.web_hook_logs USING btree (created_at, web_hook_id); + +CREATE INDEX index_web_hook_logs_on_web_hook_id ON public.web_hook_logs USING btree (web_hook_id); + +CREATE INDEX index_web_hooks_on_group_id ON public.web_hooks USING btree (group_id) WHERE ((type)::text = 'GroupHook'::text); + +CREATE INDEX index_web_hooks_on_project_id ON public.web_hooks USING btree (project_id); + +CREATE INDEX index_web_hooks_on_type ON public.web_hooks USING btree (type); + +CREATE INDEX index_wiki_page_meta_on_project_id ON public.wiki_page_meta USING btree (project_id); + +CREATE UNIQUE INDEX index_wiki_page_slugs_on_slug_and_wiki_page_meta_id ON public.wiki_page_slugs USING btree (slug, wiki_page_meta_id); + +CREATE INDEX index_wiki_page_slugs_on_wiki_page_meta_id ON public.wiki_page_slugs USING btree (wiki_page_meta_id); + +CREATE INDEX index_x509_certificates_on_subject_key_identifier ON public.x509_certificates USING btree (subject_key_identifier); + +CREATE INDEX index_x509_certificates_on_x509_issuer_id ON public.x509_certificates USING btree (x509_issuer_id); + +CREATE INDEX index_x509_commit_signatures_on_commit_sha ON public.x509_commit_signatures USING btree (commit_sha); + +CREATE INDEX index_x509_commit_signatures_on_project_id ON public.x509_commit_signatures USING btree (project_id); + +CREATE INDEX index_x509_commit_signatures_on_x509_certificate_id ON public.x509_commit_signatures USING btree (x509_certificate_id); + +CREATE INDEX index_x509_issuers_on_subject_key_identifier ON public.x509_issuers USING btree (subject_key_identifier); + +CREATE INDEX index_zoom_meetings_on_issue_id ON public.zoom_meetings USING btree (issue_id); + +CREATE UNIQUE INDEX index_zoom_meetings_on_issue_id_and_issue_status ON public.zoom_meetings USING btree (issue_id, issue_status) WHERE (issue_status = 1); + +CREATE INDEX index_zoom_meetings_on_issue_status ON public.zoom_meetings USING btree (issue_status); + +CREATE INDEX index_zoom_meetings_on_project_id ON public.zoom_meetings USING btree (project_id); + +CREATE INDEX issue_id_issues_prometheus_alert_events_index ON public.issues_prometheus_alert_events USING btree (prometheus_alert_event_id); + +CREATE INDEX issue_id_issues_self_managed_rometheus_alert_events_index ON public.issues_self_managed_prometheus_alert_events USING btree (self_managed_prometheus_alert_event_id); + +CREATE UNIQUE INDEX issue_id_prometheus_alert_event_id_index ON public.issues_prometheus_alert_events USING btree (issue_id, prometheus_alert_event_id); + +CREATE UNIQUE INDEX issue_id_self_managed_prometheus_alert_event_id_index ON public.issues_self_managed_prometheus_alert_events USING btree (issue_id, self_managed_prometheus_alert_event_id); + +CREATE UNIQUE INDEX issue_user_mentions_on_issue_id_and_note_id_index ON public.issue_user_mentions USING btree (issue_id, note_id); + +CREATE UNIQUE INDEX issue_user_mentions_on_issue_id_index ON public.issue_user_mentions USING btree (issue_id) WHERE (note_id IS NULL); + +CREATE INDEX job_artifacts_secure_reports_temp_index ON public.ci_job_artifacts USING btree (id, file_type, job_id, created_at, updated_at) WHERE ((file_type >= 5) AND (file_type <= 8)); + +CREATE UNIQUE INDEX kubernetes_namespaces_cluster_and_namespace ON public.clusters_kubernetes_namespaces USING btree (cluster_id, namespace); + +CREATE INDEX merge_request_mentions_temp_index ON public.merge_requests USING btree (id) WHERE ((description ~~ '%@%'::text) OR ((title)::text ~~ '%@%'::text)); + +CREATE UNIQUE INDEX merge_request_user_mentions_on_mr_id_and_note_id_index ON public.merge_request_user_mentions USING btree (merge_request_id, note_id); + +CREATE UNIQUE INDEX merge_request_user_mentions_on_mr_id_index ON public.merge_request_user_mentions USING btree (merge_request_id) WHERE (note_id IS NULL); + +CREATE INDEX note_mentions_temp_index ON public.notes USING btree (id, noteable_type) WHERE (note ~~ '%@%'::text); + +CREATE UNIQUE INDEX one_canonical_wiki_page_slug_per_metadata ON public.wiki_page_slugs USING btree (wiki_page_meta_id) WHERE (canonical = true); + +CREATE INDEX partial_index_ci_builds_on_scheduled_at_with_scheduled_jobs ON public.ci_builds USING btree (scheduled_at) WHERE ((scheduled_at IS NOT NULL) AND ((type)::text = 'Ci::Build'::text) AND ((status)::text = 'scheduled'::text)); + +CREATE INDEX partial_index_deployments_for_legacy_successful_deployments ON public.deployments USING btree (id) WHERE ((finished_at IS NULL) AND (status = 2)); + +CREATE INDEX partial_index_deployments_for_project_id_and_tag ON public.deployments USING btree (project_id) WHERE (tag IS TRUE); + +CREATE UNIQUE INDEX snippet_user_mentions_on_snippet_id_and_note_id_index ON public.snippet_user_mentions USING btree (snippet_id, note_id); + +CREATE UNIQUE INDEX snippet_user_mentions_on_snippet_id_index ON public.snippet_user_mentions USING btree (snippet_id) WHERE (note_id IS NULL); + +CREATE UNIQUE INDEX taggings_idx ON public.taggings USING btree (tag_id, taggable_id, taggable_type, context, tagger_id, tagger_type); + +CREATE UNIQUE INDEX term_agreements_unique_index ON public.term_agreements USING btree (user_id, term_id); + +CREATE INDEX tmp_build_stage_position_index ON public.ci_builds USING btree (stage_id, stage_idx) WHERE (stage_idx IS NOT NULL); + +CREATE INDEX undefined_vulnerabilities ON public.vulnerability_occurrences USING btree (id) WHERE (severity = 0); + +CREATE INDEX undefined_vulnerability ON public.vulnerabilities USING btree (id) WHERE (severity = 0); + +CREATE UNIQUE INDEX users_security_dashboard_projects_unique_index ON public.users_security_dashboard_projects USING btree (project_id, user_id); + +CREATE UNIQUE INDEX vulnerability_feedback_unique_idx ON public.vulnerability_feedback USING btree (project_id, category, feedback_type, project_fingerprint); + +CREATE UNIQUE INDEX vulnerability_occurrence_pipelines_on_unique_keys ON public.vulnerability_occurrence_pipelines USING btree (occurrence_id, pipeline_id); + +ALTER TABLE ONLY public.epics + ADD CONSTRAINT fk_013c9f36ca FOREIGN KEY (due_date_sourcing_epic_id) REFERENCES public.epics(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.clusters_applications_runners + ADD CONSTRAINT fk_02de2ded36 FOREIGN KEY (runner_id) REFERENCES public.ci_runners(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.design_management_designs_versions + ADD CONSTRAINT fk_03c671965c FOREIGN KEY (design_id) REFERENCES public.design_management_designs(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.issues + ADD CONSTRAINT fk_05f1e72feb FOREIGN KEY (author_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.merge_requests + ADD CONSTRAINT fk_06067f5644 FOREIGN KEY (latest_merge_request_diff_id) REFERENCES public.merge_request_diffs(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.user_interacted_projects + ADD CONSTRAINT fk_0894651f08 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.web_hooks + ADD CONSTRAINT fk_0c8ca6d9d1 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.notification_settings + ADD CONSTRAINT fk_0c95e91db7 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.lists + ADD CONSTRAINT fk_0d3f677137 FOREIGN KEY (board_id) REFERENCES public.boards(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.group_deletion_schedules + ADD CONSTRAINT fk_11e3ebfcdd FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerabilities + ADD CONSTRAINT fk_1302949740 FOREIGN KEY (last_edited_by_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.vulnerabilities + ADD CONSTRAINT fk_131d289c65 FOREIGN KEY (milestone_id) REFERENCES public.milestones(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.internal_ids + ADD CONSTRAINT fk_162941d509 FOREIGN KEY (namespace_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.geo_event_log + ADD CONSTRAINT fk_176d3fbb5d FOREIGN KEY (job_artifact_deleted_event_id) REFERENCES public.geo_job_artifact_deleted_events(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_features + ADD CONSTRAINT fk_18513d9b92 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_pipelines + ADD CONSTRAINT fk_190998ef09 FOREIGN KEY (external_pull_request_id) REFERENCES public.external_pull_requests(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.vulnerabilities + ADD CONSTRAINT fk_1d37cddf91 FOREIGN KEY (epic_id) REFERENCES public.epics(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.ci_sources_pipelines + ADD CONSTRAINT fk_1e53c97c0a FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.boards + ADD CONSTRAINT fk_1e9a074a35 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.epics + ADD CONSTRAINT fk_1fbed67632 FOREIGN KEY (start_date_sourcing_milestone_id) REFERENCES public.milestones(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.geo_container_repository_updated_events + ADD CONSTRAINT fk_212c89c706 FOREIGN KEY (container_repository_id) REFERENCES public.container_repositories(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.users_star_projects + ADD CONSTRAINT fk_22cd27ddfc FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_stages + ADD CONSTRAINT fk_2360681d1d FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.import_failures + ADD CONSTRAINT fk_24b824da43 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_ci_cd_settings + ADD CONSTRAINT fk_24c15d2f2e FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.epics + ADD CONSTRAINT fk_25b99c1be3 FOREIGN KEY (parent_id) REFERENCES public.epics(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.projects + ADD CONSTRAINT fk_25d8780d11 FOREIGN KEY (marked_for_deletion_by_user_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.ci_pipelines + ADD CONSTRAINT fk_262d4c2d19 FOREIGN KEY (auto_canceled_by_id) REFERENCES public.ci_pipelines(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.ci_build_trace_sections + ADD CONSTRAINT fk_264e112c66 FOREIGN KEY (section_name_id) REFERENCES public.ci_build_trace_section_names(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.geo_event_log + ADD CONSTRAINT fk_27548c6db3 FOREIGN KEY (hashed_storage_migrated_event_id) REFERENCES public.geo_hashed_storage_migrated_events(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.deployments + ADD CONSTRAINT fk_289bba3222 FOREIGN KEY (cluster_id) REFERENCES public.clusters(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.notes + ADD CONSTRAINT fk_2e82291620 FOREIGN KEY (review_id) REFERENCES public.reviews(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.members + ADD CONSTRAINT fk_2e88fb7ce9 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.approvals + ADD CONSTRAINT fk_310d714958 FOREIGN KEY (merge_request_id) REFERENCES public.merge_requests(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.namespaces + ADD CONSTRAINT fk_319256d87a FOREIGN KEY (file_template_project_id) REFERENCES public.projects(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.merge_requests + ADD CONSTRAINT fk_3308fe130c FOREIGN KEY (source_project_id) REFERENCES public.projects(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.ci_group_variables + ADD CONSTRAINT fk_33ae4d58d8 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.epics + ADD CONSTRAINT fk_3654b61b03 FOREIGN KEY (author_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.push_event_payloads + ADD CONSTRAINT fk_36c74129da FOREIGN KEY (event_id) REFERENCES public.events(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_builds + ADD CONSTRAINT fk_3a9eaa254d FOREIGN KEY (stage_id) REFERENCES public.ci_stages(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.epics + ADD CONSTRAINT fk_3c1fd1cccc FOREIGN KEY (due_date_sourcing_milestone_id) REFERENCES public.milestones(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.ci_pipelines + ADD CONSTRAINT fk_3d34ab2e06 FOREIGN KEY (pipeline_schedule_id) REFERENCES public.ci_pipeline_schedules(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.ci_pipeline_schedule_variables + ADD CONSTRAINT fk_41c35fda51 FOREIGN KEY (pipeline_schedule_id) REFERENCES public.ci_pipeline_schedules(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.geo_event_log + ADD CONSTRAINT fk_42c3b54bed FOREIGN KEY (cache_invalidation_event_id) REFERENCES public.geo_cache_invalidation_events(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.remote_mirrors + ADD CONSTRAINT fk_43a9aa4ca8 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_runner_projects + ADD CONSTRAINT fk_4478a6f1e4 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.todos + ADD CONSTRAINT fk_45054f9c45 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.releases + ADD CONSTRAINT fk_47fe2a0596 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.geo_event_log + ADD CONSTRAINT fk_4a99ebfd60 FOREIGN KEY (repositories_changed_event_id) REFERENCES public.geo_repositories_changed_events(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_build_trace_sections + ADD CONSTRAINT fk_4ebe41f502 FOREIGN KEY (build_id) REFERENCES public.ci_builds(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.path_locks + ADD CONSTRAINT fk_5265c98f24 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.clusters_applications_prometheus + ADD CONSTRAINT fk_557e773639 FOREIGN KEY (cluster_id) REFERENCES public.clusters(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerability_feedback + ADD CONSTRAINT fk_563ff1912e FOREIGN KEY (merge_request_id) REFERENCES public.merge_requests(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.deploy_keys_projects + ADD CONSTRAINT fk_58a901ca7e FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.issue_assignees + ADD CONSTRAINT fk_5e0c8d9154 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_requests + ADD CONSTRAINT fk_6149611a04 FOREIGN KEY (assignee_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.events + ADD CONSTRAINT fk_61fbf6ca48 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_requests + ADD CONSTRAINT fk_641731faff FOREIGN KEY (updated_by_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.ci_builds + ADD CONSTRAINT fk_6661f4f0e8 FOREIGN KEY (resource_group_id) REFERENCES public.ci_resource_groups(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.merge_requests + ADD CONSTRAINT fk_6a5165a692 FOREIGN KEY (milestone_id) REFERENCES public.milestones(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.geo_event_log + ADD CONSTRAINT fk_6ada82d42a FOREIGN KEY (container_repository_updated_event_id) REFERENCES public.geo_container_repository_updated_events(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.projects + ADD CONSTRAINT fk_6e5c14658a FOREIGN KEY (pool_repository_id) REFERENCES public.pool_repositories(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.protected_branch_push_access_levels + ADD CONSTRAINT fk_7111b68cdb FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.services + ADD CONSTRAINT fk_71cce407f9 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.user_interacted_projects + ADD CONSTRAINT fk_722ceba4f7 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerabilities + ADD CONSTRAINT fk_725465b774 FOREIGN KEY (dismissed_by_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.index_statuses + ADD CONSTRAINT fk_74b2492545 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerabilities + ADD CONSTRAINT fk_76bc5f5455 FOREIGN KEY (resolved_by_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.oauth_openid_requests + ADD CONSTRAINT fk_77114b3b09 FOREIGN KEY (access_grant_id) REFERENCES public.oauth_access_grants(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_resource_groups + ADD CONSTRAINT fk_774722d144 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.users + ADD CONSTRAINT fk_789cd90b35 FOREIGN KEY (accepted_term_id) REFERENCES public.application_setting_terms(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.geo_event_log + ADD CONSTRAINT fk_78a6492f68 FOREIGN KEY (repository_updated_event_id) REFERENCES public.geo_repository_updated_events(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.lists + ADD CONSTRAINT fk_7a5553d60f FOREIGN KEY (label_id) REFERENCES public.labels(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.protected_branches + ADD CONSTRAINT fk_7a9c6d93e7 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerabilities + ADD CONSTRAINT fk_7ac31eacb9 FOREIGN KEY (updated_by_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.vulnerabilities + ADD CONSTRAINT fk_7c5bb22a22 FOREIGN KEY (due_date_sourcing_milestone_id) REFERENCES public.milestones(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.labels + ADD CONSTRAINT fk_7de4989a69 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_request_metrics + ADD CONSTRAINT fk_7f28d925f3 FOREIGN KEY (merged_by_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.import_export_uploads + ADD CONSTRAINT fk_83319d9721 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.push_rules + ADD CONSTRAINT fk_83b29894de FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_request_diffs + ADD CONSTRAINT fk_8483f3258f FOREIGN KEY (merge_request_id) REFERENCES public.merge_requests(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_pipelines + ADD CONSTRAINT fk_86635dbd80 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.geo_event_log + ADD CONSTRAINT fk_86c84214ec FOREIGN KEY (repository_renamed_event_id) REFERENCES public.geo_repository_renamed_events(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.packages_package_files + ADD CONSTRAINT fk_86f0f182f8 FOREIGN KEY (package_id) REFERENCES public.packages_packages(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_builds + ADD CONSTRAINT fk_87f4cefcda FOREIGN KEY (upstream_pipeline_id) REFERENCES public.ci_pipelines(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerabilities + ADD CONSTRAINT fk_88b4d546ef FOREIGN KEY (start_date_sourcing_milestone_id) REFERENCES public.milestones(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.issues + ADD CONSTRAINT fk_899c8f3231 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.protected_branch_merge_access_levels + ADD CONSTRAINT fk_8a3072ccb3 FOREIGN KEY (protected_branch_id) REFERENCES public.protected_branches(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.releases + ADD CONSTRAINT fk_8e4456f90f FOREIGN KEY (author_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.protected_tags + ADD CONSTRAINT fk_8e4af87648 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_pipeline_schedules + ADD CONSTRAINT fk_8ead60fcc4 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.todos + ADD CONSTRAINT fk_91d1f47b13 FOREIGN KEY (note_id) REFERENCES public.notes(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerability_feedback + ADD CONSTRAINT fk_94f7c8a81e FOREIGN KEY (comment_author_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.milestones + ADD CONSTRAINT fk_95650a40d4 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerabilities + ADD CONSTRAINT fk_959d40ad0a FOREIGN KEY (confirmed_by_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.application_settings + ADD CONSTRAINT fk_964370041d FOREIGN KEY (usage_stats_set_by_user_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.issues + ADD CONSTRAINT fk_96b1dd429c FOREIGN KEY (milestone_id) REFERENCES public.milestones(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.vulnerability_occurrences + ADD CONSTRAINT fk_97ffe77653 FOREIGN KEY (vulnerability_id) REFERENCES public.vulnerabilities(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.protected_branch_merge_access_levels + ADD CONSTRAINT fk_98f3d044fe FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.notes + ADD CONSTRAINT fk_99e097b079 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.geo_event_log + ADD CONSTRAINT fk_9b9afb1916 FOREIGN KEY (repository_created_event_id) REFERENCES public.geo_repository_created_events(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.milestones + ADD CONSTRAINT fk_9bd0a0c791 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.issues + ADD CONSTRAINT fk_9c4516d665 FOREIGN KEY (duplicated_to_id) REFERENCES public.issues(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.epics + ADD CONSTRAINT fk_9d480c64b2 FOREIGN KEY (start_date_sourcing_epic_id) REFERENCES public.epics(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.ci_pipeline_schedules + ADD CONSTRAINT fk_9ea99f58d2 FOREIGN KEY (owner_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.protected_branch_push_access_levels + ADD CONSTRAINT fk_9ffc86a3d9 FOREIGN KEY (protected_branch_id) REFERENCES public.protected_branches(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.deployment_merge_requests + ADD CONSTRAINT fk_a064ff4453 FOREIGN KEY (environment_id) REFERENCES public.environments(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.issues + ADD CONSTRAINT fk_a194299be1 FOREIGN KEY (moved_to_id) REFERENCES public.issues(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.ci_builds + ADD CONSTRAINT fk_a2141b1522 FOREIGN KEY (auto_canceled_by_id) REFERENCES public.ci_pipelines(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.ci_pipelines + ADD CONSTRAINT fk_a23be95014 FOREIGN KEY (merge_request_id) REFERENCES public.merge_requests(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.users + ADD CONSTRAINT fk_a4b8fefe3e FOREIGN KEY (managing_group_id) REFERENCES public.namespaces(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.merge_requests + ADD CONSTRAINT fk_a6963e8447 FOREIGN KEY (target_project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.epics + ADD CONSTRAINT fk_aa5798e761 FOREIGN KEY (closed_by_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.identities + ADD CONSTRAINT fk_aade90f0fc FOREIGN KEY (saml_provider_id) REFERENCES public.saml_providers(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_sources_pipelines + ADD CONSTRAINT fk_acd9737679 FOREIGN KEY (source_project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_requests + ADD CONSTRAINT fk_ad525e1f87 FOREIGN KEY (merge_user_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.ci_variables + ADD CONSTRAINT fk_ada5eb64b3 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_request_metrics + ADD CONSTRAINT fk_ae440388cc FOREIGN KEY (latest_closed_by_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.fork_network_members + ADD CONSTRAINT fk_b01280dae4 FOREIGN KEY (forked_from_project_id) REFERENCES public.projects(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.vulnerabilities + ADD CONSTRAINT fk_b1de915a15 FOREIGN KEY (author_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.protected_tag_create_access_levels + ADD CONSTRAINT fk_b4eb82fe3c FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.issue_assignees + ADD CONSTRAINT fk_b7d881734a FOREIGN KEY (issue_id) REFERENCES public.issues(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_trigger_requests + ADD CONSTRAINT fk_b8ec8b7245 FOREIGN KEY (trigger_id) REFERENCES public.ci_triggers(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.deployments + ADD CONSTRAINT fk_b9a3851b82 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.gitlab_subscriptions + ADD CONSTRAINT fk_bd0c4019c3 FOREIGN KEY (hosted_plan_id) REFERENCES public.plans(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.snippets + ADD CONSTRAINT fk_be41fd4bb7 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_sources_pipelines + ADD CONSTRAINT fk_be5624bf37 FOREIGN KEY (source_job_id) REFERENCES public.ci_builds(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.packages_maven_metadata + ADD CONSTRAINT fk_be88aed360 FOREIGN KEY (package_id) REFERENCES public.packages_packages(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_builds + ADD CONSTRAINT fk_befce0568a FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.design_management_versions + ADD CONSTRAINT fk_c1440b4896 FOREIGN KEY (author_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.geo_event_log + ADD CONSTRAINT fk_c1f241c70d FOREIGN KEY (upload_deleted_event_id) REFERENCES public.geo_upload_deleted_events(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.geo_event_log + ADD CONSTRAINT fk_c4b1c1f66e FOREIGN KEY (repository_deleted_event_id) REFERENCES public.geo_repository_deleted_events(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.issues + ADD CONSTRAINT fk_c63cbf6c25 FOREIGN KEY (closed_by_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.issue_links + ADD CONSTRAINT fk_c900194ff2 FOREIGN KEY (source_id) REFERENCES public.issues(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.todos + ADD CONSTRAINT fk_ccf0373936 FOREIGN KEY (author_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.geo_event_log + ADD CONSTRAINT fk_cff7185ad2 FOREIGN KEY (reset_checksum_event_id) REFERENCES public.geo_reset_checksum_events(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_mirror_data + ADD CONSTRAINT fk_d1aad367d7 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.environments + ADD CONSTRAINT fk_d1c8c1da6a FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_builds + ADD CONSTRAINT fk_d3130c9a7f FOREIGN KEY (commit_id) REFERENCES public.ci_pipelines(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_sources_pipelines + ADD CONSTRAINT fk_d4e29af7d7 FOREIGN KEY (source_pipeline_id) REFERENCES public.ci_pipelines(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.geo_event_log + ADD CONSTRAINT fk_d5af95fcd9 FOREIGN KEY (lfs_object_deleted_event_id) REFERENCES public.geo_lfs_object_deleted_events(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.lists + ADD CONSTRAINT fk_d6cf4279f7 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.system_note_metadata + ADD CONSTRAINT fk_d83a918cb1 FOREIGN KEY (note_id) REFERENCES public.notes(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.todos + ADD CONSTRAINT fk_d94154aa95 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.label_links + ADD CONSTRAINT fk_d97dd08678 FOREIGN KEY (label_id) REFERENCES public.labels(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_group_links + ADD CONSTRAINT fk_daa8cee94c FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.epics + ADD CONSTRAINT fk_dccd3f98fc FOREIGN KEY (assignee_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.issues + ADD CONSTRAINT fk_df75a7c8b8 FOREIGN KEY (promoted_to_epic_id) REFERENCES public.epics(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.ci_resources + ADD CONSTRAINT fk_e169a8e3d5 FOREIGN KEY (build_id) REFERENCES public.ci_builds(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.ci_sources_pipelines + ADD CONSTRAINT fk_e1bad85861 FOREIGN KEY (pipeline_id) REFERENCES public.ci_pipelines(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.gitlab_subscriptions + ADD CONSTRAINT fk_e2595d00a1 FOREIGN KEY (namespace_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_triggers + ADD CONSTRAINT fk_e3e63f966e FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_requests + ADD CONSTRAINT fk_e719a85f8a FOREIGN KEY (author_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.issue_links + ADD CONSTRAINT fk_e71bb44f1f FOREIGN KEY (target_id) REFERENCES public.issues(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.namespaces + ADD CONSTRAINT fk_e7a0b20a6b FOREIGN KEY (custom_project_templates_group_id) REFERENCES public.namespaces(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.fork_networks + ADD CONSTRAINT fk_e7b436b2b5 FOREIGN KEY (root_project_id) REFERENCES public.projects(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.application_settings + ADD CONSTRAINT fk_e8a145f3a7 FOREIGN KEY (instance_administrators_group_id) REFERENCES public.namespaces(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.ci_triggers + ADD CONSTRAINT fk_e8e10d1964 FOREIGN KEY (owner_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.pages_domains + ADD CONSTRAINT fk_ea2f6dfc6f FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.application_settings + ADD CONSTRAINT fk_ec757bd087 FOREIGN KEY (file_template_project_id) REFERENCES public.projects(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.events + ADD CONSTRAINT fk_edfd187b6f FOREIGN KEY (author_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerabilities + ADD CONSTRAINT fk_efb96ab1e2 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.clusters + ADD CONSTRAINT fk_f05c5e5a42 FOREIGN KEY (management_project_id) REFERENCES public.projects(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.epics + ADD CONSTRAINT fk_f081aa4489 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.boards + ADD CONSTRAINT fk_f15266b5f9 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_pipeline_variables + ADD CONSTRAINT fk_f29c5f4380 FOREIGN KEY (pipeline_id) REFERENCES public.ci_pipelines(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.design_management_designs_versions + ADD CONSTRAINT fk_f4d25ba00c FOREIGN KEY (version_id) REFERENCES public.design_management_versions(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.protected_tag_create_access_levels + ADD CONSTRAINT fk_f7dfda8c51 FOREIGN KEY (protected_tag_id) REFERENCES public.protected_tags(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_stages + ADD CONSTRAINT fk_fb57e6cc56 FOREIGN KEY (pipeline_id) REFERENCES public.ci_pipelines(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.system_note_metadata + ADD CONSTRAINT fk_fbd87415c9 FOREIGN KEY (description_version_id) REFERENCES public.description_versions(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.merge_requests + ADD CONSTRAINT fk_fd82eae0b9 FOREIGN KEY (head_pipeline_id) REFERENCES public.ci_pipelines(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.namespaces + ADD CONSTRAINT fk_fdd12e5b80 FOREIGN KEY (plan_id) REFERENCES public.plans(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.project_import_data + ADD CONSTRAINT fk_ffb9ee3a10 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.issues + ADD CONSTRAINT fk_ffed080f01 FOREIGN KEY (updated_by_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.geo_event_log + ADD CONSTRAINT fk_geo_event_log_on_geo_event_id FOREIGN KEY (geo_event_id) REFERENCES public.geo_events(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.personal_access_tokens + ADD CONSTRAINT fk_personal_access_tokens_user_id FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.approval_merge_request_rules + ADD CONSTRAINT fk_rails_004ce82224 FOREIGN KEY (merge_request_id) REFERENCES public.merge_requests(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.namespace_statistics + ADD CONSTRAINT fk_rails_0062050394 FOREIGN KEY (namespace_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.clusters_applications_elastic_stacks + ADD CONSTRAINT fk_rails_026f219f46 FOREIGN KEY (cluster_id) REFERENCES public.clusters(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.events + ADD CONSTRAINT fk_rails_0434b48643 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ip_restrictions + ADD CONSTRAINT fk_rails_04a93778d5 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_subscriptions_projects + ADD CONSTRAINT fk_rails_0818751483 FOREIGN KEY (downstream_project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.trending_projects + ADD CONSTRAINT fk_rails_09feecd872 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_deploy_tokens + ADD CONSTRAINT fk_rails_0aca134388 FOREIGN KEY (deploy_token_id) REFERENCES public.deploy_tokens(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.packages_conan_file_metadata + ADD CONSTRAINT fk_rails_0afabd9328 FOREIGN KEY (package_file_id) REFERENCES public.packages_package_files(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.geo_node_statuses + ADD CONSTRAINT fk_rails_0ecc699c2a FOREIGN KEY (geo_node_id) REFERENCES public.geo_nodes(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_repository_states + ADD CONSTRAINT fk_rails_0f2298ca8a FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.user_synced_attributes_metadata + ADD CONSTRAINT fk_rails_0f4aa0981f FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_authorizations + ADD CONSTRAINT fk_rails_0f84bb11f3 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_request_context_commits + ADD CONSTRAINT fk_rails_0fe0039f60 FOREIGN KEY (merge_request_id) REFERENCES public.merge_requests(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_build_trace_chunks + ADD CONSTRAINT fk_rails_1013b761f2 FOREIGN KEY (build_id) REFERENCES public.ci_builds(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerability_exports + ADD CONSTRAINT fk_rails_1019162882 FOREIGN KEY (author_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.prometheus_alert_events + ADD CONSTRAINT fk_rails_106f901176 FOREIGN KEY (prometheus_alert_id) REFERENCES public.prometheus_alerts(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_sources_projects + ADD CONSTRAINT fk_rails_10a1eb379a FOREIGN KEY (pipeline_id) REFERENCES public.ci_pipelines(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.zoom_meetings + ADD CONSTRAINT fk_rails_1190f0e0fa FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.gpg_signatures + ADD CONSTRAINT fk_rails_11ae8cb9a7 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_authorizations + ADD CONSTRAINT fk_rails_11e7aa3ed9 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.description_versions + ADD CONSTRAINT fk_rails_12b144011c FOREIGN KEY (merge_request_id) REFERENCES public.merge_requests(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_statistics + ADD CONSTRAINT fk_rails_12c471002f FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.user_details + ADD CONSTRAINT fk_rails_12e0b3043d FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.users_security_dashboard_projects + ADD CONSTRAINT fk_rails_150cd5682c FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_deploy_tokens + ADD CONSTRAINT fk_rails_170e03cbaf FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.analytics_cycle_analytics_project_stages + ADD CONSTRAINT fk_rails_1722574860 FOREIGN KEY (start_event_label_id) REFERENCES public.labels(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.packages_build_infos + ADD CONSTRAINT fk_rails_17a9a0dffc FOREIGN KEY (pipeline_id) REFERENCES public.ci_pipelines(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.clusters_applications_jupyter + ADD CONSTRAINT fk_rails_17df21c98c FOREIGN KEY (cluster_id) REFERENCES public.clusters(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.cluster_providers_aws + ADD CONSTRAINT fk_rails_18983d9ea4 FOREIGN KEY (cluster_id) REFERENCES public.clusters(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.grafana_integrations + ADD CONSTRAINT fk_rails_18d0e2b564 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.open_project_tracker_data + ADD CONSTRAINT fk_rails_1987546e48 FOREIGN KEY (service_id) REFERENCES public.services(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.gpg_signatures + ADD CONSTRAINT fk_rails_19d4f1c6f9 FOREIGN KEY (gpg_key_subkey_id) REFERENCES public.gpg_key_subkeys(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.board_assignees + ADD CONSTRAINT fk_rails_1c0ff59e82 FOREIGN KEY (assignee_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.epic_user_mentions + ADD CONSTRAINT fk_rails_1c65976a49 FOREIGN KEY (note_id) REFERENCES public.notes(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.approver_groups + ADD CONSTRAINT fk_rails_1cdcbd7723 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_refs + ADD CONSTRAINT fk_rails_1da48d19ce FOREIGN KEY (last_updated_by_pipeline_id) REFERENCES public.ci_pipelines(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.packages_tags + ADD CONSTRAINT fk_rails_1dfc868911 FOREIGN KEY (package_id) REFERENCES public.packages_packages(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.geo_repository_created_events + ADD CONSTRAINT fk_rails_1f49e46a61 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.approval_merge_request_rules_groups + ADD CONSTRAINT fk_rails_2020a7124a FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerability_feedback + ADD CONSTRAINT fk_rails_20976e6fd9 FOREIGN KEY (pipeline_id) REFERENCES public.ci_pipelines(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.user_statuses + ADD CONSTRAINT fk_rails_2178592333 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.users_ops_dashboard_projects + ADD CONSTRAINT fk_rails_220a0562db FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.clusters_applications_runners + ADD CONSTRAINT fk_rails_22388594e9 FOREIGN KEY (cluster_id) REFERENCES public.clusters(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.service_desk_settings + ADD CONSTRAINT fk_rails_223a296a85 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.protected_tag_create_access_levels + ADD CONSTRAINT fk_rails_2349b78b91 FOREIGN KEY (user_id) REFERENCES public.users(id); + +ALTER TABLE ONLY public.group_custom_attributes + ADD CONSTRAINT fk_rails_246e0db83a FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.lfs_file_locks + ADD CONSTRAINT fk_rails_27a1d98fa8 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_alerting_settings + ADD CONSTRAINT fk_rails_27a84b407d FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.reviews + ADD CONSTRAINT fk_rails_29e6f859c4 FOREIGN KEY (author_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.draft_notes + ADD CONSTRAINT fk_rails_2a8dac9901 FOREIGN KEY (author_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.group_group_links + ADD CONSTRAINT fk_rails_2b2353ca49 FOREIGN KEY (shared_with_group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.geo_repository_updated_events + ADD CONSTRAINT fk_rails_2b70854c08 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.protected_branch_unprotect_access_levels + ADD CONSTRAINT fk_rails_2d2aba21ef FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.saml_providers + ADD CONSTRAINT fk_rails_306d459be7 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_request_diff_commits + ADD CONSTRAINT fk_rails_316aaceda3 FOREIGN KEY (merge_request_diff_id) REFERENCES public.merge_request_diffs(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.zoom_meetings + ADD CONSTRAINT fk_rails_3263f29616 FOREIGN KEY (issue_id) REFERENCES public.issues(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.container_repositories + ADD CONSTRAINT fk_rails_32f7bf5aad FOREIGN KEY (project_id) REFERENCES public.projects(id); + +ALTER TABLE ONLY public.clusters_applications_jupyter + ADD CONSTRAINT fk_rails_331f0aff78 FOREIGN KEY (oauth_application_id) REFERENCES public.oauth_applications(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.merge_request_metrics + ADD CONSTRAINT fk_rails_33ae169d48 FOREIGN KEY (pipeline_id) REFERENCES public.ci_pipelines(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.suggestions + ADD CONSTRAINT fk_rails_33b03a535c FOREIGN KEY (note_id) REFERENCES public.notes(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.requirements + ADD CONSTRAINT fk_rails_33fed8aa4e FOREIGN KEY (author_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.wiki_page_slugs + ADD CONSTRAINT fk_rails_358b46be14 FOREIGN KEY (wiki_page_meta_id) REFERENCES public.wiki_page_meta(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.board_labels + ADD CONSTRAINT fk_rails_362b0600a3 FOREIGN KEY (label_id) REFERENCES public.labels(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_request_blocks + ADD CONSTRAINT fk_rails_364d4bea8b FOREIGN KEY (blocked_merge_request_id) REFERENCES public.merge_requests(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.analytics_cycle_analytics_project_stages + ADD CONSTRAINT fk_rails_3829e49b66 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.issue_user_mentions + ADD CONSTRAINT fk_rails_3861d9fefa FOREIGN KEY (note_id) REFERENCES public.notes(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.self_managed_prometheus_alert_events + ADD CONSTRAINT fk_rails_3936dadc62 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.approval_project_rules_groups + ADD CONSTRAINT fk_rails_396841e79e FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.self_managed_prometheus_alert_events + ADD CONSTRAINT fk_rails_39d83d1b65 FOREIGN KEY (environment_id) REFERENCES public.environments(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.chat_teams + ADD CONSTRAINT fk_rails_3b543909cb FOREIGN KEY (namespace_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_build_needs + ADD CONSTRAINT fk_rails_3cf221d4ed FOREIGN KEY (build_id) REFERENCES public.ci_builds(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.cluster_groups + ADD CONSTRAINT fk_rails_3d28377556 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.note_diff_files + ADD CONSTRAINT fk_rails_3d66047aeb FOREIGN KEY (diff_note_id) REFERENCES public.notes(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.snippet_user_mentions + ADD CONSTRAINT fk_rails_3e00189191 FOREIGN KEY (snippet_id) REFERENCES public.snippets(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.clusters_applications_helm + ADD CONSTRAINT fk_rails_3e2b1c06bc FOREIGN KEY (cluster_id) REFERENCES public.clusters(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.epic_user_mentions + ADD CONSTRAINT fk_rails_3eaf4d88cc FOREIGN KEY (epic_id) REFERENCES public.epics(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.analytics_cycle_analytics_project_stages + ADD CONSTRAINT fk_rails_3ec9fd7912 FOREIGN KEY (end_event_label_id) REFERENCES public.labels(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.board_assignees + ADD CONSTRAINT fk_rails_3f6f926bd5 FOREIGN KEY (board_id) REFERENCES public.boards(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.description_versions + ADD CONSTRAINT fk_rails_3ff658220b FOREIGN KEY (issue_id) REFERENCES public.issues(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.clusters_kubernetes_namespaces + ADD CONSTRAINT fk_rails_40cc7ccbc3 FOREIGN KEY (cluster_project_id) REFERENCES public.cluster_projects(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.geo_node_namespace_links + ADD CONSTRAINT fk_rails_41ff5fb854 FOREIGN KEY (namespace_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.epic_issues + ADD CONSTRAINT fk_rails_4209981af6 FOREIGN KEY (issue_id) REFERENCES public.issues(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_refs + ADD CONSTRAINT fk_rails_4249db8cc3 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_resources + ADD CONSTRAINT fk_rails_430336af2d FOREIGN KEY (resource_group_id) REFERENCES public.ci_resource_groups(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.lfs_file_locks + ADD CONSTRAINT fk_rails_43df7a0412 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_request_assignees + ADD CONSTRAINT fk_rails_443443ce6f FOREIGN KEY (merge_request_id) REFERENCES public.merge_requests(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.packages_dependency_links + ADD CONSTRAINT fk_rails_4437bf4070 FOREIGN KEY (dependency_id) REFERENCES public.packages_dependencies(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_auto_devops + ADD CONSTRAINT fk_rails_45436b12b2 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_requests_closing_issues + ADD CONSTRAINT fk_rails_458eda8667 FOREIGN KEY (merge_request_id) REFERENCES public.merge_requests(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.protected_environment_deploy_access_levels + ADD CONSTRAINT fk_rails_45cc02a931 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.prometheus_alert_events + ADD CONSTRAINT fk_rails_4675865839 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.smartcard_identities + ADD CONSTRAINT fk_rails_4689f889a9 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerability_feedback + ADD CONSTRAINT fk_rails_472f69b043 FOREIGN KEY (author_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.user_custom_attributes + ADD CONSTRAINT fk_rails_47b91868a8 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.group_deletion_schedules + ADD CONSTRAINT fk_rails_4b8c694a6c FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.design_management_designs + ADD CONSTRAINT fk_rails_4bb1073360 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.issue_metrics + ADD CONSTRAINT fk_rails_4bb543d85d FOREIGN KEY (issue_id) REFERENCES public.issues(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_metrics_settings + ADD CONSTRAINT fk_rails_4c6037ee4f FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.prometheus_metrics + ADD CONSTRAINT fk_rails_4c8957a707 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.scim_identities + ADD CONSTRAINT fk_rails_4d2056ebd9 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.snippet_user_mentions + ADD CONSTRAINT fk_rails_4d3f96b2cb FOREIGN KEY (note_id) REFERENCES public.notes(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.deployment_clusters + ADD CONSTRAINT fk_rails_4e6243e120 FOREIGN KEY (cluster_id) REFERENCES public.clusters(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.geo_repository_renamed_events + ADD CONSTRAINT fk_rails_4e6524febb FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.aws_roles + ADD CONSTRAINT fk_rails_4ed56f4720 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.security_scans + ADD CONSTRAINT fk_rails_4ef1e6b4c6 FOREIGN KEY (build_id) REFERENCES public.ci_builds(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_request_diff_files + ADD CONSTRAINT fk_rails_501aa0a391 FOREIGN KEY (merge_request_diff_id) REFERENCES public.merge_request_diffs(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.status_page_settings + ADD CONSTRAINT fk_rails_506e5ba391 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.x509_commit_signatures + ADD CONSTRAINT fk_rails_53fe41188f FOREIGN KEY (x509_certificate_id) REFERENCES public.x509_certificates(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.geo_node_namespace_links + ADD CONSTRAINT fk_rails_546bf08d3e FOREIGN KEY (geo_node_id) REFERENCES public.geo_nodes(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.clusters_applications_knative + ADD CONSTRAINT fk_rails_54fc91e0a0 FOREIGN KEY (cluster_id) REFERENCES public.clusters(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.issue_user_mentions + ADD CONSTRAINT fk_rails_57581fda73 FOREIGN KEY (issue_id) REFERENCES public.issues(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_request_assignees + ADD CONSTRAINT fk_rails_579d375628 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.analytics_cycle_analytics_group_stages + ADD CONSTRAINT fk_rails_5a22f40223 FOREIGN KEY (start_event_label_id) REFERENCES public.labels(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.badges + ADD CONSTRAINT fk_rails_5a7c055bdc FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.resource_label_events + ADD CONSTRAINT fk_rails_5ac1d2fc24 FOREIGN KEY (issue_id) REFERENCES public.issues(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.approval_merge_request_rules_groups + ADD CONSTRAINT fk_rails_5b2ecf6139 FOREIGN KEY (approval_merge_request_rule_id) REFERENCES public.approval_merge_request_rules(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.protected_environment_deploy_access_levels + ADD CONSTRAINT fk_rails_5b9f6970fe FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.protected_branch_unprotect_access_levels + ADD CONSTRAINT fk_rails_5be1abfc25 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.cluster_providers_gcp + ADD CONSTRAINT fk_rails_5c2c3bc814 FOREIGN KEY (cluster_id) REFERENCES public.clusters(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.insights + ADD CONSTRAINT fk_rails_5c4391f60a FOREIGN KEY (namespace_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerability_scanners + ADD CONSTRAINT fk_rails_5c9d42a221 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.reviews + ADD CONSTRAINT fk_rails_5ca11d8c31 FOREIGN KEY (merge_request_id) REFERENCES public.merge_requests(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.epic_issues + ADD CONSTRAINT fk_rails_5d942936b4 FOREIGN KEY (epic_id) REFERENCES public.epics(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.resource_weight_events + ADD CONSTRAINT fk_rails_5eb5cb92a1 FOREIGN KEY (issue_id) REFERENCES public.issues(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.approval_project_rules + ADD CONSTRAINT fk_rails_5fb4dd100b FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.protected_branch_merge_access_levels + ADD CONSTRAINT fk_rails_5ffb4f3590 FOREIGN KEY (user_id) REFERENCES public.users(id); + +ALTER TABLE ONLY public.user_highest_roles + ADD CONSTRAINT fk_rails_60f6c325a6 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.dependency_proxy_group_settings + ADD CONSTRAINT fk_rails_616ddd680a FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.group_deploy_tokens + ADD CONSTRAINT fk_rails_61a572b41a FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.deployment_clusters + ADD CONSTRAINT fk_rails_6359a164df FOREIGN KEY (deployment_id) REFERENCES public.deployments(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.evidences + ADD CONSTRAINT fk_rails_6388b435a6 FOREIGN KEY (release_id) REFERENCES public.releases(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerability_occurrence_pipelines + ADD CONSTRAINT fk_rails_6421e35d7d FOREIGN KEY (pipeline_id) REFERENCES public.ci_pipelines(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.group_deploy_tokens + ADD CONSTRAINT fk_rails_6477b01f6b FOREIGN KEY (deploy_token_id) REFERENCES public.deploy_tokens(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.reviews + ADD CONSTRAINT fk_rails_64798be025 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.operations_feature_flags + ADD CONSTRAINT fk_rails_648e241be7 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_sources_projects + ADD CONSTRAINT fk_rails_64b6855cbc FOREIGN KEY (source_project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.board_group_recent_visits + ADD CONSTRAINT fk_rails_64bfc19bc5 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.approval_merge_request_rule_sources + ADD CONSTRAINT fk_rails_64e8ed3c7e FOREIGN KEY (approval_project_rule_id) REFERENCES public.approval_project_rules(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_pipeline_chat_data + ADD CONSTRAINT fk_rails_64ebfab6b3 FOREIGN KEY (pipeline_id) REFERENCES public.ci_pipelines(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.approval_project_rules_protected_branches + ADD CONSTRAINT fk_rails_65203aa786 FOREIGN KEY (approval_project_rule_id) REFERENCES public.approval_project_rules(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.design_management_versions + ADD CONSTRAINT fk_rails_6574200d99 FOREIGN KEY (issue_id) REFERENCES public.issues(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.approval_merge_request_rules_approved_approvers + ADD CONSTRAINT fk_rails_6577725edb FOREIGN KEY (approval_merge_request_rule_id) REFERENCES public.approval_merge_request_rules(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.operations_feature_flags_clients + ADD CONSTRAINT fk_rails_6650ed902c FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.web_hook_logs + ADD CONSTRAINT fk_rails_666826e111 FOREIGN KEY (web_hook_id) REFERENCES public.web_hooks(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.geo_hashed_storage_migrated_events + ADD CONSTRAINT fk_rails_687ed7d7c5 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.plan_limits + ADD CONSTRAINT fk_rails_69f8b6184f FOREIGN KEY (plan_id) REFERENCES public.plans(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.prometheus_alerts + ADD CONSTRAINT fk_rails_6d9b283465 FOREIGN KEY (environment_id) REFERENCES public.environments(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.term_agreements + ADD CONSTRAINT fk_rails_6ea6520e4a FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.users_security_dashboard_projects + ADD CONSTRAINT fk_rails_6f6cf8e66e FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_builds_runner_session + ADD CONSTRAINT fk_rails_70707857d3 FOREIGN KEY (build_id) REFERENCES public.ci_builds(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.list_user_preferences + ADD CONSTRAINT fk_rails_70b2ef5ce2 FOREIGN KEY (list_id) REFERENCES public.lists(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_custom_attributes + ADD CONSTRAINT fk_rails_719c3dccc5 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.slack_integrations + ADD CONSTRAINT fk_rails_73db19721a FOREIGN KEY (service_id) REFERENCES public.services(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_request_context_commit_diff_files + ADD CONSTRAINT fk_rails_74a00a1787 FOREIGN KEY (merge_request_context_commit_id) REFERENCES public.merge_request_context_commits(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.clusters_applications_ingress + ADD CONSTRAINT fk_rails_753a7b41c1 FOREIGN KEY (cluster_id) REFERENCES public.clusters(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.release_links + ADD CONSTRAINT fk_rails_753be7ae29 FOREIGN KEY (release_id) REFERENCES public.releases(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.milestone_releases + ADD CONSTRAINT fk_rails_754f27dbfa FOREIGN KEY (release_id) REFERENCES public.releases(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.geo_repositories_changed_events + ADD CONSTRAINT fk_rails_75ec0fefcc FOREIGN KEY (geo_node_id) REFERENCES public.geo_nodes(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.resource_label_events + ADD CONSTRAINT fk_rails_75efb0a653 FOREIGN KEY (epic_id) REFERENCES public.epics(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.path_locks + ADD CONSTRAINT fk_rails_762cdcf942 FOREIGN KEY (user_id) REFERENCES public.users(id); + +ALTER TABLE ONLY public.x509_certificates + ADD CONSTRAINT fk_rails_76479fb5b4 FOREIGN KEY (x509_issuer_id) REFERENCES public.x509_issuers(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.pages_domain_acme_orders + ADD CONSTRAINT fk_rails_76581b1c16 FOREIGN KEY (pages_domain_id) REFERENCES public.pages_domains(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_subscriptions_projects + ADD CONSTRAINT fk_rails_7871f9a97b FOREIGN KEY (upstream_project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.software_license_policies + ADD CONSTRAINT fk_rails_7a7a2a92de FOREIGN KEY (software_license_id) REFERENCES public.software_licenses(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_repositories + ADD CONSTRAINT fk_rails_7a810d4121 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.operations_scopes + ADD CONSTRAINT fk_rails_7a9358853b FOREIGN KEY (strategy_id) REFERENCES public.operations_strategies(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.milestone_releases + ADD CONSTRAINT fk_rails_7ae0756a2d FOREIGN KEY (milestone_id) REFERENCES public.milestones(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.application_settings + ADD CONSTRAINT fk_rails_7e112a9599 FOREIGN KEY (instance_administration_project_id) REFERENCES public.projects(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.clusters_kubernetes_namespaces + ADD CONSTRAINT fk_rails_7e7688ecaf FOREIGN KEY (cluster_id) REFERENCES public.clusters(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.approval_merge_request_rules_users + ADD CONSTRAINT fk_rails_80e6801803 FOREIGN KEY (approval_merge_request_rule_id) REFERENCES public.approval_merge_request_rules(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.deployment_merge_requests + ADD CONSTRAINT fk_rails_86a6d8bf12 FOREIGN KEY (merge_request_id) REFERENCES public.merge_requests(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.analytics_language_trend_repository_languages + ADD CONSTRAINT fk_rails_86cc9aef5f FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.clusters_applications_crossplane + ADD CONSTRAINT fk_rails_87186702df FOREIGN KEY (cluster_id) REFERENCES public.clusters(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_runner_namespaces + ADD CONSTRAINT fk_rails_8767676b7a FOREIGN KEY (runner_id) REFERENCES public.ci_runners(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.software_license_policies + ADD CONSTRAINT fk_rails_87b2247ce5 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.protected_environment_deploy_access_levels + ADD CONSTRAINT fk_rails_898a13b650 FOREIGN KEY (protected_environment_id) REFERENCES public.protected_environments(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.snippet_repositories + ADD CONSTRAINT fk_rails_8afd7e2f71 FOREIGN KEY (snippet_id) REFERENCES public.snippets(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.gpg_key_subkeys + ADD CONSTRAINT fk_rails_8b2c90b046 FOREIGN KEY (gpg_key_id) REFERENCES public.gpg_keys(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.allowed_email_domains + ADD CONSTRAINT fk_rails_8b5da859f9 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.cluster_projects + ADD CONSTRAINT fk_rails_8b8c5caf07 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_pages_metadata + ADD CONSTRAINT fk_rails_8c28a61485 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.packages_conan_metadata + ADD CONSTRAINT fk_rails_8c68cfec8b FOREIGN KEY (package_id) REFERENCES public.packages_packages(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerability_feedback + ADD CONSTRAINT fk_rails_8c77e5891a FOREIGN KEY (issue_id) REFERENCES public.issues(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.approval_merge_request_rules_approved_approvers + ADD CONSTRAINT fk_rails_8dc94cff4d FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.protected_branch_push_access_levels + ADD CONSTRAINT fk_rails_8dcb712d65 FOREIGN KEY (user_id) REFERENCES public.users(id); + +ALTER TABLE ONLY public.design_user_mentions + ADD CONSTRAINT fk_rails_8de8c6d632 FOREIGN KEY (note_id) REFERENCES public.notes(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.clusters_kubernetes_namespaces + ADD CONSTRAINT fk_rails_8df789f3ab FOREIGN KEY (environment_id) REFERENCES public.environments(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.project_daily_statistics + ADD CONSTRAINT fk_rails_8e549b272d FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_pipelines_config + ADD CONSTRAINT fk_rails_906c9a2533 FOREIGN KEY (pipeline_id) REFERENCES public.ci_pipelines(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.approval_project_rules_groups + ADD CONSTRAINT fk_rails_9071e863d1 FOREIGN KEY (approval_project_rule_id) REFERENCES public.approval_project_rules(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerability_occurrences + ADD CONSTRAINT fk_rails_90fed4faba FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.geo_reset_checksum_events + ADD CONSTRAINT fk_rails_910a06f12b FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_error_tracking_settings + ADD CONSTRAINT fk_rails_910a2b8bd9 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.list_user_preferences + ADD CONSTRAINT fk_rails_916d72cafd FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.board_labels + ADD CONSTRAINT fk_rails_9374a16edd FOREIGN KEY (board_id) REFERENCES public.boards(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.scim_identities + ADD CONSTRAINT fk_rails_9421a0bffb FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.packages_dependency_links + ADD CONSTRAINT fk_rails_96ef1c00d3 FOREIGN KEY (package_id) REFERENCES public.packages_packages(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.resource_label_events + ADD CONSTRAINT fk_rails_9851a00031 FOREIGN KEY (merge_request_id) REFERENCES public.merge_requests(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_job_artifacts + ADD CONSTRAINT fk_rails_9862d392f9 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.board_project_recent_visits + ADD CONSTRAINT fk_rails_98f8843922 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.clusters_kubernetes_namespaces + ADD CONSTRAINT fk_rails_98fe21e486 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.vulnerability_exports + ADD CONSTRAINT fk_rails_9aff2c3b45 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.users_ops_dashboard_projects + ADD CONSTRAINT fk_rails_9b4ebf005b FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_incident_management_settings + ADD CONSTRAINT fk_rails_9c2ea1b7dd FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.gpg_keys + ADD CONSTRAINT fk_rails_9d1f5d8719 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.analytics_language_trend_repository_languages + ADD CONSTRAINT fk_rails_9d851d566c FOREIGN KEY (programming_language_id) REFERENCES public.programming_languages(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.badges + ADD CONSTRAINT fk_rails_9df4a56538 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.clusters_applications_cert_managers + ADD CONSTRAINT fk_rails_9e4f2cb4b2 FOREIGN KEY (cluster_id) REFERENCES public.clusters(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.resource_milestone_events + ADD CONSTRAINT fk_rails_a006df5590 FOREIGN KEY (merge_request_id) REFERENCES public.merge_requests(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.namespace_root_storage_statistics + ADD CONSTRAINT fk_rails_a0702c430b FOREIGN KEY (namespace_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_aliases + ADD CONSTRAINT fk_rails_a1804f74a7 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.todos + ADD CONSTRAINT fk_rails_a27c483435 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.jira_tracker_data + ADD CONSTRAINT fk_rails_a299066916 FOREIGN KEY (service_id) REFERENCES public.services(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.protected_environments + ADD CONSTRAINT fk_rails_a354313d11 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.jira_connect_subscriptions + ADD CONSTRAINT fk_rails_a3c10bcf7d FOREIGN KEY (namespace_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.fork_network_members + ADD CONSTRAINT fk_rails_a40860a1ca FOREIGN KEY (fork_network_id) REFERENCES public.fork_networks(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.operations_feature_flag_scopes + ADD CONSTRAINT fk_rails_a50a04d0a4 FOREIGN KEY (feature_flag_id) REFERENCES public.operations_feature_flags(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.cluster_projects + ADD CONSTRAINT fk_rails_a5a958bca1 FOREIGN KEY (cluster_id) REFERENCES public.clusters(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.commit_user_mentions + ADD CONSTRAINT fk_rails_a6760813e0 FOREIGN KEY (note_id) REFERENCES public.notes(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerability_identifiers + ADD CONSTRAINT fk_rails_a67a16c885 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.user_preferences + ADD CONSTRAINT fk_rails_a69bfcfd81 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.sentry_issues + ADD CONSTRAINT fk_rails_a6a9612965 FOREIGN KEY (issue_id) REFERENCES public.issues(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.repository_languages + ADD CONSTRAINT fk_rails_a750ec87a8 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.resource_milestone_events + ADD CONSTRAINT fk_rails_a788026e85 FOREIGN KEY (issue_id) REFERENCES public.issues(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.term_agreements + ADD CONSTRAINT fk_rails_a88721bcdf FOREIGN KEY (term_id) REFERENCES public.application_setting_terms(id); + +ALTER TABLE ONLY public.merge_request_user_mentions + ADD CONSTRAINT fk_rails_aa1b2961b1 FOREIGN KEY (merge_request_id) REFERENCES public.merge_requests(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.x509_commit_signatures + ADD CONSTRAINT fk_rails_ab07452314 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_build_trace_sections + ADD CONSTRAINT fk_rails_ab7c104e26 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.clusters + ADD CONSTRAINT fk_rails_ac3a663d79 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.analytics_cycle_analytics_group_stages + ADD CONSTRAINT fk_rails_ae5da3409b FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.pool_repositories + ADD CONSTRAINT fk_rails_af3f8c5d62 FOREIGN KEY (shard_id) REFERENCES public.shards(id) ON DELETE RESTRICT; + +ALTER TABLE ONLY public.resource_label_events + ADD CONSTRAINT fk_rails_b126799f57 FOREIGN KEY (label_id) REFERENCES public.labels(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.packages_build_infos + ADD CONSTRAINT fk_rails_b18868292d FOREIGN KEY (package_id) REFERENCES public.packages_packages(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_trains + ADD CONSTRAINT fk_rails_b29261ce31 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.board_project_recent_visits + ADD CONSTRAINT fk_rails_b315dd0c80 FOREIGN KEY (board_id) REFERENCES public.boards(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.issues_prometheus_alert_events + ADD CONSTRAINT fk_rails_b32edb790f FOREIGN KEY (prometheus_alert_event_id) REFERENCES public.prometheus_alert_events(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_trains + ADD CONSTRAINT fk_rails_b374b5225d FOREIGN KEY (merge_request_id) REFERENCES public.merge_requests(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.application_settings + ADD CONSTRAINT fk_rails_b53e481273 FOREIGN KEY (custom_project_templates_group_id) REFERENCES public.namespaces(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.namespace_aggregation_schedules + ADD CONSTRAINT fk_rails_b565c8d16c FOREIGN KEY (namespace_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.approval_project_rules_protected_branches + ADD CONSTRAINT fk_rails_b7567b031b FOREIGN KEY (protected_branch_id) REFERENCES public.protected_branches(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.alerts_service_data + ADD CONSTRAINT fk_rails_b93215a42c FOREIGN KEY (service_id) REFERENCES public.services(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_trains + ADD CONSTRAINT fk_rails_b9d67af01d FOREIGN KEY (target_project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.approval_project_rules_users + ADD CONSTRAINT fk_rails_b9e9394efb FOREIGN KEY (approval_project_rule_id) REFERENCES public.approval_project_rules(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.lists + ADD CONSTRAINT fk_rails_baed5f39b7 FOREIGN KEY (milestone_id) REFERENCES public.milestones(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.approval_merge_request_rules_users + ADD CONSTRAINT fk_rails_bc8972fa55 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.external_pull_requests + ADD CONSTRAINT fk_rails_bcae9b5c7b FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.elasticsearch_indexed_projects + ADD CONSTRAINT fk_rails_bd13bbdc3d FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.elasticsearch_indexed_namespaces + ADD CONSTRAINT fk_rails_bdcf044f37 FOREIGN KEY (namespace_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerability_occurrence_identifiers + ADD CONSTRAINT fk_rails_be2e49e1d0 FOREIGN KEY (identifier_id) REFERENCES public.vulnerability_identifiers(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerability_occurrences + ADD CONSTRAINT fk_rails_bf5b788ca7 FOREIGN KEY (scanner_id) REFERENCES public.vulnerability_scanners(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.resource_weight_events + ADD CONSTRAINT fk_rails_bfc406b47c FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.design_management_designs + ADD CONSTRAINT fk_rails_bfe283ec3c FOREIGN KEY (issue_id) REFERENCES public.issues(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.u2f_registrations + ADD CONSTRAINT fk_rails_bfe6a84544 FOREIGN KEY (user_id) REFERENCES public.users(id); + +ALTER TABLE ONLY public.serverless_domain_cluster + ADD CONSTRAINT fk_rails_c09009dee1 FOREIGN KEY (pages_domain_id) REFERENCES public.pages_domains(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.labels + ADD CONSTRAINT fk_rails_c1ac5161d8 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_feature_usages + ADD CONSTRAINT fk_rails_c22a50024b FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_repositories + ADD CONSTRAINT fk_rails_c3258dc63b FOREIGN KEY (shard_id) REFERENCES public.shards(id) ON DELETE RESTRICT; + +ALTER TABLE ONLY public.merge_request_user_mentions + ADD CONSTRAINT fk_rails_c440b9ea31 FOREIGN KEY (note_id) REFERENCES public.notes(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_job_artifacts + ADD CONSTRAINT fk_rails_c5137cb2c1 FOREIGN KEY (job_id) REFERENCES public.ci_builds(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_settings + ADD CONSTRAINT fk_rails_c6df6e6328 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.container_expiration_policies + ADD CONSTRAINT fk_rails_c7360f09ad FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.wiki_page_meta + ADD CONSTRAINT fk_rails_c7a0c59cf1 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.scim_oauth_access_tokens + ADD CONSTRAINT fk_rails_c84404fb6c FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerability_occurrences + ADD CONSTRAINT fk_rails_c8661a61eb FOREIGN KEY (primary_identifier_id) REFERENCES public.vulnerability_identifiers(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_export_jobs + ADD CONSTRAINT fk_rails_c88d8db2e1 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.resource_milestone_events + ADD CONSTRAINT fk_rails_c940fb9fc5 FOREIGN KEY (milestone_id) REFERENCES public.milestones(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.gpg_signatures + ADD CONSTRAINT fk_rails_c97176f5f7 FOREIGN KEY (gpg_key_id) REFERENCES public.gpg_keys(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.board_group_recent_visits + ADD CONSTRAINT fk_rails_ca04c38720 FOREIGN KEY (board_id) REFERENCES public.boards(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_daily_report_results + ADD CONSTRAINT fk_rails_cc5caec7d9 FOREIGN KEY (last_pipeline_id) REFERENCES public.ci_pipelines(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.issues_self_managed_prometheus_alert_events + ADD CONSTRAINT fk_rails_cc5d88bbb0 FOREIGN KEY (issue_id) REFERENCES public.issues(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.issue_tracker_data + ADD CONSTRAINT fk_rails_ccc0840427 FOREIGN KEY (service_id) REFERENCES public.services(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.resource_milestone_events + ADD CONSTRAINT fk_rails_cedf8cce4d FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.epic_metrics + ADD CONSTRAINT fk_rails_d071904753 FOREIGN KEY (epic_id) REFERENCES public.epics(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.subscriptions + ADD CONSTRAINT fk_rails_d0c8bda804 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.operations_strategies + ADD CONSTRAINT fk_rails_d183b6e6dd FOREIGN KEY (feature_flag_id) REFERENCES public.operations_feature_flags(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.pool_repositories + ADD CONSTRAINT fk_rails_d2711daad4 FOREIGN KEY (source_project_id) REFERENCES public.projects(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.group_group_links + ADD CONSTRAINT fk_rails_d3a0488427 FOREIGN KEY (shared_group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerability_issue_links + ADD CONSTRAINT fk_rails_d459c19036 FOREIGN KEY (vulnerability_id) REFERENCES public.vulnerabilities(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.geo_hashed_storage_attachments_events + ADD CONSTRAINT fk_rails_d496b088e9 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.dependency_proxy_blobs + ADD CONSTRAINT fk_rails_db58bbc5d7 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.issues_prometheus_alert_events + ADD CONSTRAINT fk_rails_db5b756534 FOREIGN KEY (issue_id) REFERENCES public.issues(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerability_occurrence_pipelines + ADD CONSTRAINT fk_rails_dc3ae04693 FOREIGN KEY (occurrence_id) REFERENCES public.vulnerability_occurrences(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.deployment_merge_requests + ADD CONSTRAINT fk_rails_dcbce9f4df FOREIGN KEY (deployment_id) REFERENCES public.deployments(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.user_callouts + ADD CONSTRAINT fk_rails_ddfdd80f3d FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerability_feedback + ADD CONSTRAINT fk_rails_debd54e456 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.analytics_cycle_analytics_group_stages + ADD CONSTRAINT fk_rails_dfb37c880d FOREIGN KEY (end_event_label_id) REFERENCES public.labels(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.label_priorities + ADD CONSTRAINT fk_rails_e161058b0f FOREIGN KEY (label_id) REFERENCES public.labels(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.packages_packages + ADD CONSTRAINT fk_rails_e1ac527425 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.cluster_platforms_kubernetes + ADD CONSTRAINT fk_rails_e1e2cf841a FOREIGN KEY (cluster_id) REFERENCES public.clusters(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_builds_metadata + ADD CONSTRAINT fk_rails_e20479742e FOREIGN KEY (build_id) REFERENCES public.ci_builds(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerability_occurrence_identifiers + ADD CONSTRAINT fk_rails_e4ef6d027c FOREIGN KEY (occurrence_id) REFERENCES public.vulnerability_occurrences(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.serverless_domain_cluster + ADD CONSTRAINT fk_rails_e59e868733 FOREIGN KEY (clusters_applications_knative_id) REFERENCES public.clusters_applications_knative(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.approval_merge_request_rule_sources + ADD CONSTRAINT fk_rails_e605a04f76 FOREIGN KEY (approval_merge_request_rule_id) REFERENCES public.approval_merge_request_rules(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.prometheus_alerts + ADD CONSTRAINT fk_rails_e6351447ec FOREIGN KEY (prometheus_metric_id) REFERENCES public.prometheus_metrics(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_request_metrics + ADD CONSTRAINT fk_rails_e6d7c24d1b FOREIGN KEY (merge_request_id) REFERENCES public.merge_requests(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.draft_notes + ADD CONSTRAINT fk_rails_e753681674 FOREIGN KEY (merge_request_id) REFERENCES public.merge_requests(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.description_versions + ADD CONSTRAINT fk_rails_e8f4caf9c7 FOREIGN KEY (epic_id) REFERENCES public.epics(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.vulnerability_issue_links + ADD CONSTRAINT fk_rails_e9180d534b FOREIGN KEY (issue_id) REFERENCES public.issues(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_request_blocks + ADD CONSTRAINT fk_rails_e9387863bc FOREIGN KEY (blocking_merge_request_id) REFERENCES public.merge_requests(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.protected_branch_unprotect_access_levels + ADD CONSTRAINT fk_rails_e9eb8dc025 FOREIGN KEY (protected_branch_id) REFERENCES public.protected_branches(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_daily_report_results + ADD CONSTRAINT fk_rails_ebc2931b90 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.cluster_providers_aws + ADD CONSTRAINT fk_rails_ed1fdfaeb2 FOREIGN KEY (created_by_user_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.label_priorities + ADD CONSTRAINT fk_rails_ef916d14fa FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.fork_network_members + ADD CONSTRAINT fk_rails_efccadc4ec FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.prometheus_alerts + ADD CONSTRAINT fk_rails_f0e8db86aa FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.import_export_uploads + ADD CONSTRAINT fk_rails_f129140f9e FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.jira_connect_subscriptions + ADD CONSTRAINT fk_rails_f1d617343f FOREIGN KEY (jira_connect_installation_id) REFERENCES public.jira_connect_installations(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.requirements + ADD CONSTRAINT fk_rails_f212e67e63 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.snippet_repositories + ADD CONSTRAINT fk_rails_f21f899728 FOREIGN KEY (shard_id) REFERENCES public.shards(id) ON DELETE RESTRICT; + +ALTER TABLE ONLY public.ci_pipeline_chat_data + ADD CONSTRAINT fk_rails_f300456b63 FOREIGN KEY (chat_name_id) REFERENCES public.chat_names(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.approval_project_rules_users + ADD CONSTRAINT fk_rails_f365da8250 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.insights + ADD CONSTRAINT fk_rails_f36fda3932 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.board_group_recent_visits + ADD CONSTRAINT fk_rails_f410736518 FOREIGN KEY (group_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.design_user_mentions + ADD CONSTRAINT fk_rails_f7075a53c1 FOREIGN KEY (design_id) REFERENCES public.design_management_designs(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.internal_ids + ADD CONSTRAINT fk_rails_f7d46b66c6 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.issues_self_managed_prometheus_alert_events + ADD CONSTRAINT fk_rails_f7db2d72eb FOREIGN KEY (self_managed_prometheus_alert_event_id) REFERENCES public.self_managed_prometheus_alert_events(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_requests_closing_issues + ADD CONSTRAINT fk_rails_f8540692be FOREIGN KEY (issue_id) REFERENCES public.issues(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.ci_build_trace_section_names + ADD CONSTRAINT fk_rails_f8cd72cd26 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.merge_trains + ADD CONSTRAINT fk_rails_f90820cb08 FOREIGN KEY (pipeline_id) REFERENCES public.ci_pipelines(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.ci_runner_namespaces + ADD CONSTRAINT fk_rails_f9d9ed3308 FOREIGN KEY (namespace_id) REFERENCES public.namespaces(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.board_project_recent_visits + ADD CONSTRAINT fk_rails_fb6fc419cb FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.serverless_domain_cluster + ADD CONSTRAINT fk_rails_fbdba67eb1 FOREIGN KEY (creator_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.ci_job_variables + ADD CONSTRAINT fk_rails_fbf3b34792 FOREIGN KEY (job_id) REFERENCES public.ci_builds(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.cluster_groups + ADD CONSTRAINT fk_rails_fdb8648a96 FOREIGN KEY (cluster_id) REFERENCES public.clusters(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.project_tracing_settings + ADD CONSTRAINT fk_rails_fe56f57fc6 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.resource_label_events + ADD CONSTRAINT fk_rails_fe91ece594 FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE SET NULL; + +ALTER TABLE ONLY public.ci_builds_metadata + ADD CONSTRAINT fk_rails_ffcf702a02 FOREIGN KEY (project_id) REFERENCES public.projects(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.timelogs + ADD CONSTRAINT fk_timelogs_issues_issue_id FOREIGN KEY (issue_id) REFERENCES public.issues(id) ON DELETE CASCADE; + +ALTER TABLE ONLY public.timelogs + ADD CONSTRAINT fk_timelogs_merge_requests_merge_request_id FOREIGN KEY (merge_request_id) REFERENCES public.merge_requests(id) ON DELETE CASCADE; + +INSERT INTO "schema_migrations" (version) VALUES +('20171230123729'), +('20180101160629'), +('20180101160630'), +('20180102220145'), +('20180103123548'), +('20180104131052'), +('20180105212544'), +('20180109183319'), +('20180113220114'), +('20180115094742'), +('20180115113902'), +('20180115201419'), +('20180116193854'), +('20180119121225'), +('20180119135717'), +('20180119160751'), +('20180122154930'), +('20180122162010'), +('20180125214301'), +('20180129193323'), +('20180201102129'), +('20180201110056'), +('20180201145907'), +('20180204200836'), +('20180206200543'), +('20180208183958'), +('20180209115333'), +('20180209165249'), +('20180212030105'), +('20180212101828'), +('20180212101928'), +('20180212102028'), +('20180213131630'), +('20180214093516'), +('20180214155405'), +('20180215181245'), +('20180216120000'), +('20180216120010'), +('20180216120020'), +('20180216120030'), +('20180216120040'), +('20180216120050'), +('20180216121020'), +('20180216121030'), +('20180219153455'), +('20180220150310'), +('20180221151752'), +('20180222043024'), +('20180223120443'), +('20180223124427'), +('20180223144945'), +('20180226050030'), +('20180227182112'), +('20180228172924'), +('20180301010859'), +('20180301084653'), +('20180302152117'), +('20180305095250'), +('20180305100050'), +('20180305144721'), +('20180306074045'), +('20180306134842'), +('20180306164012'), +('20180307012445'), +('20180308052825'), +('20180308125206'), +('20180309121820'), +('20180309160427'), +('20180314100728'), +('20180314145917'), +('20180315160435'), +('20180319190020'), +('20180320182229'), +('20180323150945'), +('20180326202229'), +('20180327101207'), +('20180330121048'), +('20180403035759'), +('20180405101928'), +('20180405142733'), +('20180408143354'), +('20180408143355'), +('20180409170809'), +('20180413022611'), +('20180416155103'), +('20180417090132'), +('20180417101040'), +('20180417101940'), +('20180418053107'), +('20180420010016'), +('20180420010616'), +('20180420080616'), +('20180423204600'), +('20180424090541'), +('20180424134533'), +('20180424151928'), +('20180424160449'), +('20180425075446'), +('20180425131009'), +('20180425205249'), +('20180426102016'), +('20180430101916'), +('20180430143705'), +('20180502122856'), +('20180503131624'), +('20180503141722'), +('20180503150427'), +('20180503175053'), +('20180503175054'), +('20180503193542'), +('20180503193953'), +('20180503200320'), +('20180504195842'), +('20180507083701'), +('20180508055821'), +('20180508100222'), +('20180508102840'), +('20180508135515'), +('20180511090724'), +('20180511131058'), +('20180511174224'), +('20180512061621'), +('20180514161336'), +('20180515005612'), +('20180515121227'), +('20180517082340'), +('20180523042841'), +('20180523125103'), +('20180524132016'), +('20180529093006'), +('20180529152628'), +('20180530135500'), +('20180531185349'), +('20180531220618'), +('20180601213245'), +('20180603190921'), +('20180604123514'), +('20180607071808'), +('20180608091413'), +('20180608110058'), +('20180608201435'), +('20180612103626'), +('20180613081317'), +('20180625113853'), +('20180626125654'), +('20180628124813'), +('20180629153018'), +('20180629191052'), +('20180702120647'), +('20180702124358'), +('20180702134423'), +('20180704145007'), +('20180704204006'), +('20180705160945'), +('20180706223200'), +('20180710162338'), +('20180711103851'), +('20180711103922'), +('20180713092803'), +('20180717125853'), +('20180718005113'), +('20180720023512'), +('20180722103201'), +('20180723135214'), +('20180726172057'), +('20180807153545'), +('20180808162000'), +('20180809195358'), +('20180813101999'), +('20180813102000'), +('20180814153625'), +('20180815040323'), +('20180815160409'), +('20180815170510'), +('20180815175440'), +('20180816161409'), +('20180816193530'), +('20180824202952'), +('20180826111825'), +('20180831164905'), +('20180831164907'), +('20180831164908'), +('20180831164909'), +('20180831164910'), +('20180901171833'), +('20180901200537'), +('20180902070406'), +('20180906101639'), +('20180907015926'), +('20180910115836'), +('20180910153412'), +('20180910153413'), +('20180912111628'), +('20180913142237'), +('20180914162043'), +('20180914201132'), +('20180916011959'), +('20180917172041'), +('20180924141949'), +('20180924190739'), +('20180924201039'), +('20180925200829'), +('20180927073410'), +('20181002172433'), +('20181005110927'), +('20181005125926'), +('20181006004100'), +('20181008145341'), +('20181008145359'), +('20181008200441'), +('20181009190428'), +('20181010133639'), +('20181010235606'), +('20181013005024'), +('20181014203236'), +('20181015155839'), +('20181016141739'), +('20181016152238'), +('20181017001059'), +('20181019032400'), +('20181019032408'), +('20181019105553'), +('20181022135539'), +('20181022173835'), +('20181023104858'), +('20181023144439'), +('20181025115728'), +('20181026091631'), +('20181026143227'), +('20181027114222'), +('20181028120717'), +('20181030135124'), +('20181030154446'), +('20181031145139'), +('20181031190558'), +('20181031190559'), +('20181101091005'), +('20181101091124'), +('20181101144347'), +('20181101191341'), +('20181105201455'), +('20181106135939'), +('20181107054254'), +('20181108091549'), +('20181112103239'), +('20181115140140'), +('20181116050532'), +('20181116141415'), +('20181116141504'), +('20181119081539'), +('20181119132520'), +('20181120082911'), +('20181120091639'), +('20181120151656'), +('20181121101842'), +('20181121101843'), +('20181121111200'), +('20181122160027'), +('20181123042307'), +('20181123135036'), +('20181123144235'), +('20181126150622'), +('20181126153547'), +('20181128123704'), +('20181129104854'), +('20181129104944'), +('20181130102132'), +('20181203002526'), +('20181205171941'), +('20181211092510'), +('20181211092514'), +('20181212104941'), +('20181212171634'), +('20181219130552'), +('20181219145520'), +('20181219145521'), +('20181228175414'), +('20190102152410'), +('20190103140724'), +('20190104182041'), +('20190107151020'), +('20190108192941'), +('20190109153125'), +('20190114172110'), +('20190115054215'), +('20190115054216'), +('20190115092821'), +('20190116234221'), +('20190124200344'), +('20190130091630'), +('20190131122559'), +('20190204115450'), +('20190206193120'), +('20190211131150'), +('20190214112022'), +('20190215154930'), +('20190218134158'), +('20190218134209'), +('20190219201635'), +('20190220142344'), +('20190220150130'), +('20190222051615'), +('20190225152525'), +('20190225160300'), +('20190225160301'), +('20190228192410'), +('20190301081611'), +('20190301182457'), +('20190312071108'), +('20190312113229'), +('20190312113634'), +('20190313092516'), +('20190315191339'), +('20190320174702'), +('20190322132835'), +('20190322164830'), +('20190325080727'), +('20190325105715'), +('20190325111602'), +('20190325165127'), +('20190326164045'), +('20190327163904'), +('20190329085614'), +('20190402150158'), +('20190402224749'), +('20190403161806'), +('20190404143330'), +('20190404231137'), +('20190408163745'), +('20190409224933'), +('20190410173409'), +('20190412155659'), +('20190412183653'), +('20190414185432'), +('20190415030217'), +('20190415095825'), +('20190415172035'), +('20190416185130'), +('20190416213556'), +('20190416213615'), +('20190416213631'), +('20190418132125'), +('20190418132750'), +('20190418182545'), +('20190419121952'), +('20190419123057'), +('20190422082247'), +('20190423124640'), +('20190424134256'), +('20190426180107'), +('20190429082448'), +('20190430131225'), +('20190430142025'), +('20190506135337'), +('20190506135400'), +('20190511144331'), +('20190513174947'), +('20190514105711'), +('20190515125613'), +('20190516011213'), +('20190516151857'), +('20190516155724'), +('20190517153211'), +('20190520200123'), +('20190520201748'), +('20190521174505'), +('20190522143720'), +('20190523112344'), +('20190524062810'), +('20190524071727'), +('20190524073827'), +('20190527011309'), +('20190527194830'), +('20190527194900'), +('20190528173628'), +('20190528180441'), +('20190529142545'), +('20190530042141'), +('20190530154715'), +('20190531153110'), +('20190602014139'), +('20190603124955'), +('20190604091310'), +('20190604184643'), +('20190605104727'), +('20190605184422'), +('20190606014128'), +('20190606034427'), +('20190606054649'), +('20190606054742'), +('20190606054832'), +('20190606163724'), +('20190606175050'), +('20190606202100'), +('20190607085356'), +('20190607145325'), +('20190607190856'), +('20190607205656'), +('20190610142825'), +('20190611090827'), +('20190611100201'), +('20190611100202'), +('20190611161641'), +('20190611161642'), +('20190612111201'), +('20190612111404'), +('20190613030606'), +('20190613044655'), +('20190613073003'), +('20190613231640'), +('20190617123615'), +('20190618171120'), +('20190619175843'), +('20190620105427'), +('20190620112608'), +('20190621022810'), +('20190621151636'), +('20190623212503'), +('20190624123615'), +('20190625115224'), +('20190625184066'), +('20190626175626'), +('20190627051902'), +('20190627100221'), +('20190627122264'), +('20190628145246'), +('20190628185000'), +('20190628185004'), +('20190628191740'), +('20190702173936'), +('20190703043358'), +('20190703130053'), +('20190703171157'), +('20190703171555'), +('20190703185326'), +('20190709204413'), +('20190709220014'), +('20190709220143'), +('20190710151229'), +('20190711124721'), +('20190711200053'), +('20190711200508'), +('20190711201818'), +('20190712040400'), +('20190712040412'), +('20190712064021'), +('20190715042813'), +('20190715043944'), +('20190715043954'), +('20190715044501'), +('20190715114644'), +('20190715140740'), +('20190715142138'), +('20190715173819'), +('20190715193142'), +('20190715215532'), +('20190715215549'), +('20190716144222'), +('20190719122333'), +('20190719174505'), +('20190722104947'), +('20190722132830'), +('20190722144316'), +('20190723105753'), +('20190723153247'), +('20190724112147'), +('20190725012225'), +('20190725080128'), +('20190725183432'), +('20190726101050'), +('20190726101133'), +('20190729062536'), +('20190729090456'), +('20190729180447'), +('20190731084415'), +('20190801060809'), +('20190801114109'), +('20190801142441'), +('20190801193427'), +('20190802012622'), +('20190802091750'), +('20190802195602'), +('20190802235445'), +('20190805140353'), +('20190806071559'), +('20190807023052'), +('20190808152507'), +('20190809072552'), +('20190812070645'), +('20190814205640'), +('20190815093936'), +('20190815093949'), +('20190816151221'), +('20190819131155'), +('20190819231552'), +('20190820163320'), +('20190821040941'), +('20190822175441'), +('20190822181528'), +('20190822185441'), +('20190823055948'), +('20190826090628'), +('20190826100605'), +('20190827102026'), +('20190827222124'), +('20190828083843'), +('20190828110802'), +('20190828170945'), +('20190828172831'), +('20190829131130'), +('20190830075508'), +('20190830080123'), +('20190830080626'), +('20190830140240'), +('20190901174200'), +('20190902131045'), +('20190902152329'), +('20190902160015'), +('20190903150358'), +('20190903150435'), +('20190904173203'), +('20190904205212'), +('20190905022045'), +('20190905074652'), +('20190905091812'), +('20190905091831'), +('20190905140605'), +('20190905223800'), +('20190905223900'), +('20190906104555'), +('20190907184714'), +('20190909045845'), +('20190909141517'), +('20190910000130'), +('20190910103144'), +('20190910114843'), +('20190910125852'), +('20190910211526'), +('20190910212256'), +('20190911115056'), +('20190911115109'), +('20190911115207'), +('20190911115222'), +('20190911251732'), +('20190912061145'), +('20190912223232'), +('20190913174707'), +('20190913175827'), +('20190914223900'), +('20190917173107'), +('20190918025618'), +('20190918102042'), +('20190918104212'), +('20190918104222'), +('20190918104731'), +('20190918121135'), +('20190919040324'), +('20190919091300'), +('20190919104119'), +('20190919162036'), +('20190919183411'), +('20190920122420'), +('20190920194925'), +('20190920224341'), +('20190924124627'), +('20190924152703'), +('20190925055714'), +('20190925055902'), +('20190926041216'), +('20190926180443'), +('20190926225633'), +('20190927055500'), +('20190927055540'), +('20190927074328'), +('20190929180751'), +('20190929180813'), +('20190929180827'), +('20190930025655'), +('20190930063627'), +('20190930082942'), +('20190930153535'), +('20191001040549'), +('20191001170300'), +('20191002031332'), +('20191002123516'), +('20191003015155'), +('20191003060227'), +('20191003064615'), +('20191003130045'), +('20191003150045'), +('20191003161031'), +('20191003161032'), +('20191003195218'), +('20191003195620'), +('20191003200045'), +('20191003250045'), +('20191003300045'), +('20191003350045'), +('20191004080818'), +('20191004081520'), +('20191004133612'), +('20191004151428'), +('20191007163701'), +('20191007163736'), +('20191008013056'), +('20191008142331'), +('20191008143850'), +('20191008180203'), +('20191008200204'), +('20191009100244'), +('20191009110124'), +('20191009110757'), +('20191009222222'), +('20191010174846'), +('20191011084019'), +('20191013100213'), +('20191014025629'), +('20191014030134'), +('20191014030730'), +('20191014084150'), +('20191014123159'), +('20191014132931'), +('20191015154408'), +('20191016072826'), +('20191016133352'), +('20191016220135'), +('20191017001326'), +('20191017045817'), +('20191017094449'), +('20191017134513'), +('20191017180026'), +('20191017191341'), +('20191021101942'), +('20191022113635'), +('20191023093207'), +('20191023132005'), +('20191023152913'), +('20191024134020'), +('20191025092748'), +('20191026041447'), +('20191026120008'), +('20191026120112'), +('20191026124116'), +('20191028130054'), +('20191028162543'), +('20191028184740'), +('20191029095537'), +('20191029125305'), +('20191029191901'), +('20191030135044'), +('20191030152934'), +('20191030193050'), +('20191030223057'), +('20191031095636'), +('20191031112603'), +('20191101092917'), +('20191103202505'), +('20191104142124'), +('20191104205020'), +('20191105094558'), +('20191105094625'), +('20191105134413'), +('20191105140942'), +('20191105155113'), +('20191105193652'), +('20191106144901'), +('20191106150931'), +('20191107064946'), +('20191107173446'), +('20191107220314'), +('20191108031900'), +('20191108202723'), +('20191111115229'), +('20191111115431'), +('20191111121500'), +('20191111165017'), +('20191111175230'), +('20191112023159'), +('20191112090226'), +('20191112105448'), +('20191112115247'), +('20191112115317'), +('20191112214305'), +('20191112221821'), +('20191112232338'), +('20191114132259'), +('20191114173508'), +('20191114173602'), +('20191114173624'), +('20191114201118'), +('20191114204343'), +('20191115001123'), +('20191115001843'), +('20191115091425'), +('20191115114032'), +('20191115115043'), +('20191115115522'), +('20191118053631'), +('20191118155702'), +('20191118173522'), +('20191118182722'), +('20191118211629'), +('20191119023952'), +('20191119220425'), +('20191119221041'), +('20191119231621'), +('20191120084627'), +('20191120115530'), +('20191120200015'), +('20191121111621'), +('20191121121947'), +('20191121122856'), +('20191121161018'), +('20191121193110'), +('20191122135327'), +('20191122161519'), +('20191123062354'), +('20191123081456'), +('20191124150431'), +('20191125024005'), +('20191125114345'), +('20191125133353'), +('20191125140458'), +('20191126134210'), +('20191127030005'), +('20191127151619'), +('20191127151629'), +('20191127163053'), +('20191127221608'), +('20191128145231'), +('20191128145232'), +('20191128145233'), +('20191128162854'), +('20191129134844'), +('20191129144630'), +('20191129144631'), +('20191202031812'), +('20191202181924'), +('20191203121729'), +('20191204070713'), +('20191204093410'), +('20191204114127'), +('20191204192726'), +('20191205060723'), +('20191205084057'), +('20191205094702'), +('20191205145647'), +('20191205212923'), +('20191205212924'), +('20191206014412'), +('20191206022133'), +('20191206122926'), +('20191207104000'), +('20191208071111'), +('20191208071112'), +('20191208110214'), +('20191209143606'), +('20191209215316'), +('20191210211253'), +('20191212140117'), +('20191212162434'), +('20191213104838'), +('20191213120427'), +('20191213143656'), +('20191213184609'), +('20191214175727'), +('20191216074800'), +('20191216074802'), +('20191216074803'), +('20191216094119'), +('20191216183531'), +('20191216183532'), +('20191217165641'), +('20191217212348'), +('20191218084115'), +('20191218122457'), +('20191218124915'), +('20191218125015'), +('20191218190253'), +('20191218225624'), +('20191223124940'), +('20191225071320'), +('20191227140254'), +('20191229140154'), +('20200102140148'), +('20200102170221'), +('20200103190741'), +('20200103192859'), +('20200103192914'), +('20200103195205'), +('20200104113850'), +('20200106071113'), +('20200106085831'), +('20200107172020'), +('20200108100603'), +('20200108155731'), +('20200108233040'), +('20200109030418'), +('20200109085206'), +('20200109233938'), +('20200110089001'), +('20200110090153'), +('20200110121314'), +('20200110144316'), +('20200110203532'), +('20200113133352'), +('20200113151354'), +('20200114112932'), +('20200114113341'), +('20200114140305'), +('20200114204949'), +('20200115135132'), +('20200115135234'), +('20200116051619'), +('20200116175538'), +('20200117112554'), +('20200117194830'), +('20200117194840'), +('20200117194850'), +('20200117194900'), +('20200120083607'), +('20200121132641'), +('20200121192942'), +('20200121194000'), +('20200121194048'), +('20200121194154'), +('20200121200203'), +('20200122123016'), +('20200122144759'), +('20200122161638'), +('20200123040535'), +('20200123045415'), +('20200123090839'), +('20200123091422'), +('20200123091622'), +('20200123091734'), +('20200123091854'), +('20200123155929'), +('20200124053531'), +('20200124110831'), +('20200124143014'), +('20200127090233'), +('20200127111840'), +('20200128105731'), +('20200128132510'), +('20200128133510'), +('20200128134110'), +('20200128141125'), +('20200128184209'), +('20200128210353'), +('20200129034515'), +('20200129035446'), +('20200129035708'), +('20200129133716'), +('20200129172428'), +('20200130134335'), +('20200130145430'), +('20200130161817'), +('20200131140428'), +('20200131181354'), +('20200131191754'), +('20200202100932'), +('20200203015140'), +('20200203025400'), +('20200203025602'), +('20200203025619'), +('20200203025744'), +('20200203025801'), +('20200203025821'), +('20200203104214'), +('20200203173508'), +('20200203183508'), +('20200203232433'), +('20200204070729'), +('20200204113223'), +('20200204113224'), +('20200204131054'), +('20200204131831'), +('20200205143231'), +('20200206091544'), +('20200206112850'), +('20200206135203'), +('20200206141511'), +('20200207062728'), +('20200207090921'), +('20200207132752'), +('20200207151640'), +('20200207182131'), +('20200207184023'), +('20200207185149'), +('20200209131152'), +('20200210062432'), +('20200210092405'), +('20200210135504'), +('20200210184410'), +('20200210184420'), +('20200211152410'), +('20200211155000'), +('20200211155100'), +('20200211155539'), +('20200211174946'), +('20200212014653'), +('20200212052620'), +('20200212133945'), +('20200212134201'), +('20200213093702'), +('20200213155311'), +('20200213204737'), +('20200213220159'), +('20200213220211'), +('20200214034836'), +('20200214085940'), +('20200214214934'), +('20200215222507'), +('20200215225103'), +('20200217223651'), +('20200217225719'), +('20200219105209'), +('20200219133859'), +('20200219135440'), +('20200219141307'), +('20200219142522'), +('20200219183456'), +('20200219184219'), +('20200219193058'), +('20200219193117'), +('20200220180944'), +('20200221023320'), +('20200221074028'), +('20200221100514'), +('20200221105436'), +('20200221142216'), +('20200221144534'), +('20200222055543'), +('20200224020219'), +('20200224163804'), +('20200224185814'), +('20200225111018'), +('20200225123228'), +('20200226100614'), +('20200226100624'), +('20200226100634'), +('20200226162156'), +('20200226162239'), +('20200226162634'), +('20200226162723'), +('20200227140242'), +('20200227164113'), +('20200227165129'), +('20200228160542'), +('20200302142052'), +('20200302152516'), +('20200303055348'), +('20200303074328'), +('20200304085423'), +('20200304090155'), +('20200304121828'), +('20200304121844'), +('20200304124406'), +('20200304160800'), +('20200304160801'), +('20200304160823'), +('20200304211738'), +('20200305121159'), +('20200305151736'), +('20200306095654'), +('20200306160521'), +('20200306170211'), +('20200306170321'), +('20200306170531'), +('20200306192548'), +('20200306193236'), +('20200309140540'), +('20200309162244'), +('20200309195209'), +('20200309195710'), +('20200310075115'), +('20200310123229'), +('20200310132654'), +('20200310133822'), +('20200310135818'), +('20200310135823'), +('20200310145304'), +('20200311074438'), +('20200311082301'), +('20200311084025'), +('20200311093210'), +('20200311094020'), +('20200311141053'), +('20200311141943'), +('20200311154110'), +('20200311165635'), +('20200311192351'), +('20200311214912'), +('20200312125121'), +('20200312160532'), +('20200312163407'), +('20200313101649'), +('20200313123934'), +('20200316111759'), +('20200316173312'), +('20200317142110'), +('20200318152134'), +('20200318162148'), +('20200318163148'), +('20200318164448'), +('20200318165448'), +('20200319203901'); + diff --git a/doc/development/database_review.md b/doc/development/database_review.md index 0cd7e083e2a..9c428c62434 100644 --- a/doc/development/database_review.md +++ b/doc/development/database_review.md @@ -81,7 +81,7 @@ the following preparations into account. #### Preparation when adding migrations -- Ensure `db/schema.rb` is updated. +- Ensure `db/structure.sql` is updated. - Make migrations reversible by using the `change` method or include a `down` method when using `up`. - Include either a rollback procedure or describe how to rollback changes. - Add the output of the migration(s) to the MR description. @@ -137,7 +137,7 @@ the following preparations into account. - [Check indexes are present for foreign keys](migration_style_guide.md#adding-foreign-key-constraints) - Ensure that migrations execute in a transaction or only contain concurrent index/foreign key helpers (with transactions disabled) - - Check consistency with `db/schema.rb` and that migrations are [reversible](migration_style_guide.md#reversibility) + - Check consistency with `db/structure.sql` and that migrations are [reversible](migration_style_guide.md#reversibility) - Check queries timing (If any): Queries executed in a migration need to fit comfortably within `15s` - preferably much less than that - on GitLab.com. - For column removals, make sure the column has been [ignored in a previous release](what_requires_downtime.md#dropping-columns) diff --git a/doc/development/omnibus.md b/doc/development/omnibus.md index ea5c18f1a8c..28ca500f21a 100644 --- a/doc/development/omnibus.md +++ b/doc/development/omnibus.md @@ -12,7 +12,7 @@ extra security. The Omnibus reconfigure script contains commands that give write access to the `git` user only where needed. For example, the `git` user is allowed to write in the `log/` directory, in -`public/uploads`, and they are allowed to rewrite the `db/schema.rb` file. +`public/uploads`, and they are allowed to rewrite the `db/structure.sql` file. In other cases, the reconfigure script tricks GitLab into not trying to write a file. For instance, GitLab will generate a `.secret` file if it cannot find one diff --git a/doc/development/scalability.md b/doc/development/scalability.md index b3387526ccd..76a227d44f4 100644 --- a/doc/development/scalability.md +++ b/doc/development/scalability.md @@ -18,7 +18,7 @@ users. We will discuss each component below. The PostgreSQL database holds all metadata for projects, issues, merge requests, users, etc. The schema is managed by the Rails application -[db/schema.rb](https://gitlab.com/gitlab-org/gitlab/blob/master/db/schema.rb). +[db/structure.sql](https://gitlab.com/gitlab-org/gitlab/blob/master/db/structure.sql). GitLab Web/API servers and Sidekiq nodes talk directly to the database via a Rails object relational model (ORM). Most SQL queries are accessed via this diff --git a/doc/update/patch_versions.md b/doc/update/patch_versions.md index 02792730d2b..aaa464dfdcb 100644 --- a/doc/update/patch_versions.md +++ b/doc/update/patch_versions.md @@ -31,7 +31,7 @@ current version with `cat VERSION`). cd /home/git/gitlab sudo -u git -H git fetch --all -sudo -u git -H git checkout -- Gemfile.lock db/schema.rb locale +sudo -u git -H git checkout -- Gemfile.lock db/structure.sql locale sudo -u git -H git checkout LATEST_TAG -b LATEST_TAG ``` diff --git a/doc/update/upgrading_from_source.md b/doc/update/upgrading_from_source.md index 661f3eef832..76ee456d75f 100644 --- a/doc/update/upgrading_from_source.md +++ b/doc/update/upgrading_from_source.md @@ -165,7 +165,7 @@ sudo make prefix=/usr/local install cd /home/git/gitlab sudo -u git -H git fetch --all --prune -sudo -u git -H git checkout -- db/schema.rb # local changes will be restored automatically +sudo -u git -H git checkout -- db/structure.sql # local changes will be restored automatically sudo -u git -H git checkout -- locale ``` diff --git a/lib/gitlab/database/schema_cleaner.rb b/lib/gitlab/database/schema_cleaner.rb new file mode 100644 index 00000000000..c1436d3e7ca --- /dev/null +++ b/lib/gitlab/database/schema_cleaner.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +module Gitlab + module Database + class SchemaCleaner + attr_reader :original_schema + + def initialize(original_schema) + @original_schema = original_schema + end + + def clean(io) + structure = original_schema.dup + + # Postgres compat fix for PG 9.6 (which doesn't support (AS datatype) syntax for sequences) + structure.gsub!(/CREATE SEQUENCE [^.]+\.\S+\n(\s+AS integer\n)/) { |m| m.gsub(Regexp.last_match[1], '') } + + # Also a PG 9.6 compatibility fix, see below. + structure.gsub!(/^CREATE EXTENSION IF NOT EXISTS plpgsql.*/, '') + structure.gsub!(/^COMMENT ON EXTENSION.*/, '') + + # Remove noise + structure.gsub!(/^SET.+/, '') + structure.gsub!(/^SELECT pg_catalog\.set_config\('search_path'.+/, '') + structure.gsub!(/^--.*/, "\n") + structure.gsub!(/\n{3,}/, "\n\n") + + io << "SET search_path=public;\n\n" + + # Adding plpgsql explicitly is again a compatibility fix for PG 9.6 + # In more recent versions of pg_dump, the extension isn't explicitly dumped anymore. + # We use PG 9.6 still on CI and for schema checks - here this is still the case. + io << <<~SQL.strip + CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + SQL + + io << structure + + nil + end + end + end +end diff --git a/lib/gitlab/fake_application_settings.rb b/lib/gitlab/fake_application_settings.rb index 74b91277dd7..71d2b2396f8 100644 --- a/lib/gitlab/fake_application_settings.rb +++ b/lib/gitlab/fake_application_settings.rb @@ -4,7 +4,7 @@ # ActiveRecord access. We rely on the initial values being true or false to # determine whether to define a predicate method because for a newly-added # column that has not been migrated yet, there is no way to determine the -# column type without parsing db/schema.rb. +# column type without parsing db/structure.sql. module Gitlab class FakeApplicationSettings < OpenStruct include ApplicationSettingImplementation diff --git a/lib/tasks/gitlab/db.rake b/lib/tasks/gitlab/db.rake index e72c5f51ada..69d542a4f02 100644 --- a/lib/tasks/gitlab/db.rake +++ b/lib/tasks/gitlab/db.rake @@ -50,7 +50,7 @@ namespace :gitlab do else # Add post-migrate paths to ensure we mark all migrations as up Gitlab::Database.add_post_migrate_path_to_rails(force: true) - Rake::Task['db:schema:load'].invoke + Rake::Task['db:structure:load'].invoke Rake::Task['db:seed_fu'].invoke end end @@ -78,5 +78,20 @@ namespace :gitlab do else task :setup_ee end + + desc 'This adjusts and cleans db/structure.sql - it runs after db:structure:dump' + task :clean_structure_sql do + structure_file = 'db/structure.sql' + schema = File.read(structure_file) + + File.open(structure_file, 'wb+') do |io| + Gitlab::Database::SchemaCleaner.new(schema).clean(io) + end + end + + # Inform Rake that gitlab:schema:fix_structure_sql should be run every time rake db:structure:dump is run + Rake::Task['db:structure:dump'].enhance do + Rake::Task['gitlab:db:clean_structure_sql'].invoke + end end end diff --git a/scripts/schema_changed.sh b/scripts/schema_changed.sh index b5e510c2367..e8c120e92e1 100755 --- a/scripts/schema_changed.sh +++ b/scripts/schema_changed.sh @@ -1,14 +1,14 @@ #!/bin/sh schema_changed() { - if [ ! -z "$(git diff --name-only -- db/schema.rb)" ]; then - printf "db/schema.rb after rake db:migrate:reset is different from one in the repository" + if [ ! -z "$(git diff --name-only -- db/structure.sql)" ]; then + printf "db/structure.sql after rake db:migrate:reset is different from one in the repository" printf "The diff is as follows:\n" - diff=$(git diff -p --binary -- db/schema.rb) + diff=$(git diff -p --binary -- db/structure.sql) printf "%s" "$diff" exit 1 else - printf "db/schema.rb after rake db:migrate:reset matches one in the repository" + printf "db/structure.sql after rake db:migrate:reset matches one in the repository" fi } diff --git a/scripts/utils.sh b/scripts/utils.sh index c32be9c9438..d1f98bb3f62 100644 --- a/scripts/utils.sh +++ b/scripts/utils.sh @@ -20,7 +20,7 @@ function setup_db_user_only() { function setup_db() { setup_db_user_only - bundle exec rake db:drop db:create db:schema:load db:migrate + bundle exec rake db:drop db:create db:structure:load db:migrate bundle exec rake gitlab:db:setup_ee } diff --git a/spec/fixtures/gitlab/database/structure_example.sql b/spec/fixtures/gitlab/database/structure_example.sql new file mode 100644 index 00000000000..9f288e6067e --- /dev/null +++ b/spec/fixtures/gitlab/database/structure_example.sql @@ -0,0 +1,96 @@ +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +-- +-- Name: pg_trgm; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA public; + + +-- +-- Name: EXTENSION pg_trgm; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION pg_trgm IS 'text similarity measurement and index searching based on trigrams'; + + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: abuse_reports; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public.abuse_reports ( + id integer NOT NULL, + reporter_id integer, + user_id integer, + message text, + created_at timestamp without time zone, + updated_at timestamp without time zone, + message_html text, + cached_markdown_version integer +); + + +-- +-- Name: abuse_reports_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.abuse_reports_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + + +-- +-- Name: abuse_reports id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.abuse_reports ALTER COLUMN id SET DEFAULT nextval('public.abuse_reports_id_seq'::regclass); + + +-- +-- +-- Name: abuse_reports abuse_reports_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.abuse_reports + ADD CONSTRAINT abuse_reports_pkey PRIMARY KEY (id); + +-- +-- Name: index_abuse_reports_on_user_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_abuse_reports_on_user_id ON public.abuse_reports USING btree (user_id); + + + +INSERT INTO "schema_migrations" (version) VALUES +('20200305121159'), +('20200306095654'), +('20200306160521'), +('20200306170211'), +('20200306170321'), +('20200306170531'), +('20200309140540'), +('20200309195209'), +('20200309195710'), +('20200310132654'), +('20200310135823'); + + diff --git a/spec/fixtures/gitlab/database/structure_example_cleaned.sql b/spec/fixtures/gitlab/database/structure_example_cleaned.sql new file mode 100644 index 00000000000..78120fa6ce0 --- /dev/null +++ b/spec/fixtures/gitlab/database/structure_example_cleaned.sql @@ -0,0 +1,44 @@ +SET search_path=public; + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + +CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA public; + +CREATE TABLE public.abuse_reports ( + id integer NOT NULL, + reporter_id integer, + user_id integer, + message text, + created_at timestamp without time zone, + updated_at timestamp without time zone, + message_html text, + cached_markdown_version integer +); + +CREATE SEQUENCE public.abuse_reports_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER TABLE ONLY public.abuse_reports ALTER COLUMN id SET DEFAULT nextval('public.abuse_reports_id_seq'::regclass); + +ALTER TABLE ONLY public.abuse_reports + ADD CONSTRAINT abuse_reports_pkey PRIMARY KEY (id); + +CREATE INDEX index_abuse_reports_on_user_id ON public.abuse_reports USING btree (user_id); + +INSERT INTO "schema_migrations" (version) VALUES +('20200305121159'), +('20200306095654'), +('20200306160521'), +('20200306170211'), +('20200306170321'), +('20200306170531'), +('20200309140540'), +('20200309195209'), +('20200309195710'), +('20200310132654'), +('20200310135823'); + diff --git a/spec/lib/gitlab/danger/helper_spec.rb b/spec/lib/gitlab/danger/helper_spec.rb index 1c9df641655..4cb957f378c 100644 --- a/spec/lib/gitlab/danger/helper_spec.rb +++ b/spec/lib/gitlab/danger/helper_spec.rb @@ -229,6 +229,7 @@ describe Gitlab::Danger::Helper do 'ee/FOO_VERSION' | :unknown 'db/schema.rb' | :database + 'db/structure.sql' | :database 'db/migrate/foo' | :database 'db/post_migrate/foo' | :database 'ee/db/migrate/foo' | :database diff --git a/spec/lib/gitlab/database/schema_cleaner_spec.rb b/spec/lib/gitlab/database/schema_cleaner_spec.rb new file mode 100644 index 00000000000..ee9477156fb --- /dev/null +++ b/spec/lib/gitlab/database/schema_cleaner_spec.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Gitlab::Database::SchemaCleaner do + let(:example_schema) { fixture_file(File.join('gitlab', 'database', 'structure_example.sql')) } + let(:io) { StringIO.new } + + subject do + described_class.new(example_schema).clean(io) + io.string + end + + it 'removes comments on extensions' do + expect(subject).not_to include('COMMENT ON EXTENSION') + end + + it 'includes the plpgsql extension' do + expect(subject).to include('CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;') + end + + it 'sets the search_path' do + expect(subject.split("\n").first).to eq('SET search_path=public;') + end + + it 'cleans up the full schema as expected (blackbox test with example)' do + expected_schema = fixture_file(File.join('gitlab', 'database', 'structure_example_cleaned.sql')) + + expect(subject).to eq(expected_schema) + end +end diff --git a/spec/migrations/active_record/schema_spec.rb b/spec/migrations/active_record/schema_spec.rb index 086d6317c32..a3348424f47 100644 --- a/spec/migrations/active_record/schema_spec.rb +++ b/spec/migrations/active_record/schema_spec.rb @@ -2,27 +2,29 @@ require 'spec_helper' -# Check consistency of db/schema.rb version, migrations' timestamps, and the latest migration timestamp +# Check consistency of db/structure.sql version, migrations' timestamps, and the latest migration timestamp # stored in the database's schema_migrations table. describe ActiveRecord::Schema, schema: :latest do - let(:latest_migration_timestamp) do + let(:all_migrations) do migrations_paths = %w[db/migrate db/post_migrate] .map { |path| Rails.root.join(*path, '*') } migrations = Dir[*migrations_paths] - migrations.map { |migration| File.basename(migration).split('_').first.to_i }.max + migrations.map { |migration| File.basename(migration).split('_').first.to_i }.sort end - it '> schema version equals last migration timestamp' do - defined_schema_version = File.open(Rails.root.join('db', 'schema.rb')) do |file| - file.find { |line| line =~ /ActiveRecord::Schema.define/ } - end.match(/(\d{4}_\d{2}_\d{2}_\d{6})/)[0].to_i - - expect(defined_schema_version).to eq(latest_migration_timestamp) + let(:latest_migration_timestamp) do + all_migrations.max end it '> schema version should equal the latest migration timestamp stored in schema_migrations table' do expect(latest_migration_timestamp).to eq(ActiveRecord::Migrator.current_version.to_i) end + + it 'the schema_migrations table contains all schema versions' do + versions = ActiveRecord::Base.connection.execute('SELECT version FROM schema_migrations ORDER BY version').map { |m| Integer(m['version']) } + + expect(versions).to eq(all_migrations) + end end diff --git a/spec/tasks/gitlab/backup_rake_spec.rb b/spec/tasks/gitlab/backup_rake_spec.rb index 5e15ade492b..3213d00e70e 100644 --- a/spec/tasks/gitlab/backup_rake_spec.rb +++ b/spec/tasks/gitlab/backup_rake_spec.rb @@ -23,11 +23,7 @@ describe 'gitlab:app namespace rake task' do end before(:all) do - Rake.application.rake_require 'tasks/gitlab/helpers' - Rake.application.rake_require 'tasks/gitlab/backup' - Rake.application.rake_require 'tasks/gitlab/shell' - Rake.application.rake_require 'tasks/gitlab/db' - Rake.application.rake_require 'tasks/cache' + Rails.application.load_tasks # empty task as env is already loaded Rake::Task.define_task :environment diff --git a/spec/tasks/gitlab/db_rake_spec.rb b/spec/tasks/gitlab/db_rake_spec.rb index 49b9a572423..2e96f42a251 100644 --- a/spec/tasks/gitlab/db_rake_spec.rb +++ b/spec/tasks/gitlab/db_rake_spec.rb @@ -16,7 +16,7 @@ describe 'gitlab:db namespace rake task' do before do # Stub out db tasks allow(Rake::Task['db:migrate']).to receive(:invoke).and_return(true) - allow(Rake::Task['db:schema:load']).to receive(:invoke).and_return(true) + allow(Rake::Task['db:structure:load']).to receive(:invoke).and_return(true) allow(Rake::Task['db:seed_fu']).to receive(:invoke).and_return(true) end @@ -24,14 +24,14 @@ describe 'gitlab:db namespace rake task' do it 'invokes db:migrate when schema has already been loaded' do allow(ActiveRecord::Base.connection).to receive(:tables).and_return(%w[table1 table2]) expect(Rake::Task['db:migrate']).to receive(:invoke) - expect(Rake::Task['db:schema:load']).not_to receive(:invoke) + expect(Rake::Task['db:structure:load']).not_to receive(:invoke) expect(Rake::Task['db:seed_fu']).not_to receive(:invoke) expect { run_rake_task('gitlab:db:configure') }.not_to raise_error end it 'invokes db:shema:load and db:seed_fu when schema is not loaded' do allow(ActiveRecord::Base.connection).to receive(:tables).and_return([]) - expect(Rake::Task['db:schema:load']).to receive(:invoke) + expect(Rake::Task['db:structure:load']).to receive(:invoke) expect(Rake::Task['db:seed_fu']).to receive(:invoke) expect(Rake::Task['db:migrate']).not_to receive(:invoke) expect { run_rake_task('gitlab:db:configure') }.not_to raise_error @@ -39,7 +39,7 @@ describe 'gitlab:db namespace rake task' do it 'invokes db:shema:load and db:seed_fu when there is only a single table present' do allow(ActiveRecord::Base.connection).to receive(:tables).and_return(['default']) - expect(Rake::Task['db:schema:load']).to receive(:invoke) + expect(Rake::Task['db:structure:load']).to receive(:invoke) expect(Rake::Task['db:seed_fu']).to receive(:invoke) expect(Rake::Task['db:migrate']).not_to receive(:invoke) expect { run_rake_task('gitlab:db:configure') }.not_to raise_error @@ -48,7 +48,7 @@ describe 'gitlab:db namespace rake task' do it 'does not invoke any other rake tasks during an error' do allow(ActiveRecord::Base).to receive(:connection).and_raise(RuntimeError, 'error') expect(Rake::Task['db:migrate']).not_to receive(:invoke) - expect(Rake::Task['db:schema:load']).not_to receive(:invoke) + expect(Rake::Task['db:structure:load']).not_to receive(:invoke) expect(Rake::Task['db:seed_fu']).not_to receive(:invoke) expect { run_rake_task('gitlab:db:configure') }.to raise_error(RuntimeError, 'error') # unstub connection so that the database cleaner still works @@ -57,8 +57,8 @@ describe 'gitlab:db namespace rake task' do it 'does not invoke seed after a failed schema_load' do allow(ActiveRecord::Base.connection).to receive(:tables).and_return([]) - allow(Rake::Task['db:schema:load']).to receive(:invoke).and_raise(RuntimeError, 'error') - expect(Rake::Task['db:schema:load']).to receive(:invoke) + allow(Rake::Task['db:structure:load']).to receive(:invoke).and_raise(RuntimeError, 'error') + expect(Rake::Task['db:structure:load']).to receive(:invoke) expect(Rake::Task['db:seed_fu']).not_to receive(:invoke) expect(Rake::Task['db:migrate']).not_to receive(:invoke) expect { run_rake_task('gitlab:db:configure') }.to raise_error(RuntimeError, 'error') @@ -79,7 +79,7 @@ describe 'gitlab:db namespace rake task' do it 'adds post deployment migrations before schema load if the schema is not already loaded' do allow(ActiveRecord::Base.connection).to receive(:tables).and_return([]) expect(Gitlab::Database).to receive(:add_post_migrate_path_to_rails).and_call_original - expect(Rake::Task['db:schema:load']).to receive(:invoke) + expect(Rake::Task['db:structure:load']).to receive(:invoke) expect(Rake::Task['db:seed_fu']).to receive(:invoke) expect(Rake::Task['db:migrate']).not_to receive(:invoke) expect { run_rake_task('gitlab:db:configure') }.not_to raise_error @@ -90,7 +90,7 @@ describe 'gitlab:db namespace rake task' do allow(ActiveRecord::Base.connection).to receive(:tables).and_return(%w[table1 table2]) expect(Rake::Task['db:migrate']).to receive(:invoke) expect(Gitlab::Database).not_to receive(:add_post_migrate_path_to_rails) - expect(Rake::Task['db:schema:load']).not_to receive(:invoke) + expect(Rake::Task['db:structure:load']).not_to receive(:invoke) expect(Rake::Task['db:seed_fu']).not_to receive(:invoke) expect { run_rake_task('gitlab:db:configure') }.not_to raise_error expect(rails_paths['db/migrate'].include?(File.join(Rails.root, 'db', 'post_migrate'))).to be(false) |