Read about our upcoming Code of Conduct on this issue

schema.rb 123 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: 20190103140724) 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.boolean "protected_ci_variables", default: false, null: false
170
    t.string "runners_registration_token_encrypted"
171
    t.index ["usage_stats_set_by_user_id"], name: "index_application_settings_on_usage_stats_set_by_user_id", using: :btree
172
173
  end

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

185
  create_table "award_emoji", force: :cascade do |t|
186
187
188
189
    t.string "name"
    t.integer "user_id"
    t.integer "awardable_id"
    t.string "awardable_type"
190
191
    t.datetime "created_at"
    t.datetime "updated_at"
192
193
    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
194
195
  end

196
197
198
199
200
201
202
203
  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
204
205
    t.index ["group_id"], name: "index_badges_on_group_id", using: :btree
    t.index ["project_id"], name: "index_badges_on_project_id", using: :btree
206
207
  end

208
209
210
211
212
213
  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"
214
215
216
217
    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
218
219
220
221
222
223
224
225
  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"
226
227
228
229
    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
230
231
  end

Douglas Barbosa Alexandre's avatar
Douglas Barbosa Alexandre committed
232
  create_table "boards", force: :cascade do |t|
Felipe Artur's avatar
Felipe Artur committed
233
    t.integer "project_id"
Douglas Barbosa Alexandre's avatar
Douglas Barbosa Alexandre committed
234
235
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
Felipe Artur's avatar
Felipe Artur committed
236
    t.integer "group_id"
237
238
    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
239
240
  end

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

254
255
256
  create_table "chat_names", force: :cascade do |t|
    t.integer "user_id", null: false
    t.integer "service_id", null: false
257
    t.string "team_id", null: false
258
    t.string "team_domain"
259
    t.string "chat_id", null: false
260
    t.string "chat_name"
261
    t.datetime "last_used_at"
262
263
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
264
265
    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
266
  end
267

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

277
278
279
280
281
  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"
282
    t.index ["build_id", "chunk_index"], name: "index_ci_build_trace_chunks_on_build_id_and_chunk_index", unique: true, using: :btree
283
284
  end

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

  create_table "ci_build_trace_sections", force: :cascade do |t|
Alessio Caiazza's avatar
Alessio Caiazza committed
292
    t.integer "project_id", null: false
293
294
    t.datetime_with_timezone "date_start", null: false
    t.datetime_with_timezone "date_end", null: false
295
296
    t.bigint "byte_start", null: false
    t.bigint "byte_end", null: false
297
298
    t.integer "build_id", null: false
    t.integer "section_name_id", null: false
299
300
301
    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
302
303
  end

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

372
373
  create_table "ci_builds_metadata", force: :cascade do |t|
    t.integer "build_id", null: false
374
    t.integer "project_id", null: false
375
    t.integer "timeout"
376
    t.integer "timeout_source", default: 1, null: false
377
378
    t.jsonb "config_options"
    t.jsonb "config_variables"
379
380
    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
381
382
  end

383
384
385
386
387
  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"
388
    t.index ["build_id"], name: "index_ci_builds_runner_session_on_build_id", unique: true, using: :btree
389
390
  end

Shinya Maeda's avatar
fix    
Shinya Maeda committed
391
  create_table "ci_group_variables", force: :cascade do |t|
392
393
394
395
396
    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
397
398
    t.integer "group_id", null: false
    t.boolean "protected", default: false, null: false
399
400
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
401
    t.index ["group_id", "key"], name: "index_ci_group_variables_on_group_id_and_key", unique: true, using: :btree
402
403
  end

404
405
  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
406
    t.integer "job_id", null: false
407
    t.integer "file_type", null: false
408
    t.integer "file_store"
409
    t.bigint "size"
410
411
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
412
    t.datetime_with_timezone "expire_at"
413
    t.string "file"
414
    t.binary "file_sha256"
415
    t.integer "file_format", limit: 2
416
    t.integer "file_location", limit: 2
