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

13
ActiveRecord::Schema.define(version: 20181126153547) do
14

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

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

29
  create_table "appearances", force: :cascade do |t|
30
31
    t.string "title", null: false
    t.text "description", null: false
32
33
    t.string "header_logo"
    t.string "logo"
34
35
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
36
    t.text "description_html"
37
    t.integer "cached_markdown_version"
38
39
    t.text "new_project_guidelines"
    t.text "new_project_guidelines_html"
40
    t.string "favicon"
41
42
  end

43
44
45
46
47
48
  create_table "application_setting_terms", force: :cascade do |t|
    t.integer "cached_markdown_version"
    t.text "terms", null: false
    t.text "terms_html"
  end

Valery Sizov's avatar
Valery Sizov committed
49
  create_table "application_settings", force: :cascade do |t|
50
51
52
53
    t.integer "default_projects_limit"
    t.boolean "signup_enabled"
    t.boolean "gravatar_enabled"
    t.text "sign_in_text"
54
55
    t.datetime "created_at"
    t.datetime "updated_at"
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
    t.string "home_page_url"
    t.integer "default_branch_protection", default: 2
    t.text "restricted_visibility_levels"
    t.boolean "version_check_enabled", default: true
    t.integer "max_attachment_size", default: 10, null: false
    t.integer "default_project_visibility"
    t.integer "default_snippet_visibility"
    t.text "domain_whitelist"
    t.boolean "user_oauth_applications", default: true
    t.string "after_sign_out_path"
    t.integer "session_expire_delay", default: 10080, null: false
    t.text "import_sources"
    t.text "help_page_text"
    t.string "admin_notification_email"
    t.boolean "shared_runners_enabled", default: true, null: false
    t.integer "max_artifacts_size", default: 100, null: false
    t.string "runners_registration_token"
73
    t.integer "max_pages_size", default: 100, null: false
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
    t.boolean "require_two_factor_authentication", default: false
    t.integer "two_factor_grace_period", default: 48
    t.boolean "metrics_enabled", default: false
    t.string "metrics_host", default: "localhost"
    t.integer "metrics_pool_size", default: 16
    t.integer "metrics_timeout", default: 10
    t.integer "metrics_method_call_threshold", default: 10
    t.boolean "recaptcha_enabled", default: false
    t.string "recaptcha_site_key"
    t.string "recaptcha_private_key"
    t.integer "metrics_port", default: 8089
    t.boolean "akismet_enabled", default: false
    t.string "akismet_api_key"
    t.integer "metrics_sample_interval", default: 15
    t.boolean "sentry_enabled", default: false
    t.string "sentry_dsn"
    t.boolean "email_author_in_body", default: false
    t.integer "default_group_visibility"
    t.boolean "repository_checks_enabled", default: false
    t.text "shared_runners_text"
    t.integer "metrics_packet_size", default: 1
    t.text "disabled_oauth_sign_in_sources"
    t.string "health_check_access_token"
    t.boolean "send_user_confirmation_email", default: false
    t.integer "container_registry_token_expire_delay", default: 5
    t.text "after_sign_up_text"
Valery Sizov's avatar
Valery Sizov committed
100
    t.boolean "user_default_external", default: false, null: false
101
    t.string "repository_storages", default: "default"
102
103
104
    t.string "enabled_git_access_protocol"
    t.boolean "domain_blacklist_enabled", default: false
    t.text "domain_blacklist"
105
    t.boolean "usage_ping_enabled", default: true, null: false
106
107
108
109
    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"
110
    t.integer "rsa_key_restriction", default: 0, null: false
111
    t.integer "dsa_key_restriction", default: -1, null: false
112
113
    t.integer "ecdsa_key_restriction", default: 0, null: false
    t.integer "ed25519_key_restriction", default: 0, null: false
Jacob Vosmaer's avatar
Jacob Vosmaer committed
114
115
116
117
118
    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
119
    t.boolean "html_emails_enabled", default: true
120
121
    t.string "plantuml_url"
    t.boolean "plantuml_enabled"
122
    t.integer "terminal_max_session_time", default: 0, null: false
123
124
125
    t.integer "unique_ips_limit_per_user"
    t.integer "unique_ips_limit_time_window"
    t.boolean "unique_ips_limit_enabled", default: false, null: false
126
127
    t.string "default_artifacts_expire_in", default: "0", null: false
    t.string "uuid"
128
    t.decimal "polling_interval_multiplier", default: "1.0", null: false
129
    t.integer "cached_markdown_version"
130
131
    t.boolean "clientside_sentry_enabled", default: false, null: false
    t.string "clientside_sentry_dsn"
132
    t.boolean "prometheus_metrics_enabled", default: true, null: false
133
134
    t.boolean "help_page_hide_commercial_content", default: false
    t.string "help_page_support_url"
135
    t.integer "performance_bar_allowed_group_id"
136
    t.boolean "hashed_storage_enabled", default: false, null: false
137
    t.boolean "project_export_enabled", default: true, null: false
138
    t.boolean "auto_devops_enabled", default: true, null: false
139
140
141
142
143
144
145
146
147
    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
148
149
    t.boolean "password_authentication_enabled_for_web"
    t.boolean "password_authentication_enabled_for_git", default: true
150
151
152
    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
153
    t.boolean "authorized_keys_enabled", default: true, null: false
154
    t.string "auto_devops_domain"
155
    t.boolean "pages_domain_verification_enabled", default: true, null: false