417
418
419
420
    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
421
422
  end

Shinya Maeda's avatar
fix    
Shinya Maeda committed
423
  create_table "ci_pipeline_schedule_variables", force: :cascade do |t|
Shinya Maeda's avatar
Shinya Maeda committed
424
425
426
427
428
    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
429
    t.integer "pipeline_schedule_id", null: false
430
431
    t.datetime_with_timezone "created_at"
    t.datetime_with_timezone "updated_at"
432
    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
433
434
  end

435
436
437
438
439
440
441
442
443
  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
444
445
    t.datetime "created_at"
    t.datetime "updated_at"
446
    t.index ["next_run_at", "active"], name: "index_ci_pipeline_schedules_on_next_run_at_and_active", using: :btree
447
    t.index ["owner_id"], name: "index_ci_pipeline_schedules_on_owner_id", using: :btree
448
    t.index ["project_id"], name: "index_ci_pipeline_schedules_on_project_id", using: :btree
Douwe Maan's avatar
Douwe Maan committed
449
450
  end

Shinya Maeda's avatar
init    
Shinya Maeda committed
451
452
453
454
455
456
457
  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
458
    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
459
460
  end

Kamil Trzciński's avatar
Kamil Trzciński committed
461
  create_table "ci_pipelines", force: :cascade do |t|
462
463
464
    t.string "ref"
    t.string "sha"
    t.string "before_sha"
Douwe Maan's avatar
Douwe Maan committed
465
466
    t.datetime "created_at"
    t.datetime "updated_at"
467
468
    t.boolean "tag", default: false
    t.text "yaml_errors"
Douwe Maan's avatar
Douwe Maan committed
469
    t.datetime "committed_at"
Kamil Trzciński's avatar
Kamil Trzciński committed
470
    t.integer "project_id"
471
    t.string "status"
472
473
    t.datetime "started_at"
    t.datetime "finished_at"
474
475
    t.integer "duration"
    t.integer "user_id"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
476
    t.integer "lock_version"
477
    t.integer "auto_canceled_by_id"
478
    t.integer "pipeline_schedule_id"
479
    t.integer "source"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
480
    t.integer "config_source"
481
    t.boolean "protected"
482
    t.integer "failure_reason"
Shinya Maeda's avatar
Shinya Maeda committed
483
    t.integer "iid"
Shinya Maeda's avatar
Shinya Maeda committed
484
    t.integer "merge_request_id"
485
    t.index ["auto_canceled_by_id"], name: "index_ci_pipelines_on_auto_canceled_by_id", using: :btree
Shinya Maeda's avatar
Shinya Maeda committed
486
    t.index ["merge_request_id"], name: "index_ci_pipelines_on_merge_request_id", where: "(merge_request_id IS NOT NULL)", using: :btree
487
488
    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
Andreas Brandl's avatar
Andreas Brandl committed
489
    t.index ["project_id", "ref", "id"], name: "index_ci_pipelines_on_project_idandrefandiddesc", order: { id: :desc }, using: :btree
490
491
492
493
494
495
496
    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
497
498
  end

499
  create_table "ci_runner_namespaces", force: :cascade do |t|
Alexis Reigel's avatar
Alexis Reigel committed
500
    t.integer "runner_id"
501
    t.integer "namespace_id"
502
503
    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
504
505
  end

Valery Sizov's avatar
Valery Sizov committed
506
  create_table "ci_runner_projects", force: :cascade do |t|
507
    t.integer "runner_id", null: false
Douwe Maan's avatar
Douwe Maan committed
508
509
    t.datetime "created_at"
    t.datetime "updated_at"
Kamil Trzciński's avatar
Kamil Trzciński committed
510
    t.integer "project_id"
511
512
    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
513
514
  end

Valery Sizov's avatar
Valery Sizov committed
515
  create_table "ci_runners", force: :cascade do |t|
516
    t.string "token"
Douwe Maan's avatar
Douwe Maan committed
517
518
    t.datetime "created_at"
    t.datetime "updated_at"