156
    t.string "user_default_internal_regex"
157
    t.boolean "allow_local_requests_from_hooks_and_services", default: false, null: false
158
    t.boolean "enforce_terms", default: false
159
    t.boolean "mirror_available", default: true, null: false
160
    t.boolean "hide_third_party_offers", default: false, null: false
161
    t.boolean "instance_statistics_visibility_private", default: false, null: false
Phil Hughes's avatar
Phil Hughes committed
162
    t.boolean "web_ide_clientside_preview_enabled", default: false, null: false
163
    t.boolean "user_show_add_ssh_key_message", default: true, null: false
164
    t.integer "usage_stats_set_by_user_id"
165
    t.integer "receive_max_input_size"
166
    t.integer "diff_max_patch_bytes", default: 102400, null: false
167
    t.integer "archive_builds_in_seconds"
168
    t.string "commit_email_hostname"
169
    t.string "runners_registration_token_encrypted"
170
    t.index ["usage_stats_set_by_user_id"], name: "index_application_settings_on_usage_stats_set_by_user_id", using: :btree
171
172
  end

Valery Sizov's avatar
Valery Sizov committed
173
  create_table "audit_events", force: :cascade do |t|
174
175
176
177
178
    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"
179
180
    t.datetime "created_at"
    t.datetime "updated_at"
181
    t.index ["entity_id", "entity_type"], name: "index_audit_events_on_entity_id_and_entity_type", using: :btree
182
183
  end

184
  create_table "award_emoji", force: :cascade do |t|
185
186
187
188
    t.string "name"
    t.integer "user_id"
    t.integer "awardable_id"
    t.string "awardable_type"
189
190
    t.datetime "created_at"
    t.datetime "updated_at"
191
192
    t.index ["awardable_type", "awardable_id"], name: "index_award_emoji_on_awardable_type_and_awardable_id", using: :btree
    t.index ["user_id", "name"], name: "index_award_emoji_on_user_id_and_name", using: :btree
193
194
  end

195
196
197
198
199
200
201
202
  create_table "badges", force: :cascade do |t|
    t.string "link_url", null: false
    t.string "image_url", null: false
    t.integer "project_id"
    t.integer "group_id"
    t.string "type", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
203
204
    t.index ["group_id"], name: "index_badges_on_group_id", using: :btree
    t.index ["project_id"], name: "index_badges_on_project_id", using: :btree
205
206
  end

207
208
209
210
211
212
  create_table "board_group_recent_visits", id: :bigserial, 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"
213
214
215
216
    t.index ["board_id"], name: "index_board_group_recent_visits_on_board_id", using: :btree
    t.index ["group_id"], name: "index_board_group_recent_visits_on_group_id", using: :btree
    t.index ["user_id", "group_id", "board_id"], name: "index_board_group_recent_visits_on_user_group_and_board", unique: true, using: :btree
    t.index ["user_id"], name: "index_board_group_recent_visits_on_user_id", using: :btree
217
218
219
220
221
222
223
224
  end

  create_table "board_project_recent_visits", id: :bigserial, 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"
225
226
227
228
    t.index ["board_id"], name: "index_board_project_recent_visits_on_board_id", using: :btree
    t.index ["project_id"], name: "index_board_project_recent_visits_on_project_id", using: :btree
    t.index ["user_id", "project_id", "board_id"], name: "index_board_project_recent_visits_on_user_project_and_board", unique: true, using: :btree
    t.index ["user_id"], name: "index_board_project_recent_visits_on_user_id", using: :btree
229
230
  end

Douglas Barbosa Alexandre's avatar
Douglas Barbosa Alexandre committed
231
  create_table "boards", force: :cascade do |t|
Felipe Artur's avatar
Felipe Artur committed
232
    t.integer "project_id"
Douglas Barbosa Alexandre's avatar
Douglas Barbosa Alexandre committed
233
234
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
Felipe Artur's avatar
Felipe Artur committed
235
    t.integer "group_id"
236
237
    t.index ["group_id"], name: "index_boards_on_group_id", using: :btree
    t.index ["project_id"], name: "index_boards_on_project_id", using: :btree
Douglas Barbosa Alexandre's avatar
Douglas Barbosa Alexandre committed
238
239
  end

Valery Sizov's avatar
Valery Sizov committed
240
  create_table "broadcast_messages", force: :cascade do |t|
241
    t.text "message", null: false
242
243
244
245
    t.datetime "starts_at", null: false
    t.datetime "ends_at", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
246
247
    t.string "color"
    t.string "font"
248
    t.text "message_html", null: false
249
    t.integer "cached_markdown_version"
250
    t.index ["starts_at", "ends_at", "id"], name: "index_broadcast_messages_on_starts_at_and_ends_at_and_id", using: :btree
251
  end
252

253
254
255
  create_table "chat_names", force: :cascade do |t|
    t.integer "user_id", null: false
    t.integer "service_id", null: false
256
    t.string "team_id", null: false
257
    t.string "team_domain"
258
    t.string "chat_id", null: false
259
    t.string "chat_name"
260
    t.datetime "last_used_at"
261
262
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
263
264
    t.index ["service_id", "team_id", "chat_id"], name: "index_chat_names_on_service_id_and_team_id_and_chat_id", unique: true, using: :btree
    t.index ["user_id", "service_id"], name: "index_chat_names_on_user_id_and_service_id", unique: true, using: :btree
265
  end
266

267
  create_table "chat_teams", force: :cascade do |t|
268
    t.integer "namespace_id", null: false
269
270
271
272
    t.string "team_id"
    t.string "name"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
273
    t.index ["namespace_id"], name: "index_chat_teams_on_namespace_id", unique: true, using: :btree
Douwe Maan's avatar
Douwe Maan committed
274
275
  end

276
277
278
279
280
  create_table "ci_build_trace_chunks", id: :bigserial, force: :cascade do |t|
    t.integer "build_id", null: false
    t.integer "chunk_index", null: false
    t.integer "data_store", null: false
    t.binary "raw_data"
281
    t.index ["build_id", "chunk_index"], name: "index_ci_build_trace_chunks_on_build_id_and_chunk_index", unique: true, using: :btree
282
283
  end

284
285
286
  create_table "ci_build_trace_section_names", force: :cascade do |t|
    t.integer "project_id", null: false
    t.string "name", null: false
287
    t.index ["project_id", "name"], name: "index_ci_build_trace_section_names_on_project_id_and_name", unique: true, using: :btree
288
289
290
  end

  create_table "ci_build_trace_sections", force: :cascade do |t|
Alessio Caiazza's avatar
Alessio Caiazza committed
291
    t.integer "project_id", null: false
292
293
    t.datetime_with_timezone "date_start", null: false
    t.datetime_with_timezone "date_end", null: false
294
295
    t.bigint "byte_start", null: false
    t.bigint "byte_end", null: false
296
297
    t.integer "build_id", null: false
    t.integer "section_name_id", null: false
298
299
300
    t.index ["build_id", "section_name_id"], name: "index_ci_build_trace_sections_on_build_id_and_section_name_id", unique: true, using: :btree
    t.index ["project_id"], name: "index_ci_build_trace_sections_on_project_id", using: :btree
    t.index ["section_name_id"], name: "index_ci_build_trace_sections_on_section_name_id", using: :btree
301
302
  end

Valery Sizov's avatar
Valery Sizov committed
303
  create_table "ci_builds", force: :cascade do |t|
304
    t.string "status"
Douwe Maan's avatar
Douwe Maan committed
305
    t.datetime "finished_at"
306
    t.text "trace"
Douwe Maan's avatar
Douwe Maan committed
307
308
309
    t.datetime "created_at"
    t.datetime "updated_at"
    t.datetime "started_at"
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
    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"
Kamil Trzciński's avatar
Kamil Trzciński committed
327
    t.integer "project_id"
328
329
    t.text "artifacts_metadata"
    t.integer "erased_by_id"
330
    t.datetime "erased_at"
331
    t.datetime "artifacts_expire_at"
332
    t.string "environment"
333
    t.bigint "artifacts_size"
334
335
    t.string "when"
    t.text "yaml_variables"
336
    t.datetime "queued_at"
337
    t.string "token"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
338
    t.integer "lock_version"
339
    t.string "coverage_regex"
340
    t.integer "auto_canceled_by_id"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
341
    t.boolean "retried"
342
    t.integer "stage_id"
343
344
    t.integer "artifacts_file_store"
    t.integer "artifacts_metadata_store"
345
    t.boolean "protected"
346
    t.integer "failure_reason"
347
    t.datetime_with_timezone "scheduled_at"
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
    t.index ["artifacts_expire_at"], name: "index_ci_builds_on_artifacts_expire_at", where: "(artifacts_file <> ''::text)", using: :btree
    t.index ["auto_canceled_by_id"], name: "index_ci_builds_on_auto_canceled_by_id", using: :btree
    t.index ["commit_id", "stage_idx", "created_at"], name: "index_ci_builds_on_commit_id_and_stage_idx_and_created_at", using: :btree
    t.index ["commit_id", "status", "type"], name: "index_ci_builds_on_commit_id_and_status_and_type", using: :btree
    t.index ["commit_id", "type", "name", "ref"], name: "index_ci_builds_on_commit_id_and_type_and_name_and_ref", using: :btree
    t.index ["commit_id", "type", "ref"], name: "index_ci_builds_on_commit_id_and_type_and_ref", using: :btree
    t.index ["id"], name: "partial_index_ci_builds_on_id_with_legacy_artifacts", where: "(artifacts_file <> ''::text)", using: :btree
    t.index ["project_id", "id"], name: "index_ci_builds_on_project_id_and_id", using: :btree
    t.index ["protected"], name: "index_ci_builds_on_protected", using: :btree
    t.index ["runner_id"], name: "index_ci_builds_on_runner_id", using: :btree
    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))", using: :btree
    t.index ["stage_id", "stage_idx"], name: "tmp_build_stage_position_index", where: "(stage_idx IS NOT NULL)", using: :btree
    t.index ["stage_id"], name: "index_ci_builds_on_stage_id", using: :btree
    t.index ["status", "type", "runner_id"], name: "index_ci_builds_on_status_and_type_and_runner_id", using: :btree
    t.index ["token"], name: "index_ci_builds_on_token", unique: true, using: :btree
    t.index ["updated_at"], name: "index_ci_builds_on_updated_at", using: :btree
    t.index ["user_id"], name: "index_ci_builds_on_user_id", using: :btree
Douwe Maan's avatar
Douwe Maan committed
365
366
  end

367
368
  create_table "ci_builds_metadata", force: :cascade do |t|
    t.integer "build_id", null: false
369
    t.integer "project_id", null: false
370
    t.integer "timeout"
371
    t.integer "timeout_source", default: 1, null: false