519
    t.string "description"
Douwe Maan's avatar
Douwe Maan committed
520
    t.datetime "contacted_at"
521
522
523
524
525
526
527
528
529
    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
530
    t.integer "access_level", default: 0, null: false
531
    t.string "ip_address"
532
    t.integer "maximum_timeout"
533
    t.integer "runner_type", limit: 2, null: false
534
    t.string "token_encrypted"
535
536
537
538
539
    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
540
541
  end

542
543
544
  create_table "ci_stages", force: :cascade do |t|
    t.integer "project_id"
    t.integer "pipeline_id"
Douwe Maan's avatar
Douwe Maan committed
545
546
    t.datetime "created_at"
    t.datetime "updated_at"
547
    t.string "name"
548
    t.integer "status"
549
    t.integer "lock_version"
550
    t.integer "position"
551
552
553
554
    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
555
556
  end

Valery Sizov's avatar
Valery Sizov committed
557
  create_table "ci_trigger_requests", force: :cascade do |t|
558
559
    t.integer "trigger_id", null: false
    t.text "variables"
Douwe Maan's avatar
Douwe Maan committed
560
561
    t.datetime "created_at"
    t.datetime "updated_at"
562
    t.integer "commit_id"
563
    t.index ["commit_id"], name: "index_ci_trigger_requests_on_commit_id", using: :btree
564
    t.index ["trigger_id"], name: "index_ci_trigger_requests_on_trigger_id", using: :btree
Douwe Maan's avatar
Douwe Maan committed
565
566
  end

Valery Sizov's avatar
Valery Sizov committed
567
  create_table "ci_triggers", force: :cascade do |t|
568
    t.string "token"
Douwe Maan's avatar
Douwe Maan committed
569
570
    t.datetime "created_at"
    t.datetime "updated_at"
Kamil Trzciński's avatar
Kamil Trzciński committed
571
    t.integer "project_id"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
572
573
    t.integer "owner_id"
    t.string "description"
Shinya Maeda's avatar
Shinya Maeda committed
574
    t.string "ref"
575
    t.index ["owner_id"], name: "index_ci_triggers_on_owner_id", using: :btree
576
    t.index ["project_id"], name: "index_ci_triggers_on_project_id", using: :btree
Douwe Maan's avatar
Douwe Maan committed
577
578
  end

Valery Sizov's avatar
Valery Sizov committed
579
  create_table "ci_variables", force: :cascade do |t|
580
    t.string "key", null: false
581
582
583
584
    t.text "value"
    t.text "encrypted_value"
    t.string "encrypted_value_salt"
    t.string "encrypted_value_iv"
585
    t.integer "project_id", null: false
586
    t.boolean "protected", default: false, null: false
587
    t.string "environment_scope", default: "*", null: false
588
    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
589
590
  end

591
592
593
  create_table "cluster_groups", force: :cascade do |t|
    t.integer "cluster_id", null: false
    t.integer "group_id", null: false
594
595
    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
596
597
  end

Shinya Maeda's avatar
Shinya Maeda committed
598
599
  create_table "cluster_platforms_kubernetes", force: :cascade do |t|
    t.integer "cluster_id", null: false
Kamil Trzcinski's avatar
Kamil Trzcinski committed
600
601
602
    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
603
604
605
606
607
608
609
    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"
610
    t.integer "authorization_type", limit: 2
611
    t.index ["cluster_id"], name: "index_cluster_platforms_kubernetes_on_cluster_id", unique: true, using: :btree
Shinya Maeda's avatar
Shinya Maeda committed
612
613
614
615
616
  end

  create_table "cluster_projects", force: :cascade do |t|
    t.integer "project_id", null: false
    t.integer "cluster_id", null: false
617
618
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
619
620
    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
621
622
623
624
625
  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
626
627
628
    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
629
630
631
632
633
634
635
636
    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"
637
    t.boolean "legacy_abac", default: false, null: false
638
    t.index ["cluster_id"], name: "index_cluster_providers_gcp_on_cluster_id", unique: true, using: :btree
Shinya Maeda's avatar
Shinya Maeda committed
639
640
641
  end

  create_table "clusters", force: :cascade do |t|
642
    t.integer "user_id"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
643
644
645
646
    t.integer "provider_type"
    t.integer "platform_type"
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
647
648
    t.boolean "enabled", default: true
    t.string "name", null: false
649
    t.string "environment_scope", default: "*", null: false
650
    t.integer "cluster_type", limit: 2, default: 3, null: false
651
652
    t.index ["enabled"], name: "index_clusters_on_enabled", using: :btree
    t.index ["user_id"], name: "index_clusters_on_user_id", using: :btree
Amit Rathi's avatar
Amit Rathi committed
653
654
  end

655
656
657
658
659
660
661
662
  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"
663
    t.index ["cluster_id"], name: "index_clusters_applications_cert_managers_on_cluster_id", unique: true, using: :btree
664
665
  end

666
667
668
669
670
671
672
  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"
673
674
675
    t.text "encrypted_ca_key"
    t.text "encrypted_ca_key_iv"
    t.text "ca_cert"
676
    t.index ["cluster_id"], name: "index_clusters_applications_helm_on_cluster_id", unique: true, using: :btree
677
  end
678

Kamil Trzcinski's avatar
Kamil Trzcinski committed
679
680
681
682
683
684
685
686
687
  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"
688
    t.string "external_ip"
689
    t.index ["cluster_id"], name: "index_clusters_applications_ingress_on_cluster_id", unique: true, using: :btree
Kamil Trzcinski's avatar
Kamil Trzcinski committed
690
691
  end

692
  create_table "clusters_applications_jupyter", force: :cascade do |t|
693
    t.integer "cluster_id", null: false
694
    t.integer "oauth_application_id"
695
696
697
698
699
    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
700
    t.text "status_reason"
701
702
    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
703
704
  end

Chris Baumbauer's avatar
Chris Baumbauer committed
705
706
707
708
709
710
  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
711
    t.string "hostname"
Chris Baumbauer's avatar
Chris Baumbauer committed
712
    t.text "status_reason"
713
    t.string "external_ip"
714
    t.index ["cluster_id"], name: "index_clusters_applications_knative_on_cluster_id", unique: true, using: :btree
Chris Baumbauer's avatar
Chris Baumbauer committed
715
716
  end

717
718
719
720
721
722
723
  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
724
    t.index ["cluster_id"], name: "index_clusters_applications_prometheus_on_cluster_id", unique: true, using: :btree
725
726
  end

727
728
729
730
731
732
733
734
  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"
735
    t.boolean "privileged", default: true, null: false
736
737
    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
738
739
  end

740
741
742
743
744
745
746
747
748
749
  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"
750
751
752
753
    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
754
755
  end

756
  create_table "container_repositories", force: :cascade do |t|
757
758
759
760
    t.integer "project_id", null: false
    t.string "name", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
761
762
    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
763
764
  end

765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
  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
788
789
790
791
792
793
794
795
796
797
    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
798
  end
Douwe Maan's avatar
Douwe Maan committed
799

Valery Sizov's avatar
Valery Sizov committed
800
  create_table "deploy_keys_projects", force: :cascade do |t|
801
802
    t.integer "deploy_key_id", null: false
    t.integer "project_id", null: false
803
804
    t.datetime "created_at"
    t.datetime "updated_at"
805
    t.boolean "can_push", default: false, null: false
806
    t.index ["project_id"], name: "index_deploy_keys_projects_on_project_id", using: :btree
807
  end
808

809
810
  create_table "deploy_tokens", force: :cascade do |t|
    t.boolean "revoked", default: false
Kamil Trzciński's avatar
Kamil Trzciński committed
811
812
    t.boolean "read_repository", default: false, null: false
    t.boolean "read_registry", default: false, null: false
813
    t.datetime_with_timezone "expires_at", null: false