372
373
    t.index ["build_id"], name: "index_ci_builds_metadata_on_build_id", unique: true, using: :btree
    t.index ["project_id"], name: "index_ci_builds_metadata_on_project_id", using: :btree
374
375
  end

376
377
378
379
380
  create_table "ci_builds_runner_session", id: :bigserial, force: :cascade do |t|
    t.integer "build_id", null: false
    t.string "url", null: false
    t.string "certificate"
    t.string "authorization"
381
    t.index ["build_id"], name: "index_ci_builds_runner_session_on_build_id", unique: true, using: :btree
382
383
  end

Shinya Maeda's avatar
fix    
Shinya Maeda committed
384
  create_table "ci_group_variables", force: :cascade do |t|
385
386
387
388
389
    t.string "key", null: false
    t.text "value"
    t.text "encrypted_value"
    t.string "encrypted_value_salt"
    t.string "encrypted_value_iv"
Shinya Maeda's avatar
fix    
Shinya Maeda committed
390
391
    t.integer "group_id", null: false
    t.boolean "protected", default: false, null: false
392
393
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
394
    t.index ["group_id", "key"], name: "index_ci_group_variables_on_group_id_and_key", unique: true, using: :btree
395
396
  end

397
398
  create_table "ci_job_artifacts", force: :cascade do |t|
    t.integer "project_id", null: false
Zeger-Jan van de Weg's avatar
Zeger-Jan van de Weg committed
399
    t.integer "job_id", null: false
400
    t.integer "file_type", null: false
401
    t.integer "file_store"
402
    t.bigint "size"
403
404
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
405
    t.datetime_with_timezone "expire_at"
406
    t.string "file"
407
    t.binary "file_sha256"
408
    t.integer "file_format", limit: 2
409
    t.integer "file_location", limit: 2
410
411
412
413
    t.index ["expire_at", "job_id"], name: "index_ci_job_artifacts_on_expire_at_and_job_id", using: :btree
    t.index ["file_store"], name: "index_ci_job_artifacts_on_file_store", using: :btree
    t.index ["job_id", "file_type"], name: "index_ci_job_artifacts_on_job_id_and_file_type", unique: true, using: :btree
    t.index ["project_id"], name: "index_ci_job_artifacts_on_project_id", using: :btree
414
415
  end

Shinya Maeda's avatar
fix    
Shinya Maeda committed
416
  create_table "ci_pipeline_schedule_variables", force: :cascade do |t|
Shinya Maeda's avatar
Shinya Maeda committed
417
418
419
420
421
    t.string "key", null: false
    t.text "value"
    t.text "encrypted_value"
    t.string "encrypted_value_salt"
    t.string "encrypted_value_iv"
Shinya Maeda's avatar
fix    
Shinya Maeda committed
422
    t.integer "pipeline_schedule_id", null: false
423
424
    t.datetime_with_timezone "created_at"
    t.datetime_with_timezone "updated_at"
425
    t.index ["pipeline_schedule_id", "key"], name: "index_ci_pipeline_schedule_variables_on_schedule_id_and_key", unique: true, using: :btree
Shinya Maeda's avatar
Shinya Maeda committed
426
427
  end

428
429
430
431
432
433
434
435
436
  create_table "ci_pipeline_schedules", force: :cascade do |t|
    t.string "description"
    t.string "ref"
    t.string "cron"
    t.string "cron_timezone"
    t.datetime "next_run_at"
    t.integer "project_id"
    t.integer "owner_id"
    t.boolean "active", default: true
Douwe Maan's avatar
Douwe Maan committed
437
438
    t.datetime "created_at"
    t.datetime "updated_at"
439
    t.index ["next_run_at", "active"], name: "index_ci_pipeline_schedules_on_next_run_at_and_active", using: :btree
440
    t.index ["owner_id"], name: "index_ci_pipeline_schedules_on_owner_id", using: :btree
441
    t.index ["project_id"], name: "index_ci_pipeline_schedules_on_project_id", using: :btree
Douwe Maan's avatar
Douwe Maan committed
442
443
  end

Shinya Maeda's avatar
init    
Shinya Maeda committed
444
445
446
447
448
449
450
  create_table "ci_pipeline_variables", force: :cascade do |t|
    t.string "key", null: false
    t.text "value"
    t.text "encrypted_value"
    t.string "encrypted_value_salt"
    t.string "encrypted_value_iv"
    t.integer "pipeline_id", null: false
451
    t.index ["pipeline_id", "key"], name: "index_ci_pipeline_variables_on_pipeline_id_and_key", unique: true, using: :btree
Shinya Maeda's avatar
init    
Shinya Maeda committed
452
453
  end

Kamil Trzciński's avatar
Kamil Trzciński committed
454
  create_table "ci_pipelines", force: :cascade do |t|
455
456
457
    t.string "ref"
    t.string "sha"
    t.string "before_sha"
Douwe Maan's avatar
Douwe Maan committed
458
459
    t.datetime "created_at"
    t.datetime "updated_at"
460
461
    t.boolean "tag", default: false
    t.text "yaml_errors"
Douwe Maan's avatar
Douwe Maan committed
462
    t.datetime "committed_at"
Kamil Trzciński's avatar
Kamil Trzciński committed
463
    t.integer "project_id"
464
    t.string "status"
465
466
    t.datetime "started_at"
    t.datetime "finished_at"
467
468
    t.integer "duration"
    t.integer "user_id"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
469
    t.integer "lock_version"
470
    t.integer "auto_canceled_by_id"
471
    t.integer "pipeline_schedule_id"
472
    t.integer "source"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
473
    t.integer "config_source"
474
    t.boolean "protected"
475
    t.integer "failure_reason"
Shinya Maeda's avatar
Shinya Maeda committed
476
    t.integer "iid"
477
478
479
480
481
482
483
484
485
486
    t.index ["auto_canceled_by_id"], name: "index_ci_pipelines_on_auto_canceled_by_id", using: :btree
    t.index ["pipeline_schedule_id"], name: "index_ci_pipelines_on_pipeline_schedule_id", using: :btree
    t.index ["project_id", "iid"], name: "index_ci_pipelines_on_project_id_and_iid", unique: true, where: "(iid IS NOT NULL)", using: :btree
    t.index ["project_id", "ref", "status", "id"], name: "index_ci_pipelines_on_project_id_and_ref_and_status_and_id", using: :btree
    t.index ["project_id", "sha"], name: "index_ci_pipelines_on_project_id_and_sha", using: :btree
    t.index ["project_id", "source"], name: "index_ci_pipelines_on_project_id_and_source", using: :btree
    t.index ["project_id", "status", "config_source"], name: "index_ci_pipelines_on_project_id_and_status_and_config_source", using: :btree
    t.index ["project_id"], name: "index_ci_pipelines_on_project_id", using: :btree
    t.index ["status"], name: "index_ci_pipelines_on_status", using: :btree
    t.index ["user_id"], name: "index_ci_pipelines_on_user_id", using: :btree
Douwe Maan's avatar
Douwe Maan committed
487
488
  end

489
  create_table "ci_runner_namespaces", force: :cascade do |t|
Alexis Reigel's avatar
Alexis Reigel committed
490
    t.integer "runner_id"
491
    t.integer "namespace_id"
492
493
    t.index ["namespace_id"], name: "index_ci_runner_namespaces_on_namespace_id", using: :btree
    t.index ["runner_id", "namespace_id"], name: "index_ci_runner_namespaces_on_runner_id_and_namespace_id", unique: true, using: :btree
Alexis Reigel's avatar
Alexis Reigel committed
494
495
  end

Valery Sizov's avatar
Valery Sizov committed
496
  create_table "ci_runner_projects", force: :cascade do |t|
497
    t.integer "runner_id", null: false
Douwe Maan's avatar
Douwe Maan committed
498
499
    t.datetime "created_at"
    t.datetime "updated_at"
Kamil Trzciński's avatar
Kamil Trzciński committed
500
    t.integer "project_id"
501
502
    t.index ["project_id"], name: "index_ci_runner_projects_on_project_id", using: :btree
    t.index ["runner_id"], name: "index_ci_runner_projects_on_runner_id", using: :btree
Douwe Maan's avatar
Douwe Maan committed
503
504
  end

Valery Sizov's avatar
Valery Sizov committed
505
  create_table "ci_runners", force: :cascade do |t|
506
    t.string "token"
Douwe Maan's avatar
Douwe Maan committed
507
508
    t.datetime "created_at"
    t.datetime "updated_at"
509
    t.string "description"
Douwe Maan's avatar
Douwe Maan committed
510
    t.datetime "contacted_at"
511
512
513
514
515
516
517
518
519
    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
520
    t.integer "access_level", default: 0, null: false
521
    t.string "ip_address"
522
    t.integer "maximum_timeout"
523
    t.integer "runner_type", limit: 2, null: false
524
    t.string "token_encrypted"
525
526
527
528
529
    t.index ["contacted_at"], name: "index_ci_runners_on_contacted_at", using: :btree
    t.index ["is_shared"], name: "index_ci_runners_on_is_shared", using: :btree
    t.index ["locked"], name: "index_ci_runners_on_locked", using: :btree
    t.index ["runner_type"], name: "index_ci_runners_on_runner_type", using: :btree
    t.index ["token"], name: "index_ci_runners_on_token", using: :btree
Douwe Maan's avatar
Douwe Maan committed
530
531
  end

532
533
534
  create_table "ci_stages", force: :cascade do |t|
    t.integer "project_id"
    t.integer "pipeline_id"
Douwe Maan's avatar
Douwe Maan committed
535
536
    t.datetime "created_at"
    t.datetime "updated_at"
537
    t.string "name"
538
    t.integer "status"
539
    t.integer "lock_version"
540
    t.integer "position"
541
542
543
544
    t.index ["pipeline_id", "name"], name: "index_ci_stages_on_pipeline_id_and_name", unique: true, using: :btree
    t.index ["pipeline_id", "position"], name: "index_ci_stages_on_pipeline_id_and_position", using: :btree
    t.index ["pipeline_id"], name: "index_ci_stages_on_pipeline_id", using: :btree
    t.index ["project_id"], name: "index_ci_stages_on_project_id", using: :btree
Douwe Maan's avatar
Douwe Maan committed
545
546
  end

Valery Sizov's avatar
Valery Sizov committed
547
  create_table "ci_trigger_requests", force: :cascade do |t|
548
549
    t.integer "trigger_id", null: false
    t.text "variables"
Douwe Maan's avatar
Douwe Maan committed
550
551
    t.datetime "created_at"
    t.datetime "updated_at"
552
    t.integer "commit_id"
553
    t.index ["commit_id"], name: "index_ci_trigger_requests_on_commit_id", using: :btree
554
    t.index ["trigger_id"], name: "index_ci_trigger_requests_on_trigger_id", using: :btree