Mayra Cabrera's avatar
Mayra Cabrera committed
814
    t.datetime_with_timezone "created_at", null: false
Kamil Trzciński's avatar
Kamil Trzciński committed
815
816
    t.string "name", null: false
    t.string "token", null: false
817
818
    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
819
820
  end

821
  create_table "deployments", force: :cascade do |t|
Valery Sizov's avatar
Valery Sizov committed
822
823
824
825
826
827
    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
828
    t.integer "user_id"
Valery Sizov's avatar
Valery Sizov committed
829
830
    t.integer "deployable_id"
    t.string "deployable_type"
831
832
    t.datetime "created_at"
    t.datetime "updated_at"
Kamil Trzcinski's avatar
Kamil Trzcinski committed
833
    t.string "on_stop"
834
    t.integer "status", limit: 2, null: false
Amit Rathi's avatar
Amit Rathi committed
835
    t.datetime_with_timezone "finished_at"
836
837
838
839
840
841
842
843
844
    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
845
846
  end

Valery Sizov's avatar
Valery Sizov committed
847
  create_table "emails", force: :cascade do |t|
848
849
    t.integer "user_id", null: false
    t.string "email", null: false
850
851
    t.datetime "created_at"
    t.datetime "updated_at"
852
    t.string "confirmation_token"
853
854
    t.datetime_with_timezone "confirmed_at"
    t.datetime_with_timezone "confirmation_sent_at"
855
856
857
    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
858
859
  end

860
  create_table "environments", force: :cascade do |t|
861
    t.integer "project_id", null: false
862
    t.string "name", null: false
863
864
    t.datetime "created_at"
    t.datetime "updated_at"
865
866
    t.string "external_url"
    t.string "environment_type"
867
    t.string "state", default: "available", null: false
Nick Thomas's avatar
Nick Thomas committed
868
    t.string "slug", null: false
869
870
    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
871
872
  end

Valery Sizov's avatar
Valery Sizov committed
873
  create_table "events", force: :cascade do |t|
874
875
876
    t.integer "project_id"
    t.integer "author_id", null: false
    t.integer "target_id"
877
878
    t.datetime_with_timezone "created_at", null: false
    t.datetime_with_timezone "updated_at", null: false
879
880
    t.integer "action", limit: 2, null: false
    t.string "target_type"
881
882
    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
883
    t.index ["project_id", "created_at"], name: "index_events_on_project_id_and_created_at", using: :btree
884
885
    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
886
887
  end

888
889
890
891
892
893
  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
894
    t.index ["feature_key", "key", "value"], name: "index_feature_gates_on_feature_key_and_key_and_value", unique: true, using: :btree
895
896
897
898
899
900
  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
901
    t.index ["key"], name: "index_features_on_key", unique: true, using: :btree
902
903
  end

904
905
906
907
  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"
908
    t.index ["fork_network_id"], name: "index_fork_network_members_on_fork_network_id", using: :btree
909
    t.index ["forked_from_project_id"], name: "index_fork_network_members_on_forked_from_project_id", using: :btree
910
    t.index ["project_id"], name: "index_fork_network_members_on_project_id", unique: true, using: :btree
911
912
  end

913
914
915
  create_table "fork_networks", force: :cascade do |t|
    t.integer "root_project_id"
    t.string "deleted_root_project_name"
916
    t.index ["root_project_id"], name: "index_fork_networks_on_root_project_id", unique: true, using: :btree
917
918
  end

Valery Sizov's avatar
Valery Sizov committed
919
  create_table "forked_project_links", force: :cascade do |t|
920
921
    t.integer "forked_to_project_id", null: false
    t.integer "forked_from_project_id", null: false
922
923
    t.datetime "created_at"
    t.datetime "updated_at"
924
    t.index ["forked_to_project_id"], name: "index_forked_project_links_on_forked_to_project_id", unique: true, using: :btree
925
926
  end

927
  create_table "gpg_key_subkeys", force: :cascade do |t|