Douwe Maan's avatar
Douwe Maan committed
555
556
  end

Valery Sizov's avatar
Valery Sizov committed
557
  create_table "ci_triggers", force: :cascade do |t|
558
    t.string "token"
Douwe Maan's avatar
Douwe Maan committed
559
560
    t.datetime "created_at"
    t.datetime "updated_at"
Kamil Trzciński's avatar
Kamil Trzciński committed
561
    t.integer "project_id"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
562
563
    t.integer "owner_id"
    t.string "description"
Shinya Maeda's avatar
Shinya Maeda committed
564
    t.string "ref"
565
    t.index ["owner_id"], name: "index_ci_triggers_on_owner_id", using: :btree
566
    t.index ["project_id"], name: "index_ci_triggers_on_project_id", using: :btree
Douwe Maan's avatar
Douwe Maan committed
567
568
  end

Valery Sizov's avatar
Valery Sizov committed
569
  create_table "ci_variables", force: :cascade do |t|
570
    t.string "key", null: false
571
572
573
574
    t.text "value"
    t.text "encrypted_value"
    t.string "encrypted_value_salt"
    t.string "encrypted_value_iv"
575
    t.integer "project_id", null: false
576
    t.boolean "protected", default: false, null: false
577
    t.string "environment_scope", default: "*", null: false
578
    t.index ["project_id", "key", "environment_scope"], name: "index_ci_variables_on_project_id_and_key_and_environment_scope", unique: true, using: :btree
Douwe Maan's avatar
Douwe Maan committed
579
580
  end

581
582
583
  create_table "cluster_groups", force: :cascade do |t|
    t.integer "cluster_id", null: false
    t.integer "group_id", null: false
584
585
    t.index ["cluster_id", "group_id"], name: "index_cluster_groups_on_cluster_id_and_group_id", unique: true, using: :btree
    t.index ["group_id"], name: "index_cluster_groups_on_group_id", using: :btree
586
587
  end

Shinya Maeda's avatar
Shinya Maeda committed
588
589
  create_table "cluster_platforms_kubernetes", force: :cascade do |t|
    t.integer "cluster_id", null: false
Kamil Trzcinski's avatar
Kamil Trzcinski committed
590
591
592
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.text "api_url"
Shinya Maeda's avatar
Shinya Maeda committed
593
594
595
596
597
598
599
    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"
600
    t.integer "authorization_type", limit: 2
601
    t.index ["cluster_id"], name: "index_cluster_platforms_kubernetes_on_cluster_id", unique: true, using: :btree
Shinya Maeda's avatar
Shinya Maeda committed
602
603
604
605
606
  end

  create_table "cluster_projects", force: :cascade do |t|
    t.integer "project_id", null: false
    t.integer "cluster_id", null: false
607
608
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
609
610
    t.index ["cluster_id"], name: "index_cluster_projects_on_cluster_id", using: :btree
    t.index ["project_id"], name: "index_cluster_projects_on_project_id", using: :btree
Shinya Maeda's avatar
Shinya Maeda committed
611
612
613
614
615
  end

  create_table "cluster_providers_gcp", force: :cascade do |t|
    t.integer "cluster_id", null: false
    t.integer "status"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
616
617
618
    t.integer "num_nodes", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
Shinya Maeda's avatar
Shinya Maeda committed
619
620
621
622
623
624
625
626
    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"
627
    t.boolean "legacy_abac", default: true, null: false
628
    t.index ["cluster_id"], name: "index_cluster_providers_gcp_on_cluster_id", unique: true, using: :btree
Shinya Maeda's avatar
Shinya Maeda committed
629
630
631
  end

  create_table "clusters", force: :cascade do |t|
632
    t.integer "user_id"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
633
634
635
636
    t.integer "provider_type"
    t.integer "platform_type"
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
637
638
    t.boolean "enabled", default: true
    t.string "name", null: false
639
    t.string "environment_scope", default: "*", null: false
640
    t.integer "cluster_type", limit: 2, default: 3, null: false
641
642
    t.index ["enabled"], name: "index_clusters_on_enabled", using: :btree
    t.index ["user_id"], name: "index_clusters_on_user_id", using: :btree
Shinya Maeda's avatar
Shinya Maeda committed
643
644
  end

645
646
647
648
649
650
651
652
  create_table "clusters_applications_cert_managers", 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"
653
    t.index ["cluster_id"], name: "index_clusters_applications_cert_managers_on_cluster_id", unique: true, using: :btree
654
655
  end

656
657
658
659
660
661
662
  create_table "clusters_applications_helm", 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.text "status_reason"
663
664
665
    t.text "encrypted_ca_key"
    t.text "encrypted_ca_key_iv"
    t.text "ca_cert"
666
    t.index ["cluster_id"], name: "index_clusters_applications_helm_on_cluster_id", unique: true, using: :btree
667
  end
668

Kamil Trzcinski's avatar
Kamil Trzcinski committed
669
670
671
672
673
674
675
676
677
  create_table "clusters_applications_ingress", 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.integer "ingress_type", null: false
    t.string "version", null: false
    t.string "cluster_ip"
    t.text "status_reason"
678
    t.string "external_ip"
679
    t.index ["cluster_id"], name: "index_clusters_applications_ingress_on_cluster_id", unique: true, using: :btree
Kamil Trzcinski's avatar
Kamil Trzcinski committed
680
681
  end

682
  create_table "clusters_applications_jupyter", force: :cascade do |t|
683
    t.integer "cluster_id", null: false
684
    t.integer "oauth_application_id"
685
686
687
688
689
    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
690
    t.text "status_reason"
691
692
    t.index ["cluster_id"], name: "index_clusters_applications_jupyter_on_cluster_id", unique: true, using: :btree
    t.index ["oauth_application_id"], name: "index_clusters_applications_jupyter_on_oauth_application_id", using: :btree
693
694
  end

Chris Baumbauer's avatar
Chris Baumbauer committed
695
696
697
698
699
700
  create_table "clusters_applications_knative", 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
701
    t.string "hostname"
Chris Baumbauer's avatar
Chris Baumbauer committed
702
    t.text "status_reason"
703
    t.string "external_ip"
704
    t.index ["cluster_id"], name: "index_clusters_applications_knative_on_cluster_id", unique: true, using: :btree
Chris Baumbauer's avatar
Chris Baumbauer committed
705
706
  end

707
708
709
710
711
712
713
  create_table "clusters_applications_prometheus", force: :cascade do |t|
    t.integer "cluster_id", null: false
    t.integer "status", null: false
    t.string "version", null: false
    t.text "status_reason"
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
714
    t.index ["cluster_id"], name: "index_clusters_applications_prometheus_on_cluster_id", unique: true, using: :btree
715
716
  end

717
718
719
720
721
722
723
724
  create_table "clusters_applications_runners", force: :cascade do |t|
    t.integer "cluster_id", null: false
    t.integer "runner_id"
    t.integer "status", null: false
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
    t.string "version", null: false
    t.text "status_reason"
725
    t.boolean "privileged", default: true, null: false
726
727
    t.index ["cluster_id"], name: "index_clusters_applications_runners_on_cluster_id", unique: true, using: :btree
    t.index ["runner_id"], name: "index_clusters_applications_runners_on_runner_id", using: :btree
728
729
  end

730
731
732
733
734
735
736
737
738
739
  create_table "clusters_kubernetes_namespaces", id: :bigserial, 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"
740
741
742
743
    t.index ["cluster_id", "namespace"], name: "kubernetes_namespaces_cluster_and_namespace", unique: true, using: :btree
    t.index ["cluster_id"], name: "index_clusters_kubernetes_namespaces_on_cluster_id", using: :btree
    t.index ["cluster_project_id"], name: "index_clusters_kubernetes_namespaces_on_cluster_project_id", using: :btree
    t.index ["project_id"], name: "index_clusters_kubernetes_namespaces_on_project_id", using: :btree
744
745
  end

746
  create_table "container_repositories", force: :cascade do |t|
747
748
749
750
    t.integer "project_id", null: false
    t.string "name", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
751
752
    t.index ["project_id", "name"], name: "index_container_repositories_on_project_id_and_name", unique: true, using: :btree
    t.index ["project_id"], name: "index_container_repositories_on_project_id", using: :btree
Andre Guedes's avatar
Andre Guedes committed
753
754
  end

755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
  create_table "conversational_development_index_metrics", force: :cascade do |t|
    t.float "leader_issues", null: false
    t.float "instance_issues", null: false
    t.float "leader_notes", null: false
    t.float "instance_notes", null: false
    t.float "leader_milestones", null: false
    t.float "instance_milestones", null: false
    t.float "leader_boards", null: false
    t.float "instance_boards", null: false
    t.float "leader_merge_requests", null: false
    t.float "instance_merge_requests", null: false
    t.float "leader_ci_pipelines", null: false
    t.float "instance_ci_pipelines", null: false
    t.float "leader_environments", null: false
    t.float "instance_environments", null: false
    t.float "leader_deployments", null: false
    t.float "instance_deployments", null: false
    t.float "leader_projects_prometheus_active", null: false
    t.float "instance_projects_prometheus_active", null: false
    t.float "leader_service_desk_issues", null: false
    t.float "instance_service_desk_issues", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
778
779
780
781
782
783
784
785
786
787
    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
788
  end
Douwe Maan's avatar
Douwe Maan committed
789

Valery Sizov's avatar
Valery Sizov committed
790
  create_table "deploy_keys_projects", force: :cascade do |t|
791
792
    t.integer "deploy_key_id", null: false
    t.integer "project_id", null: false
793
794
    t.datetime "created_at"
    t.datetime "updated_at"
795
    t.boolean "can_push", default: false, null: false
796
    t.index ["project_id"], name: "index_deploy_keys_projects_on_project_id", using: :btree
797
  end
798

799
800
  create_table "deploy_tokens", force: :cascade do |t|
    t.boolean "revoked", default: false
Kamil Trzciński's avatar
Kamil Trzciński committed
801
802
    t.boolean "read_repository", default: false, null: false
    t.boolean "read_registry", default: false, null: false
803
    t.datetime_with_timezone "expires_at", null: false
Mayra Cabrera's avatar
Mayra Cabrera committed
804
    t.datetime_with_timezone "created_at", null: false
Kamil Trzciński's avatar
Kamil Trzciński committed
805
806
    t.string "name", null: false
    t.string "token", null: false
807
808
    t.index ["token", "expires_at", "id"], name: "index_deploy_tokens_on_token_and_expires_at_and_id", where: "(revoked IS FALSE)", using: :btree
    t.index ["token"], name: "index_deploy_tokens_on_token", unique: true, using: :btree
809
810
  end

811
  create_table "deployments", force: :cascade do |t|
Valery Sizov's avatar
Valery Sizov committed
812
813
814
815
816
817
    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
818
    t.integer "user_id"
Valery Sizov's avatar
Valery Sizov committed
819
820
    t.integer "deployable_id"
    t.string "deployable_type"
821
822
    t.datetime "created_at"
    t.datetime "updated_at"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
823
    t.string "on_stop"
824
    t.integer "status", limit: 2, null: false
825
    t.datetime_with_timezone "finished_at"
826
827
828
829
830
831
832
833
834
    t.index ["created_at"], name: "index_deployments_on_created_at", using: :btree
    t.index ["deployable_type", "deployable_id"], name: "index_deployments_on_deployable_type_and_deployable_id", using: :btree
    t.index ["environment_id", "id"], name: "index_deployments_on_environment_id_and_id", using: :btree
    t.index ["environment_id", "iid", "project_id"], name: "index_deployments_on_environment_id_and_iid_and_project_id", using: :btree
    t.index ["environment_id", "status"], name: "index_deployments_on_environment_id_and_status", using: :btree
    t.index ["id"], name: "partial_index_deployments_for_legacy_successful_deployments", where: "((finished_at IS NULL) AND (status = 2))", using: :btree
    t.index ["project_id", "iid"], name: "index_deployments_on_project_id_and_iid", unique: true, using: :btree
    t.index ["project_id", "status", "created_at"], name: "index_deployments_on_project_id_and_status_and_created_at", using: :btree
    t.index ["project_id", "status"], name: "index_deployments_on_project_id_and_status", using: :btree
835
836
  end

Valery Sizov's avatar
Valery Sizov committed
837
  create_table "emails", force: :cascade do |t|
838
839
    t.integer "user_id", null: false
    t.string "email", null: false
840
841
    t.datetime "created_at"
    t.datetime "updated_at"
842
    t.string "confirmation_token"
843
844
    t.datetime_with_timezone "confirmed_at"
    t.datetime_with_timezone "confirmation_sent_at"
845
846
847
    t.index ["confirmation_token"], name: "index_emails_on_confirmation_token", unique: true, using: :btree
    t.index ["email"], name: "index_emails_on_email", unique: true, using: :btree
    t.index ["user_id"], name: "index_emails_on_user_id", using: :btree
848
849
  end

850
  create_table "environments", force: :cascade do |t|
851
    t.integer "project_id", null: false
852
    t.string "name", null: false
853
854
    t.datetime "created_at"
    t.datetime "updated_at"
855
856
    t.string "external_url"
    t.string "environment_type"
857
    t.string "state", default: "available", null: false
Nick Thomas's avatar
Nick Thomas committed
858
    t.string "slug", null: false
859
860
    t.index ["project_id", "name"], name: "index_environments_on_project_id_and_name", unique: true, using: :btree
    t.index ["project_id", "slug"], name: "index_environments_on_project_id_and_slug", unique: true, using: :btree
861
862
  end

Valery Sizov's avatar
Valery Sizov committed
863
  create_table "events", force: :cascade do |t|
864
865
866
    t.integer "project_id"
    t.integer "author_id", null: false
    t.integer "target_id"
867
868
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
869
870
    t.integer "action", limit: 2, null: false
    t.string "target_type"
871
872
    t.index ["action"], name: "index_events_on_action", using: :btree
    t.index ["author_id", "project_id"], name: "index_events_on_author_id_and_project_id", using: :btree
873
    t.index ["project_id", "created_at"], name: "index_events_on_project_id_and_created_at", using: :btree
874
875
    t.index ["project_id", "id"], name: "index_events_on_project_id_and_id", using: :btree
    t.index ["target_type", "target_id"], name: "index_events_on_target_type_and_target_id", using: :btree
876
877
  end

878
879
880
881
882
883
  create_table "feature_gates", force: :cascade do |t|
    t.string "feature_key", null: false
    t.string "key", null: false
    t.string "value"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
884
    t.index ["feature_key", "key", "value"], name: "index_feature_gates_on_feature_key_and_key_and_value", unique: true, using: :btree
885
886
887
888
889
890
  end

  create_table "features", force: :cascade do |t|
    t.string "key", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
891
    t.index ["key"], name: "index_features_on_key", unique: true, using: :btree
892
893
  end

894
895
896
897
  create_table "fork_network_members", force: :cascade do |t|
    t.integer "fork_network_id", null: false
    t.integer "project_id", null: false
    t.integer "forked_from_project_id"
898
    t.index ["fork_network_id"], name: "index_fork_network_members_on_fork_network_id", using: :btree
899
    t.index ["forked_from_project_id"], name: "index_fork_network_members_on_forked_from_project_id", using: :btree
900
    t.index ["project_id"], name: "index_fork_network_members_on_project_id", unique: true, using: :btree
901
902
  end

903
904
905
  create_table "fork_networks", force: :cascade do |t|
    t.integer "root_project_id"
    t.string "deleted_root_project_name"
906
    t.index ["root_project_id"], name: "index_fork_networks_on_root_project_id", unique: true, using: :btree
907
908
  end

Valery Sizov's avatar
Valery Sizov committed
909
  create_table "forked_project_links", force: :cascade do |t|
910
911
    t.integer "forked_to_project_id", null: false
    t.integer "forked_from_project_id", null: false
912
913
    t.datetime "created_at"
    t.datetime "updated_at"
914
    t.index ["forked_to_project_id"], name: "index_forked_project_links_on_forked_to_project_id", unique: true, using: :btree
915
916
  end