Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Tatuya Kamada
gitlab-ce
Commits
d5b673da
Commit
d5b673da
authored
Nov 17, 2016
by
James Lopez
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
more refactoring and added some auth checks
parent
9c995725
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
670 additions
and
813 deletions
+670
-813
app/controllers/projects/cycle_analytics/events_controller.rb
...controllers/projects/cycle_analytics/events_controller.rb
+1
-1
db/schema.rb
db/schema.rb
+507
-687
lib/gitlab/cycle_analytics/base_event.rb
lib/gitlab/cycle_analytics/base_event.rb
+23
-13
lib/gitlab/cycle_analytics/code_event.rb
lib/gitlab/cycle_analytics/code_event.rb
+20
-13
lib/gitlab/cycle_analytics/event_config.rb
lib/gitlab/cycle_analytics/event_config.rb
+0
-16
lib/gitlab/cycle_analytics/events.rb
lib/gitlab/cycle_analytics/events.rb
+8
-8
lib/gitlab/cycle_analytics/events_query.rb
lib/gitlab/cycle_analytics/events_query.rb
+1
-1
lib/gitlab/cycle_analytics/issue_event.rb
lib/gitlab/cycle_analytics/issue_event.rb
+19
-11
lib/gitlab/cycle_analytics/plan_event.rb
lib/gitlab/cycle_analytics/plan_event.rb
+27
-27
lib/gitlab/cycle_analytics/production_event.rb
lib/gitlab/cycle_analytics/production_event.rb
+18
-10
lib/gitlab/cycle_analytics/review_event.rb
lib/gitlab/cycle_analytics/review_event.rb
+19
-11
lib/gitlab/cycle_analytics/staging_event.rb
lib/gitlab/cycle_analytics/staging_event.rb
+13
-7
lib/gitlab/cycle_analytics/test_event.rb
lib/gitlab/cycle_analytics/test_event.rb
+13
-7
spec/lib/gitlab/cycle_analytics/events_spec.rb
spec/lib/gitlab/cycle_analytics/events_spec.rb
+1
-1
No files found.
app/controllers/projects/cycle_analytics/events_controller.rb
View file @
d5b673da
...
...
@@ -50,7 +50,7 @@ module Projects
end
def
options
@options
||=
{
from:
start_date
(
events_params
)
}
@options
||=
{
from:
start_date
(
events_params
)
,
current_user:
current_user
}
end
def
events_params
...
...
db/schema.rb
View file @
d5b673da
...
...
@@ -13,142 +13,107 @@
ActiveRecord
::
Schema
.
define
(
version:
20161109150329
)
do
# These are extensions that must be enabled in order to support this database
enable_extension
"plpgsql"
enable_extension
"pg_trgm"
create_table
"abuse_reports"
,
force: :cascade
do
|
t
|
t
.
integer
"reporter_id"
,
limit:
4
t
.
integer
"user_id"
,
limit:
4
t
.
text
"message"
,
limit:
65535
t
.
integer
"reporter_id"
t
.
integer
"user_id"
t
.
text
"message"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
text
"message_html"
,
limit:
65535
t
.
text
"message_html"
end
create_table
"appearances"
,
force: :cascade
do
|
t
|
t
.
string
"title"
,
limit:
255
t
.
text
"description"
,
limit:
65535
t
.
string
"logo"
,
limit:
255
t
.
integer
"updated_by"
,
limit:
4
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"header_logo"
,
limit:
255
t
.
text
"description_html"
,
limit:
65535
t
.
string
"title"
t
.
text
"description"
t
.
string
"header_logo"
t
.
string
"logo"
t
.
datetime
"created_at"
,
null:
false
t
.
datetime
"updated_at"
,
null:
false
t
.
text
"description_html"
end
create_table
"application_settings"
,
force: :cascade
do
|
t
|
t
.
integer
"default_projects_limit"
,
limit:
4
t
.
integer
"default_projects_limit"
t
.
boolean
"signup_enabled"
t
.
boolean
"signin_enabled"
t
.
boolean
"gravatar_enabled"
t
.
text
"sign_in_text"
,
limit:
65535
t
.
text
"sign_in_text"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"home_page_url"
,
limit:
255
t
.
integer
"default_branch_protection"
,
limit:
4
,
default:
2
t
.
text
"help_text"
,
limit:
65535
t
.
text
"restricted_visibility_levels"
,
limit:
65535
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"
,
limit:
4
,
default:
10
,
null:
false
t
.
integer
"default_project_visibility"
,
limit:
4
t
.
integer
"default_snippet_visibility"
,
limit:
4
t
.
text
"domain_whitelist"
,
limit:
65535
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"
,
limit:
255
t
.
integer
"session_expire_delay"
,
limit:
4
,
default:
10080
,
null:
false
t
.
text
"import_sources"
,
limit:
65535
t
.
text
"help_page_text"
,
limit:
65535
t
.
string
"admin_notification_email"
,
limit:
255
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"
,
limit:
4
,
default:
100
,
null:
false
t
.
string
"runners_registration_token"
,
limit:
255
t
.
integer
"max_pages_size"
,
limit:
4
,
default:
100
,
null:
false
t
.
integer
"max_artifacts_size"
,
default:
100
,
null:
false
t
.
string
"runners_registration_token"
t
.
boolean
"require_two_factor_authentication"
,
default:
false
t
.
integer
"two_factor_grace_period"
,
limit:
4
,
default:
48
t
.
integer
"two_factor_grace_period"
,
default:
48
t
.
boolean
"metrics_enabled"
,
default:
false
t
.
string
"metrics_host"
,
limit:
255
,
default:
"localhost"
t
.
integer
"metrics_pool_size"
,
limit:
4
,
default:
16
t
.
integer
"metrics_timeout"
,
limit:
4
,
default:
10
t
.
integer
"metrics_method_call_threshold"
,
limit:
4
,
default:
10
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"
,
limit:
255
t
.
string
"recaptcha_private_key"
,
limit:
255
t
.
integer
"metrics_port"
,
limit:
4
,
default:
8089
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"
,
limit:
255
t
.
integer
"metrics_sample_interval"
,
limit:
4
,
default:
15
t
.
string
"akismet_api_key"
t
.
integer
"metrics_sample_interval"
,
default:
15
t
.
boolean
"sentry_enabled"
,
default:
false
t
.
string
"sentry_dsn"
,
limit:
255
t
.
string
"sentry_dsn"
t
.
boolean
"email_author_in_body"
,
default:
false
t
.
integer
"default_group_visibility"
,
limit:
4
t
.
integer
"default_group_visibility"
t
.
boolean
"repository_checks_enabled"
,
default:
false
t
.
text
"shared_runners_text"
,
limit:
65535
t
.
integer
"metrics_packet_size"
,
limit:
4
,
default:
1
t
.
text
"disabled_oauth_sign_in_sources"
,
limit:
65535
t
.
string
"health_check_access_token"
,
limit:
255
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"
,
limit:
4
,
default:
5
t
.
text
"after_sign_up_text"
,
limit:
65535
t
.
integer
"container_registry_token_expire_delay"
,
default:
5
t
.
text
"after_sign_up_text"
t
.
boolean
"user_default_external"
,
default:
false
,
null:
false
t
.
boolean
"elasticsearch_indexing"
,
default:
false
,
null:
false
t
.
boolean
"elasticsearch_search"
,
default:
false
,
null:
false
t
.
string
"elasticsearch_host"
,
limit:
255
,
default:
"localhost"
t
.
string
"elasticsearch_port"
,
limit:
255
,
default:
"9200"
t
.
string
"repository_storages"
,
limit:
255
,
default:
"default"
t
.
string
"enabled_git_access_protocol"
,
limit:
255
t
.
string
"repository_storages"
,
default:
"default"
t
.
string
"enabled_git_access_protocol"
t
.
boolean
"domain_blacklist_enabled"
,
default:
false
t
.
text
"domain_blacklist"
,
limit:
65535
t
.
boolean
"usage_ping_enabled"
,
default:
true
,
null:
false
t
.
text
"domain_blacklist"
t
.
boolean
"koding_enabled"
t
.
string
"koding_url"
,
limit:
255
t
.
integer
"repository_size_limit"
,
limit:
4
,
default:
0
t
.
text
"sign_in_text_html"
,
limit:
65535
t
.
text
"help_page_text_html"
,
limit:
65535
t
.
text
"shared_runners_text_html"
,
limit:
65535
t
.
text
"after_sign_up_text_html"
,
limit:
65535
t
.
boolean
"user_activity_enabled"
,
default:
true
,
null:
false
t
.
string
"koding_url"
t
.
text
"sign_in_text_html"
t
.
text
"help_page_text_html"
t
.
text
"shared_runners_text_html"
t
.
text
"after_sign_up_text_html"
t
.
boolean
"housekeeping_enabled"
,
default:
true
,
null:
false
t
.
boolean
"housekeeping_bitmaps_enabled"
,
default:
true
,
null:
false
t
.
integer
"housekeeping_incremental_repack_period"
,
limit:
4
,
default:
10
,
null:
false
t
.
integer
"housekeeping_full_repack_period"
,
limit:
4
,
default:
50
,
null:
false
t
.
integer
"housekeeping_gc_period"
,
limit:
4
,
default:
200
,
null:
false
t
.
integer
"housekeeping_incremental_repack_period"
,
default:
10
,
null:
false
t
.
integer
"housekeeping_full_repack_period"
,
default:
50
,
null:
false
t
.
integer
"housekeeping_gc_period"
,
default:
200
,
null:
false
t
.
boolean
"sidekiq_throttling_enabled"
,
default:
false
t
.
string
"sidekiq_throttling_queues"
,
limit:
255
t
.
decimal
"sidekiq_throttling_factor"
,
precision:
10
end
create_table
"approvals"
,
force: :cascade
do
|
t
|
t
.
integer
"merge_request_id"
,
limit:
4
,
null:
false
t
.
integer
"user_id"
,
limit:
4
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
end
create_table
"approver_groups"
,
force: :cascade
do
|
t
|
t
.
integer
"target_id"
,
limit:
4
,
null:
false
t
.
string
"target_type"
,
limit:
255
,
null:
false
t
.
integer
"group_id"
,
limit:
4
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
end
add_index
"approver_groups"
,
[
"group_id"
],
name:
"index_approver_groups_on_group_id"
,
using: :btree
add_index
"approver_groups"
,
[
"target_id"
,
"target_type"
],
name:
"index_approver_groups_on_target_id_and_target_type"
,
using: :btree
create_table
"approvers"
,
force: :cascade
do
|
t
|
t
.
integer
"target_id"
,
limit:
4
,
null:
false
t
.
string
"target_type"
,
limit:
255
t
.
integer
"user_id"
,
limit:
4
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"sidekiq_throttling_queues"
t
.
decimal
"sidekiq_throttling_factor"
end
add_index
"approvers"
,
[
"target_id"
,
"target_type"
],
name:
"index_approvers_on_target_id_and_target_type"
,
using: :btree
add_index
"approvers"
,
[
"user_id"
],
name:
"index_approvers_on_user_id"
,
using: :btree
create_table
"audit_events"
,
force: :cascade
do
|
t
|
t
.
integer
"author_id"
,
limit:
4
,
null:
false
t
.
string
"type"
,
limit:
255
,
null:
false
t
.
integer
"entity_id"
,
limit:
4
,
null:
false
t
.
string
"entity_type"
,
limit:
255
,
null:
false
t
.
text
"details"
,
limit:
65535
t
.
integer
"author_id"
,
null:
false
t
.
string
"type"
,
null:
false
t
.
integer
"entity_id"
,
null:
false
t
.
string
"entity_type"
,
null:
false
t
.
text
"details"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
end
...
...
@@ -156,10 +121,10 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"audit_events"
,
[
"entity_id"
,
"entity_type"
],
name:
"index_audit_events_on_entity_id_and_entity_type"
,
using: :btree
create_table
"award_emoji"
,
force: :cascade
do
|
t
|
t
.
string
"name"
,
limit:
255
t
.
integer
"user_id"
,
limit:
4
t
.
integer
"awardable_id"
,
limit:
4
t
.
string
"awardable_type"
,
limit:
255
t
.
string
"name"
t
.
integer
"user_id"
t
.
integer
"awardable_id"
t
.
string
"awardable_type"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
end
...
...
@@ -169,23 +134,22 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"award_emoji"
,
[
"user_id"
],
name:
"index_award_emoji_on_user_id"
,
using: :btree
create_table
"boards"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
limit:
4
,
null:
false
t
.
integer
"project_id"
,
null:
false
t
.
datetime
"created_at"
,
null:
false
t
.
datetime
"updated_at"
,
null:
false
t
.
string
"name"
,
limit:
255
,
default:
"Development"
,
null:
false
end
add_index
"boards"
,
[
"project_id"
],
name:
"index_boards_on_project_id"
,
using: :btree
create_table
"broadcast_messages"
,
force: :cascade
do
|
t
|
t
.
text
"message"
,
limit:
65535
,
null:
false
t
.
text
"message"
,
null:
false
t
.
datetime
"starts_at"
t
.
datetime
"ends_at"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"color"
,
limit:
255
t
.
string
"font"
,
limit:
255
t
.
text
"message_html"
,
limit:
65535
t
.
string
"color"
t
.
string
"font"
t
.
text
"message_html"
end
create_table
"ci_application_settings"
,
force: :cascade
do
|
t
|
...
...
@@ -196,44 +160,44 @@ ActiveRecord::Schema.define(version: 20161109150329) do
end
create_table
"ci_builds"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
limit:
4
t
.
string
"status"
,
limit:
255
t
.
integer
"project_id"
t
.
string
"status"
t
.
datetime
"finished_at"
t
.
text
"trace"
,
limit:
65535
t
.
text
"trace"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
datetime
"started_at"
t
.
integer
"runner_id"
,
limit:
4
t
.
float
"coverage"
,
limit:
24
t
.
integer
"commit_id"
,
limit:
4
t
.
text
"commands"
,
limit:
65535
t
.
integer
"job_id"
,
limit:
4
t
.
string
"name"
,
limit:
255
t
.
integer
"runner_id"
t
.
float
"coverage"
t
.
integer
"commit_id"
t
.
text
"commands"
t
.
integer
"job_id"
t
.
string
"name"
t
.
boolean
"deploy"
,
default:
false
t
.
text
"options"
,
limit:
65535
t
.
text
"options"
t
.
boolean
"allow_failure"
,
default:
false
,
null:
false
t
.
string
"stage"
,
limit:
255
t
.
integer
"trigger_request_id"
,
limit:
4
t
.
integer
"stage_idx"
,
limit:
4
t
.
string
"stage"
t
.
integer
"trigger_request_id"
t
.
integer
"stage_idx"
t
.
boolean
"tag"
t
.
string
"ref"
,
limit:
255
t
.
integer
"user_id"
,
limit:
4
t
.
string
"type"
,
limit:
255
t
.
string
"target_url"
,
limit:
255
t
.
string
"description"
,
limit:
255
t
.
text
"artifacts_file"
,
limit:
65535
t
.
integer
"gl_project_id"
,
limit:
4
t
.
text
"artifacts_metadata"
,
limit:
65535
t
.
integer
"erased_by_id"
,
limit:
4
t
.
string
"ref"
t
.
integer
"user_id"
t
.
string
"type"
t
.
string
"target_url"
t
.
string
"description"
t
.
text
"artifacts_file"
t
.
integer
"gl_project_id"
t
.
text
"artifacts_metadata"
t
.
integer
"erased_by_id"
t
.
datetime
"erased_at"
t
.
datetime
"artifacts_expire_at"
t
.
string
"environment"
,
limit:
255
t
.
string
"environment"
t
.
integer
"artifacts_size"
,
limit:
8
t
.
string
"when"
,
limit:
255
t
.
text
"yaml_variables"
,
limit:
65535
t
.
string
"when"
t
.
text
"yaml_variables"
t
.
datetime
"queued_at"
t
.
string
"token"
,
limit:
255
t
.
integer
"lock_version"
,
limit:
4
t
.
string
"token"
t
.
integer
"lock_version"
end
add_index
"ci_builds"
,
[
"commit_id"
,
"stage_idx"
,
"created_at"
],
name:
"index_ci_builds_on_commit_id_and_stage_idx_and_created_at"
,
using: :btree
...
...
@@ -248,23 +212,23 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"ci_builds"
,
[
"token"
],
name:
"index_ci_builds_on_token"
,
unique:
true
,
using: :btree
create_table
"ci_commits"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
limit:
4
t
.
string
"ref"
,
limit:
255
t
.
string
"sha"
,
limit:
255
t
.
string
"before_sha"
,
limit:
255
t
.
text
"push_data"
,
limit:
65535
t
.
integer
"project_id"
t
.
string
"ref"
t
.
string
"sha"
t
.
string
"before_sha"
t
.
text
"push_data"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
boolean
"tag"
,
default:
false
t
.
text
"yaml_errors"
,
limit:
65535
t
.
text
"yaml_errors"
t
.
datetime
"committed_at"
t
.
integer
"gl_project_id"
,
limit:
4
t
.
string
"status"
,
limit:
255
t
.
integer
"gl_project_id"
t
.
string
"status"
t
.
datetime
"started_at"
t
.
datetime
"finished_at"
t
.
integer
"duration"
,
limit:
4
t
.
integer
"user_id"
,
limit:
4
t
.
integer
"lock_version"
,
limit:
4
t
.
integer
"duration"
t
.
integer
"user_id"
t
.
integer
"lock_version"
end
add_index
"ci_commits"
,
[
"gl_project_id"
,
"sha"
],
name:
"index_ci_commits_on_gl_project_id_and_sha"
,
using: :btree
...
...
@@ -274,75 +238,75 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"ci_commits"
,
[
"user_id"
],
name:
"index_ci_commits_on_user_id"
,
using: :btree
create_table
"ci_events"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
limit:
4
t
.
integer
"user_id"
,
limit:
4
t
.
integer
"is_admin"
,
limit:
4
t
.
text
"description"
,
limit:
65535
t
.
integer
"project_id"
t
.
integer
"user_id"
t
.
integer
"is_admin"
t
.
text
"description"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
end
create_table
"ci_jobs"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
limit:
4
,
null:
false
t
.
text
"commands"
,
limit:
65535
t
.
integer
"project_id"
,
null:
false
t
.
text
"commands"
t
.
boolean
"active"
,
default:
true
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"name"
,
limit:
255
t
.
string
"name"
t
.
boolean
"build_branches"
,
default:
true
,
null:
false
t
.
boolean
"build_tags"
,
default:
false
,
null:
false
t
.
string
"job_type"
,
limit:
255
,
default:
"parallel"
t
.
string
"refs"
,
limit:
255
t
.
string
"job_type"
,
default:
"parallel"
t
.
string
"refs"
t
.
datetime
"deleted_at"
end
create_table
"ci_projects"
,
force: :cascade
do
|
t
|
t
.
string
"name"
,
limit:
255
t
.
integer
"timeout"
,
limit:
4
,
default:
3600
,
null:
false
t
.
string
"name"
t
.
integer
"timeout"
,
default:
3600
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"token"
,
limit:
255
t
.
string
"default_ref"
,
limit:
255
t
.
string
"path"
,
limit:
255
t
.
string
"token"
t
.
string
"default_ref"
t
.
string
"path"
t
.
boolean
"always_build"
,
default:
false
,
null:
false
t
.
integer
"polling_interval"
,
limit:
4
t
.
integer
"polling_interval"
t
.
boolean
"public"
,
default:
false
,
null:
false
t
.
string
"ssh_url_to_repo"
,
limit:
255
t
.
integer
"gitlab_id"
,
limit:
4
t
.
string
"ssh_url_to_repo"
t
.
integer
"gitlab_id"
t
.
boolean
"allow_git_fetch"
,
default:
true
,
null:
false
t
.
string
"email_recipients"
,
limit:
255
,
default:
""
,
null:
false
t
.
string
"email_recipients"
,
default:
""
,
null:
false
t
.
boolean
"email_add_pusher"
,
default:
true
,
null:
false
t
.
boolean
"email_only_broken_builds"
,
default:
true
,
null:
false
t
.
string
"skip_refs"
,
limit:
255
t
.
string
"coverage_regex"
,
limit:
255
t
.
string
"skip_refs"
t
.
string
"coverage_regex"
t
.
boolean
"shared_runners_enabled"
,
default:
false
t
.
text
"generated_yaml_config"
,
limit:
65535
t
.
text
"generated_yaml_config"
end
create_table
"ci_runner_projects"
,
force: :cascade
do
|
t
|
t
.
integer
"runner_id"
,
limit:
4
,
null:
false
t
.
integer
"project_id"
,
limit:
4
t
.
integer
"runner_id"
,
null:
false
t
.
integer
"project_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
integer
"gl_project_id"
,
limit:
4
t
.
integer
"gl_project_id"
end
add_index
"ci_runner_projects"
,
[
"gl_project_id"
],
name:
"index_ci_runner_projects_on_gl_project_id"
,
using: :btree
add_index
"ci_runner_projects"
,
[
"runner_id"
],
name:
"index_ci_runner_projects_on_runner_id"
,
using: :btree
create_table
"ci_runners"
,
force: :cascade
do
|
t
|
t
.
string
"token"
,
limit:
255
t
.
string
"token"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"description"
,
limit:
255
t
.
string
"description"
t
.
datetime
"contacted_at"
t
.
boolean
"active"
,
default:
true
,
null:
false
t
.
boolean
"is_shared"
,
default:
false
t
.
string
"name"
,
limit:
255
t
.
string
"version"
,
limit:
255
t
.
string
"revision"
,
limit:
255
t
.
string
"platform"
,
limit:
255
t
.
string
"architecture"
,
limit:
255
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
end
...
...
@@ -351,18 +315,18 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"ci_runners"
,
[
"token"
],
name:
"index_ci_runners_on_token"
,
using: :btree
create_table
"ci_sessions"
,
force: :cascade
do
|
t
|
t
.
string
"session_id"
,
limit:
255
,
null:
false
t
.
text
"data"
,
limit:
65535
t
.
string
"session_id"
,
null:
false
t
.
text
"data"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
end
create_table
"ci_taggings"
,
force: :cascade
do
|
t
|
t
.
integer
"tag_id"
,
limit:
4
t
.
integer
"taggable_id"
,
limit:
4
t
.
string
"taggable_type"
,
limit:
255
t
.
integer
"tagger_id"
,
limit:
4
t
.
string
"tagger_type"
,
limit:
255
t
.
integer
"tag_id"
t
.
integer
"taggable_id"
t
.
string
"taggable_type"
t
.
integer
"tagger_id"
t
.
string
"tagger_type"
t
.
string
"context"
,
limit:
128
t
.
datetime
"created_at"
end
...
...
@@ -370,44 +334,44 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"ci_taggings"
,
[
"taggable_id"
,
"taggable_type"
,
"context"
],
name:
"index_ci_taggings_on_taggable_id_and_taggable_type_and_context"
,
using: :btree
create_table
"ci_tags"
,
force: :cascade
do
|
t
|
t
.
string
"name"
,
limit:
255
t
.
integer
"taggings_count"
,
limit:
4
,
default:
0
t
.
string
"name"
t
.
integer
"taggings_count"
,
default:
0
end
create_table
"ci_trigger_requests"
,
force: :cascade
do
|
t
|
t
.
integer
"trigger_id"
,
limit:
4
,
null:
false
t
.
text
"variables"
,
limit:
65535
t
.
integer
"trigger_id"
,
null:
false
t
.
text
"variables"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
integer
"commit_id"
,
limit:
4
t
.
integer
"commit_id"
end
create_table
"ci_triggers"
,
force: :cascade
do
|
t
|
t
.
string
"token"
,
limit:
255
t
.
integer
"project_id"
,
limit:
4
t
.
string
"token"
t
.
integer
"project_id"
t
.
datetime
"deleted_at"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
integer
"gl_project_id"
,
limit:
4
t
.
integer
"gl_project_id"
end
add_index
"ci_triggers"
,
[
"gl_project_id"
],
name:
"index_ci_triggers_on_gl_project_id"
,
using: :btree
create_table
"ci_variables"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
limit:
4
t
.
string
"key"
,
limit:
255
t
.
text
"value"
,
limit:
65535
t
.
text
"encrypted_value"
,
limit:
65535
t
.
string
"encrypted_value_salt"
,
limit:
255
t
.
string
"encrypted_value_iv"
,
limit:
255
t
.
integer
"gl_project_id"
,
limit:
4
t
.
integer
"project_id"
t
.
string
"key"
t
.
text
"value"
t
.
text
"encrypted_value"
t
.
string
"encrypted_value_salt"
t
.
string
"encrypted_value_iv"
t
.
integer
"gl_project_id"
end
add_index
"ci_variables"
,
[
"gl_project_id"
],
name:
"index_ci_variables_on_gl_project_id"
,
using: :btree
create_table
"deploy_keys_projects"
,
force: :cascade
do
|
t
|
t
.
integer
"deploy_key_id"
,
limit:
4
,
null:
false
t
.
integer
"project_id"
,
limit:
4
,
null:
false
t
.
integer
"deploy_key_id"
,
null:
false
t
.
integer
"project_id"
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
end
...
...
@@ -415,18 +379,18 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"deploy_keys_projects"
,
[
"project_id"
],
name:
"index_deploy_keys_projects_on_project_id"
,
using: :btree
create_table
"deployments"
,
force: :cascade
do
|
t
|
t
.
integer
"iid"
,
limit:
4
,
null:
false
t
.
integer
"project_id"
,
limit:
4
,
null:
false
t
.
integer
"environment_id"
,
limit:
4
,
null:
false
t
.
string
"ref"
,
limit:
255
,
null:
false
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"
,
limit:
255
,
null:
false
t
.
integer
"user_id"
,
limit:
4
t
.
integer
"deployable_id"
,
limit:
4
t
.
string
"deployable_type"
,
limit:
255
t
.
string
"sha"
,
null:
false
t
.
integer
"user_id"
t
.
integer
"deployable_id"
t
.
string
"deployable_type"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"on_stop"
,
limit:
255
t
.
string
"on_stop"
end
add_index
"deployments"
,
[
"project_id"
,
"environment_id"
,
"iid"
],
name:
"index_deployments_on_project_id_and_environment_id_and_iid"
,
using: :btree
...
...
@@ -435,8 +399,8 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"deployments"
,
[
"project_id"
],
name:
"index_deployments_on_project_id"
,
using: :btree
create_table
"emails"
,
force: :cascade
do
|
t
|
t
.
integer
"user_id"
,
limit:
4
,
null:
false
t
.
string
"email"
,
limit:
255
,
null:
false
t
.
integer
"user_id"
,
null:
false
t
.
string
"email"
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
end
...
...
@@ -445,27 +409,27 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"emails"
,
[
"user_id"
],
name:
"index_emails_on_user_id"
,
using: :btree
create_table
"environments"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
limit:
4
t
.
string
"name"
,
limit:
255
,
null:
false
t
.
integer
"project_id"
t
.
string
"name"
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"external_url"
,
limit:
255
t
.
string
"environment_type"
,
limit:
255
t
.
string
"state"
,
limit:
255
,
default:
"available"
,
null:
false
t
.
string
"external_url"
t
.
string
"environment_type"
t
.
string
"state"
,
default:
"available"
,
null:
false
end
add_index
"environments"
,
[
"project_id"
,
"name"
],
name:
"index_environments_on_project_id_and_name"
,
using: :btree
create_table
"events"
,
force: :cascade
do
|
t
|
t
.
string
"target_type"
,
limit:
255
t
.
integer
"target_id"
,
limit:
4
t
.
string
"title"
,
limit:
255
t
.
text
"data"
,
limit:
4294967295
t
.
integer
"project_id"
,
limit:
4
t
.
string
"target_type"
t
.
integer
"target_id"
t
.
string
"title"
t
.
text
"data"
t
.
integer
"project_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
integer
"action"
,
limit:
4
t
.
integer
"author_id"
,
limit:
4
t
.
integer
"action"
t
.
integer
"author_id"
end
add_index
"events"
,
[
"action"
],
name:
"index_events_on_action"
,
using: :btree
...
...
@@ -476,59 +440,26 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"events"
,
[
"target_type"
],
name:
"index_events_on_target_type"
,
using: :btree
create_table
"forked_project_links"
,
force: :cascade
do
|
t
|
t
.
integer
"forked_to_project_id"
,
limit:
4
,
null:
false
t
.
integer
"forked_from_project_id"
,
limit:
4
,
null:
false
t
.
integer
"forked_to_project_id"
,
null:
false
t
.
integer
"forked_from_project_id"
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
end
add_index
"forked_project_links"
,
[
"forked_to_project_id"
],
name:
"index_forked_project_links_on_forked_to_project_id"
,
unique:
true
,
using: :btree
create_table
"geo_nodes"
,
force: :cascade
do
|
t
|
t
.
string
"schema"
,
limit:
255
t
.
string
"host"
,
limit:
255
t
.
integer
"port"
,
limit:
4
t
.
string
"relative_url_root"
,
limit:
255
t
.
boolean
"primary"
t
.
integer
"geo_node_key_id"
,
limit:
4
t
.
integer
"oauth_application_id"
,
limit:
4
t
.
integer
"system_hook_id"
,
limit:
4
end
add_index
"geo_nodes"
,
[
"host"
],
name:
"index_geo_nodes_on_host"
,
using: :btree
add_index
"geo_nodes"
,
[
"primary"
],
name:
"index_geo_nodes_on_primary"
,
using: :btree
create_table
"historical_data"
,
force: :cascade
do
|
t
|
t
.
date
"date"
,
null:
false
t
.
integer
"active_user_count"
,
limit:
4
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
end
create_table
"identities"
,
force: :cascade
do
|
t
|
t
.
string
"extern_uid"
,
limit:
255
t
.
string
"provider"
,
limit:
255
t
.
integer
"user_id"
,
limit:
4
t
.
string
"extern_uid"
t
.
string
"provider"
t
.
integer
"user_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"secondary_extern_uid"
,
limit:
255
end
add_index
"identities"
,
[
"user_id"
],
name:
"index_identities_on_user_id"
,
using: :btree
create_table
"index_statuses"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
limit:
4
,
null:
false
t
.
datetime
"indexed_at"
t
.
text
"note"
,
limit:
65535
t
.
string
"last_commit"
,
limit:
255
t
.
datetime
"created_at"
,
null:
false
t
.
datetime
"updated_at"
,
null:
false
end
add_index
"index_statuses"
,
[
"project_id"
],
name:
"index_index_statuses_on_project_id"
,
unique:
true
,
using: :btree
create_table
"issue_metrics"
,
force: :cascade
do
|
t
|
t
.
integer
"issue_id"
,
limit:
4
,
null:
false
t
.
integer
"issue_id"
,
null:
false
t
.
datetime
"first_mentioned_in_commit_at"
t
.
datetime
"first_associated_with_milestone_at"
t
.
datetime
"first_added_to_board_at"
...
...
@@ -539,27 +470,26 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"issue_metrics"
,
[
"issue_id"
],
name:
"index_issue_metrics"
,
using: :btree
create_table
"issues"
,
force: :cascade
do
|
t
|
t
.
string
"title"
,
limit:
255
t
.
integer
"assignee_id"
,
limit:
4
t
.
integer
"author_id"
,
limit:
4
t
.
integer
"project_id"
,
limit:
4
t
.
string
"title"
t
.
integer
"assignee_id"
t
.
integer
"author_id"
t
.
integer
"project_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
integer
"position"
,
limit:
4
,
default:
0
t
.
string
"branch_name"
,
limit:
255
t
.
text
"description"
,
limit:
65535
t
.
integer
"milestone_id"
,
limit:
4
t
.
string
"state"
,
limit:
255
t
.
integer
"iid"
,
limit:
4
t
.
integer
"updated_by_id"
,
limit:
4
t
.
integer
"weight"
,
limit:
4
t
.
integer
"position"
,
default:
0
t
.
string
"branch_name"
t
.
text
"description"
t
.
integer
"milestone_id"
t
.
string
"state"
t
.
integer
"iid"
t
.
integer
"updated_by_id"
t
.
boolean
"confidential"
,
default:
false
t
.
datetime
"deleted_at"
t
.
date
"due_date"
t
.
integer
"moved_to_id"
,
limit:
4
t
.
integer
"lock_version"
,
limit:
4
t
.
text
"title_html"
,
limit:
65535
t
.
text
"description_html"
,
limit:
65535
t
.
integer
"moved_to_id"
t
.
integer
"lock_version"
t
.
text
"title_html"
t
.
text
"description_html"
end
add_index
"issues"
,
[
"assignee_id"
],
name:
"index_issues_on_assignee_id"
,
using: :btree
...
...
@@ -567,19 +497,21 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"issues"
,
[
"confidential"
],
name:
"index_issues_on_confidential"
,
using: :btree
add_index
"issues"
,
[
"created_at"
],
name:
"index_issues_on_created_at"
,
using: :btree
add_index
"issues"
,
[
"deleted_at"
],
name:
"index_issues_on_deleted_at"
,
using: :btree
add_index
"issues"
,
[
"description"
],
name:
"index_issues_on_description_trigram"
,
using: :gin
,
opclasses:
{
"description"
=>
"gin_trgm_ops"
}
add_index
"issues"
,
[
"due_date"
],
name:
"index_issues_on_due_date"
,
using: :btree
add_index
"issues"
,
[
"milestone_id"
],
name:
"index_issues_on_milestone_id"
,
using: :btree
add_index
"issues"
,
[
"project_id"
,
"iid"
],
name:
"index_issues_on_project_id_and_iid"
,
unique:
true
,
using: :btree
add_index
"issues"
,
[
"state"
],
name:
"index_issues_on_state"
,
using: :btree
add_index
"issues"
,
[
"title"
],
name:
"index_issues_on_title_trigram"
,
using: :gin
,
opclasses:
{
"title"
=>
"gin_trgm_ops"
}
create_table
"keys"
,
force: :cascade
do
|
t
|
t
.
integer
"user_id"
,
limit:
4
t
.
integer
"user_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
text
"key"
,
limit:
65535
t
.
string
"title"
,
limit:
255
t
.
string
"type"
,
limit:
255
t
.
string
"fingerprint"
,
limit:
255
t
.
text
"key"
t
.
string
"title"
t
.
string
"type"
t
.
string
"fingerprint"
t
.
boolean
"public"
,
default:
false
,
null:
false
end
...
...
@@ -587,9 +519,9 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"keys"
,
[
"user_id"
],
name:
"index_keys_on_user_id"
,
using: :btree
create_table
"label_links"
,
force: :cascade
do
|
t
|
t
.
integer
"label_id"
,
limit:
4
t
.
integer
"target_id"
,
limit:
4
t
.
string
"target_type"
,
limit:
255
t
.
integer
"label_id"
t
.
integer
"target_id"
t
.
string
"target_type"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
end
...
...
@@ -598,72 +530,56 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"label_links"
,
[
"target_id"
,
"target_type"
],
name:
"index_label_links_on_target_id_and_target_type"
,
using: :btree
create_table
"label_priorities"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
limit:
4
,
null:
false
t
.
integer
"label_id"
,
limit:
4
,
null:
false
t
.
integer
"priority"
,
limit:
4
,
null:
false
t
.
integer
"project_id"
,
null:
false
t
.
integer
"label_id"
,
null:
false
t
.
integer
"priority"
,
null:
false
t
.
datetime
"created_at"
,
null:
false
t
.
datetime
"updated_at"
,
null:
false
end
add_index
"label_priorities"
,
[
"label_id"
],
name:
"fk_rails_e161058b0f"
,
using: :btree
add_index
"label_priorities"
,
[
"priority"
],
name:
"index_label_priorities_on_priority"
,
using: :btree
add_index
"label_priorities"
,
[
"project_id"
,
"label_id"
],
name:
"index_label_priorities_on_project_id_and_label_id"
,
unique:
true
,
using: :btree
create_table
"labels"
,
force: :cascade
do
|
t
|
t
.
string
"title"
,
limit:
255
t
.
string
"color"
,
limit:
255
t
.
integer
"project_id"
,
limit:
4
t
.
string
"title"
t
.
string
"color"
t
.
integer
"project_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
boolean
"template"
,
default:
false
t
.
string
"description"
,
limit:
255
t
.
text
"description_html"
,
limit:
65535
t
.
string
"type"
,
limit:
255
t
.
integer
"group_id"
,
limit:
4
t
.
string
"description"
t
.
text
"description_html"
t
.
string
"type"
t
.
integer
"group_id"
end
add_index
"labels"
,
[
"group_id"
,
"project_id"
,
"title"
],
name:
"index_labels_on_group_id_and_project_id_and_title"
,
unique:
true
,
using: :btree
add_index
"labels"
,
[
"group_id"
],
name:
"index_labels_on_group_id"
,
using: :btree
create_table
"ldap_group_links"
,
force: :cascade
do
|
t
|
t
.
string
"cn"
,
limit:
255
,
null:
false
t
.
integer
"group_access"
,
limit:
4
,
null:
false
t
.
integer
"group_id"
,
limit:
4
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"provider"
,
limit:
255
end
create_table
"lfs_objects"
,
force: :cascade
do
|
t
|
t
.
string
"oid"
,
limit:
255
,
null:
false
t
.
string
"oid"
,
null:
false
t
.
integer
"size"
,
limit:
8
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"file"
,
limit:
255
t
.
string
"file"
end
add_index
"lfs_objects"
,
[
"oid"
],
name:
"index_lfs_objects_on_oid"
,
unique:
true
,
using: :btree
create_table
"lfs_objects_projects"
,
force: :cascade
do
|
t
|
t
.
integer
"lfs_object_id"
,
limit:
4
,
null:
false
t
.
integer
"project_id"
,
limit:
4
,
null:
false
t
.
integer
"lfs_object_id"
,
null:
false
t
.
integer
"project_id"
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
end
add_index
"lfs_objects_projects"
,
[
"project_id"
],
name:
"index_lfs_objects_projects_on_project_id"
,
using: :btree
create_table
"licenses"
,
force: :cascade
do
|
t
|
t
.
text
"data"
,
limit:
65535
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
end
create_table
"lists"
,
force: :cascade
do
|
t
|
t
.
integer
"board_id"
,
limit:
4
,
null:
false
t
.
integer
"label_id"
,
limit:
4
t
.
integer
"list_type"
,
limit:
4
,
default:
1
,
null:
false
t
.
integer
"position"
,
limit:
4
t
.
integer
"board_id"
,
null:
false
t
.
integer
"label_id"
t
.
integer
"list_type"
,
default:
1
,
null:
false
t
.
integer
"position"
t
.
datetime
"created_at"
,
null:
false
t
.
datetime
"updated_at"
,
null:
false
end
...
...
@@ -673,22 +589,20 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"lists"
,
[
"label_id"
],
name:
"index_lists_on_label_id"
,
using: :btree
create_table
"members"
,
force: :cascade
do
|
t
|
t
.
integer
"access_level"
,
limit:
4
,
null:
false
t
.
integer
"source_id"
,
limit:
4
,
null:
false
t
.
string
"source_type"
,
limit:
255
,
null:
false
t
.
integer
"user_id"
,
limit:
4
t
.
integer
"notification_level"
,
limit:
4
,
null:
false
t
.
string
"type"
,
limit:
255
t
.
integer
"access_level"
,
null:
false
t
.
integer
"source_id"
,
null:
false
t
.
string
"source_type"
,
null:
false
t
.
integer
"user_id"
t
.
integer
"notification_level"
,
null:
false
t
.
string
"type"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
integer
"created_by_id"
,
limit:
4
t
.
string
"invite_email"
,
limit:
255
t
.
string
"invite_token"
,
limit:
255
t
.
integer
"created_by_id"
t
.
string
"invite_email"
t
.
string
"invite_token"
t
.
datetime
"invite_accepted_at"
t
.
datetime
"requested_at"
t
.
date
"expires_at"
t
.
boolean
"ldap"
,
default:
false
,
null:
false
t
.
boolean
"override"
,
default:
false
,
null:
false
end
add_index
"members"
,
[
"access_level"
],
name:
"index_members_on_access_level"
,
using: :btree
...
...
@@ -698,29 +612,29 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"members"
,
[
"user_id"
],
name:
"index_members_on_user_id"
,
using: :btree
create_table
"merge_request_diffs"
,
force: :cascade
do
|
t
|
t
.
string
"state"
,
limit:
255
t
.
text
"st_commits"
,
limit:
4294967295
t
.
text
"st_diffs"
,
limit:
4294967295
t
.
integer
"merge_request_id"
,
limit:
4
,
null:
false
t
.
string
"state"
t
.
text
"st_commits"
t
.
text
"st_diffs"
t
.
integer
"merge_request_id"
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"base_commit_sha"
,
limit:
255
t
.
string
"real_size"
,
limit:
255
t
.
string
"head_commit_sha"
,
limit:
255
t
.
string
"start_commit_sha"
,
limit:
255
t
.
string
"base_commit_sha"
t
.
string
"real_size"
t
.
string
"head_commit_sha"
t
.
string
"start_commit_sha"
end
add_index
"merge_request_diffs"
,
[
"merge_request_id"
],
name:
"index_merge_request_diffs_on_merge_request_id"
,
using: :btree
create_table
"merge_request_metrics"
,
force: :cascade
do
|
t
|
t
.
integer
"merge_request_id"
,
limit:
4
,
null:
false
t
.
integer
"merge_request_id"
,
null:
false
t
.
datetime
"latest_build_started_at"
t
.
datetime
"latest_build_finished_at"
t
.
datetime
"first_deployed_to_production_at"
t
.
datetime
"merged_at"
t
.
datetime
"created_at"
,
null:
false
t
.
datetime
"updated_at"
,
null:
false
t
.
integer
"pipeline_id"
,
limit:
4
t
.
integer
"pipeline_id"
end
add_index
"merge_request_metrics"
,
[
"first_deployed_to_production_at"
],
name:
"index_merge_request_metrics_on_first_deployed_to_production_at"
,
using: :btree
...
...
@@ -728,51 +642,51 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"merge_request_metrics"
,
[
"pipeline_id"
],
name:
"index_merge_request_metrics_on_pipeline_id"
,
using: :btree
create_table
"merge_requests"
,
force: :cascade
do
|
t
|
t
.
string
"target_branch"
,
limit:
255
,
null:
false
t
.
string
"source_branch"
,
limit:
255
,
null:
false
t
.
integer
"source_project_id"
,
limit:
4
,
null:
false
t
.
integer
"author_id"
,
limit:
4
t
.
integer
"assignee_id"
,
limit:
4
t
.
string
"title"
,
limit:
255
t
.
string
"target_branch"
,
null:
false
t
.
string
"source_branch"
,
null:
false
t
.
integer
"source_project_id"
,
null:
false
t
.
integer
"author_id"
t
.
integer
"assignee_id"
t
.
string
"title"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
integer
"milestone_id"
,
limit:
4
t
.
string
"state"
,
limit:
255
t
.
string
"merge_status"
,
limit:
255
t
.
integer
"target_project_id"
,
limit:
4
,
null:
false
t
.
integer
"iid"
,
limit:
4
t
.
text
"description"
,
limit:
65535
t
.
integer
"position"
,
limit:
4
,
default:
0
t
.
integer
"milestone_id"
t
.
string
"state"
t
.
string
"merge_status"
t
.
integer
"target_project_id"
,
null:
false
t
.
integer
"iid"
t
.
text
"description"
t
.
integer
"position"
,
default:
0
t
.
datetime
"locked_at"
t
.
integer
"updated_by_id"
,
limit:
4
t
.
text
"merge_error"
,
limit:
65535
t
.
text
"merge_params"
,
limit:
65535
t
.
integer
"updated_by_id"
t
.
text
"merge_error"
t
.
text
"merge_params"
t
.
boolean
"merge_when_build_succeeds"
,
default:
false
,
null:
false
t
.
integer
"merge_user_id"
,
limit:
4
t
.
string
"merge_commit_sha"
,
limit:
255
t
.
integer
"merge_user_id"
t
.
string
"merge_commit_sha"
t
.
datetime
"deleted_at"
t
.
integer
"approvals_before_merge"
,
limit:
4
t
.
string
"rebase_commit_sha"
,
limit:
255
t
.
string
"in_progress_merge_commit_sha"
,
limit:
255
t
.
integer
"lock_version"
,
limit:
4
t
.
text
"title_html"
,
limit:
65535
t
.
text
"description_html"
,
limit:
65535
t
.
string
"in_progress_merge_commit_sha"
t
.
integer
"lock_version"
t
.
text
"title_html"
t
.
text
"description_html"
end
add_index
"merge_requests"
,
[
"assignee_id"
],
name:
"index_merge_requests_on_assignee_id"
,
using: :btree
add_index
"merge_requests"
,
[
"author_id"
],
name:
"index_merge_requests_on_author_id"
,
using: :btree
add_index
"merge_requests"
,
[
"created_at"
],
name:
"index_merge_requests_on_created_at"
,
using: :btree
add_index
"merge_requests"
,
[
"deleted_at"
],
name:
"index_merge_requests_on_deleted_at"
,
using: :btree
add_index
"merge_requests"
,
[
"description"
],
name:
"index_merge_requests_on_description_trigram"
,
using: :gin
,
opclasses:
{
"description"
=>
"gin_trgm_ops"
}
add_index
"merge_requests"
,
[
"milestone_id"
],
name:
"index_merge_requests_on_milestone_id"
,
using: :btree
add_index
"merge_requests"
,
[
"source_branch"
],
name:
"index_merge_requests_on_source_branch"
,
using: :btree
add_index
"merge_requests"
,
[
"source_project_id"
],
name:
"index_merge_requests_on_source_project_id"
,
using: :btree
add_index
"merge_requests"
,
[
"target_branch"
],
name:
"index_merge_requests_on_target_branch"
,
using: :btree
add_index
"merge_requests"
,
[
"target_project_id"
,
"iid"
],
name:
"index_merge_requests_on_target_project_id_and_iid"
,
unique:
true
,
using: :btree
add_index
"merge_requests"
,
[
"title"
],
name:
"index_merge_requests_on_title"
,
using: :btree
add_index
"merge_requests"
,
[
"title"
],
name:
"index_merge_requests_on_title_trigram"
,
using: :gin
,
opclasses:
{
"title"
=>
"gin_trgm_ops"
}
create_table
"merge_requests_closing_issues"
,
force: :cascade
do
|
t
|
t
.
integer
"merge_request_id"
,
limit:
4
,
null:
false
t
.
integer
"issue_id"
,
limit:
4
,
null:
false
t
.
integer
"merge_request_id"
,
null:
false
t
.
integer
"issue_id"
,
null:
false
t
.
datetime
"created_at"
,
null:
false
t
.
datetime
"updated_at"
,
null:
false
end
...
...
@@ -781,78 +695,73 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"merge_requests_closing_issues"
,
[
"merge_request_id"
],
name:
"index_merge_requests_closing_issues_on_merge_request_id"
,
using: :btree
create_table
"milestones"
,
force: :cascade
do
|
t
|
t
.
string
"title"
,
limit:
255
,
null:
false
t
.
integer
"project_id"
,
limit:
4
,
null:
false
t
.
text
"description"
,
limit:
65535
t
.
string
"title"
,
null:
false
t
.
integer
"project_id"
,
null:
false
t
.
text
"description"
t
.
date
"due_date"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"state"
,
limit:
255
t
.
integer
"iid"
,
limit:
4
t
.
text
"title_html"
,
limit:
65535
t
.
text
"description_html"
,
limit:
65535
t
.
string
"state"
t
.
integer
"iid"
t
.
text
"title_html"
t
.
text
"description_html"
end
add_index
"milestones"
,
[
"description"
],
name:
"index_milestones_on_description_trigram"
,
using: :gin
,
opclasses:
{
"description"
=>
"gin_trgm_ops"
}
add_index
"milestones"
,
[
"due_date"
],
name:
"index_milestones_on_due_date"
,
using: :btree
add_index
"milestones"
,
[
"project_id"
,
"iid"
],
name:
"index_milestones_on_project_id_and_iid"
,
unique:
true
,
using: :btree
add_index
"milestones"
,
[
"project_id"
],
name:
"index_milestones_on_project_id"
,
using: :btree
add_index
"milestones"
,
[
"title"
],
name:
"index_milestones_on_title"
,
using: :btree
add_index
"milestones"
,
[
"title"
],
name:
"index_milestones_on_title_trigram"
,
using: :gin
,
opclasses:
{
"title"
=>
"gin_trgm_ops"
}
create_table
"namespaces"
,
force: :cascade
do
|
t
|
t
.
string
"name"
,
limit:
255
,
null:
false
t
.
string
"path"
,
limit:
255
,
null:
false
t
.
integer
"owner_id"
,
limit:
4
t
.
string
"name"
,
null:
false
t
.
string
"path"
,
null:
false
t
.
integer
"owner_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"type"
,
limit:
255
t
.
string
"description"
,
limit:
255
,
default:
""
,
null:
false
t
.
string
"avatar"
,
limit:
255
t
.
boolean
"membership_lock"
,
default:
false
t
.
string
"type"
t
.
string
"description"
,
default:
""
,
null:
false
t
.
string
"avatar"
t
.
boolean
"share_with_group_lock"
,
default:
false
t
.
integer
"visibility_level"
,
limit:
4
,
default:
20
,
null:
false
t
.
integer
"visibility_level"
,
default:
20
,
null:
false
t
.
boolean
"request_access_enabled"
,
default:
false
,
null:
false
t
.
datetime
"deleted_at"
t
.
string
"ldap_sync_status"
,
limit:
255
,
default:
"ready"
,
null:
false
t
.
string
"ldap_sync_error"
,
limit:
255
t
.
datetime
"ldap_sync_last_update_at"
t
.
datetime
"ldap_sync_last_successful_update_at"
t
.
datetime
"ldap_sync_last_sync_at"
t
.
boolean
"lfs_enabled"
t
.
integer
"repository_size_limit"
,
limit:
4
t
.
text
"description_html"
,
limit:
65535
t
.
text
"description_html"
end
add_index
"namespaces"
,
[
"created_at"
],
name:
"index_namespaces_on_created_at"
,
using: :btree
add_index
"namespaces"
,
[
"deleted_at"
],
name:
"index_namespaces_on_deleted_at"
,
using: :btree
add_index
"namespaces"
,
[
"ldap_sync_last_successful_update_at"
],
name:
"index_namespaces_on_ldap_sync_last_successful_update_at"
,
using: :btree
add_index
"namespaces"
,
[
"ldap_sync_last_update_at"
],
name:
"index_namespaces_on_ldap_sync_last_update_at"
,
using: :btree
add_index
"namespaces"
,
[
"name"
],
name:
"index_namespaces_on_name"
,
unique:
true
,
using: :btree
add_index
"namespaces"
,
[
"name"
],
name:
"index_namespaces_on_name_trigram"
,
using: :gin
,
opclasses:
{
"name"
=>
"gin_trgm_ops"
}
add_index
"namespaces"
,
[
"owner_id"
],
name:
"index_namespaces_on_owner_id"
,
using: :btree
add_index
"namespaces"
,
[
"path"
],
name:
"index_namespaces_on_path"
,
unique:
true
,
using: :btree
add_index
"namespaces"
,
[
"path"
],
name:
"index_namespaces_on_path_trigram"
,
using: :gin
,
opclasses:
{
"path"
=>
"gin_trgm_ops"
}
add_index
"namespaces"
,
[
"type"
],
name:
"index_namespaces_on_type"
,
using: :btree
create_table
"notes"
,
force: :cascade
do
|
t
|
t
.
text
"note"
,
limit:
65535
t
.
string
"noteable_type"
,
limit:
255
t
.
integer
"author_id"
,
limit:
4
t
.
text
"note"
t
.
string
"noteable_type"
t
.
integer
"author_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
integer
"project_id"
,
limit:
4
t
.
string
"attachment"
,
limit:
255
t
.
string
"line_code"
,
limit:
255
t
.
string
"commit_id"
,
limit:
255
t
.
integer
"noteable_id"
,
limit:
4
t
.
integer
"project_id"
t
.
string
"attachment"
t
.
string
"line_code"
t
.
string
"commit_id"
t
.
integer
"noteable_id"
t
.
boolean
"system"
,
default:
false
,
null:
false
t
.
text
"st_diff"
,
limit:
4294967295
t
.
integer
"updated_by_id"
,
limit:
4
t
.
string
"type"
,
limit:
255
t
.
text
"position"
,
limit:
65535
t
.
text
"original_position"
,
limit:
65535
t
.
text
"st_diff"
t
.
integer
"updated_by_id"
t
.
string
"type"
t
.
text
"position"
t
.
text
"original_position"
t
.
datetime
"resolved_at"
t
.
integer
"resolved_by_id"
,
limit:
4
t
.
string
"discussion_id"
,
limit:
255
t
.
string
"original_discussion_id"
,
limit:
255
t
.
text
"note_html"
,
limit:
65535
t
.
integer
"resolved_by_id"
t
.
string
"discussion_id"
t
.
string
"original_discussion_id"
t
.
text
"note_html"
end
add_index
"notes"
,
[
"author_id"
],
name:
"index_notes_on_author_id"
,
using: :btree
...
...
@@ -860,6 +769,7 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"notes"
,
[
"created_at"
],
name:
"index_notes_on_created_at"
,
using: :btree
add_index
"notes"
,
[
"discussion_id"
],
name:
"index_notes_on_discussion_id"
,
using: :btree
add_index
"notes"
,
[
"line_code"
],
name:
"index_notes_on_line_code"
,
using: :btree
add_index
"notes"
,
[
"note"
],
name:
"index_notes_on_note_trigram"
,
using: :gin
,
opclasses:
{
"note"
=>
"gin_trgm_ops"
}
add_index
"notes"
,
[
"noteable_id"
,
"noteable_type"
],
name:
"index_notes_on_noteable_id_and_noteable_type"
,
using: :btree
add_index
"notes"
,
[
"noteable_type"
],
name:
"index_notes_on_noteable_type"
,
using: :btree
add_index
"notes"
,
[
"project_id"
,
"noteable_type"
],
name:
"index_notes_on_project_id_and_noteable_type"
,
using: :btree
...
...
@@ -867,13 +777,13 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"notes"
,
[
"updated_at"
],
name:
"index_notes_on_updated_at"
,
using: :btree
create_table
"notification_settings"
,
force: :cascade
do
|
t
|
t
.
integer
"user_id"
,
limit:
4
,
null:
false
t
.
integer
"source_id"
,
limit:
4
t
.
string
"source_type"
,
limit:
255
t
.
integer
"level"
,
limit:
4
,
default:
0
,
null:
false
t
.
integer
"user_id"
,
null:
false
t
.
integer
"source_id"
t
.
string
"source_type"
t
.
integer
"level"
,
default:
0
,
null:
false
t
.
datetime
"created_at"
,
null:
false
t
.
datetime
"updated_at"
,
null:
false
t
.
text
"events"
,
limit:
65535
t
.
text
"events"
end
add_index
"notification_settings"
,
[
"source_id"
,
"source_type"
],
name:
"index_notification_settings_on_source_id_and_source_type"
,
using: :btree
...
...
@@ -881,27 +791,27 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"notification_settings"
,
[
"user_id"
],
name:
"index_notification_settings_on_user_id"
,
using: :btree
create_table
"oauth_access_grants"
,
force: :cascade
do
|
t
|
t
.
integer
"resource_owner_id"
,
limit:
4
,
null:
false
t
.
integer
"application_id"
,
limit:
4
,
null:
false
t
.
string
"token"
,
limit:
255
,
null:
false
t
.
integer
"expires_in"
,
limit:
4
,
null:
false
t
.
text
"redirect_uri"
,
limit:
65535
,
null:
false
t
.
integer
"resource_owner_id"
,
null:
false
t
.
integer
"application_id"
,
null:
false
t
.
string
"token"
,
null:
false
t
.
integer
"expires_in"
,
null:
false
t
.
text
"redirect_uri"
,
null:
false
t
.
datetime
"created_at"
,
null:
false
t
.
datetime
"revoked_at"
t
.
string
"scopes"
,
limit:
255
t
.
string
"scopes"
end
add_index
"oauth_access_grants"
,
[
"token"
],
name:
"index_oauth_access_grants_on_token"
,
unique:
true
,
using: :btree
create_table
"oauth_access_tokens"
,
force: :cascade
do
|
t
|
t
.
integer
"resource_owner_id"
,
limit:
4
t
.
integer
"application_id"
,
limit:
4
t
.
string
"token"
,
limit:
255
,
null:
false
t
.
string
"refresh_token"
,
limit:
255
t
.
integer
"expires_in"
,
limit:
4
t
.
integer
"resource_owner_id"
t
.
integer
"application_id"
t
.
string
"token"
,
null:
false
t
.
string
"refresh_token"
t
.
integer
"expires_in"
t
.
datetime
"revoked_at"
t
.
datetime
"created_at"
,
null:
false
t
.
string
"scopes"
,
limit:
255
t
.
string
"scopes"
end
add_index
"oauth_access_tokens"
,
[
"refresh_token"
],
name:
"index_oauth_access_tokens_on_refresh_token"
,
unique:
true
,
using: :btree
...
...
@@ -909,47 +819,24 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"oauth_access_tokens"
,
[
"token"
],
name:
"index_oauth_access_tokens_on_token"
,
unique:
true
,
using: :btree
create_table
"oauth_applications"
,
force: :cascade
do
|
t
|
t
.
string
"name"
,
limit:
255
,
null:
false
t
.
string
"uid"
,
limit:
255
,
null:
false
t
.
string
"secret"
,
limit:
255
,
null:
false
t
.
text
"redirect_uri"
,
limit:
65535
,
null:
false
t
.
string
"scopes"
,
limit:
255
,
default:
""
,
null:
false
t
.
string
"name"
,
null:
false
t
.
string
"uid"
,
null:
false
t
.
string
"secret"
,
null:
false
t
.
text
"redirect_uri"
,
null:
false
t
.
string
"scopes"
,
default:
""
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
integer
"owner_id"
,
limit:
4
t
.
string
"owner_type"
,
limit:
255
t
.
integer
"owner_id"
t
.
string
"owner_type"
end
add_index
"oauth_applications"
,
[
"owner_id"
,
"owner_type"
],
name:
"index_oauth_applications_on_owner_id_and_owner_type"
,
using: :btree
add_index
"oauth_applications"
,
[
"uid"
],
name:
"index_oauth_applications_on_uid"
,
unique:
true
,
using: :btree
create_table
"pages_domains"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
limit:
4
t
.
text
"certificate"
,
limit:
65535
t
.
text
"encrypted_key"
,
limit:
65535
t
.
string
"encrypted_key_iv"
,
limit:
255
t
.
string
"encrypted_key_salt"
,
limit:
255
t
.
string
"domain"
,
limit:
255
end
add_index
"pages_domains"
,
[
"domain"
],
name:
"index_pages_domains_on_domain"
,
unique:
true
,
using: :btree
create_table
"path_locks"
,
force: :cascade
do
|
t
|
t
.
string
"path"
,
limit:
255
,
null:
false
t
.
integer
"project_id"
,
limit:
4
t
.
integer
"user_id"
,
limit:
4
t
.
datetime
"created_at"
,
null:
false
t
.
datetime
"updated_at"
,
null:
false
end
add_index
"path_locks"
,
[
"path"
],
name:
"index_path_locks_on_path"
,
using: :btree
add_index
"path_locks"
,
[
"project_id"
],
name:
"index_path_locks_on_project_id"
,
using: :btree
add_index
"path_locks"
,
[
"user_id"
],
name:
"index_path_locks_on_user_id"
,
using: :btree
create_table
"personal_access_tokens"
,
force: :cascade
do
|
t
|
t
.
integer
"user_id"
,
limit:
4
,
null:
false
t
.
string
"token"
,
limit:
255
,
null:
false
t
.
string
"name"
,
limit:
255
,
null:
false
t
.
integer
"user_id"
,
null:
false
t
.
string
"token"
,
null:
false
t
.
string
"name"
,
null:
false
t
.
boolean
"revoked"
,
default:
false
t
.
datetime
"expires_at"
t
.
datetime
"created_at"
,
null:
false
...
...
@@ -960,75 +847,64 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"personal_access_tokens"
,
[
"user_id"
],
name:
"index_personal_access_tokens_on_user_id"
,
using: :btree
create_table
"project_features"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
limit:
4
t
.
integer
"merge_requests_access_level"
,
limit:
4
t
.
integer
"issues_access_level"
,
limit:
4
t
.
integer
"wiki_access_level"
,
limit:
4
t
.
integer
"snippets_access_level"
,
limit:
4
t
.
integer
"builds_access_level"
,
limit:
4
t
.
integer
"project_id"
t
.
integer
"merge_requests_access_level"
t
.
integer
"issues_access_level"
t
.
integer
"wiki_access_level"
t
.
integer
"snippets_access_level"
t
.
integer
"builds_access_level"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
integer
"repository_access_level"
,
limit:
4
,
default:
20
,
null:
false
t
.
integer
"repository_access_level"
,
default:
20
,
null:
false
end
add_index
"project_features"
,
[
"project_id"
],
name:
"index_project_features_on_project_id"
,
using: :btree
create_table
"project_group_links"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
limit:
4
,
null:
false
t
.
integer
"group_id"
,
limit:
4
,
null:
false
t
.
integer
"project_id"
,
null:
false
t
.
integer
"group_id"
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
integer
"group_access"
,
limit:
4
,
default:
30
,
null:
false
t
.
integer
"group_access"
,
default:
30
,
null:
false
t
.
date
"expires_at"
end
create_table
"project_import_data"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
limit:
4
t
.
text
"data"
,
limit:
65535
t
.
text
"encrypted_credentials"
,
limit:
65535
t
.
string
"encrypted_credentials_iv"
,
limit:
255
t
.
string
"encrypted_credentials_salt"
,
limit:
255
t
.
integer
"project_id"
t
.
text
"data"
t
.
text
"encrypted_credentials"
t
.
string
"encrypted_credentials_iv"
t
.
string
"encrypted_credentials_salt"
end
add_index
"project_import_data"
,
[
"project_id"
],
name:
"index_project_import_data_on_project_id"
,
using: :btree
create_table
"projects"
,
force: :cascade
do
|
t
|
t
.
string
"name"
,
limit:
255
t
.
string
"path"
,
limit:
255
t
.
text
"description"
,
limit:
65535
t
.
string
"name"
t
.
string
"path"
t
.
text
"description"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
integer
"creator_id"
,
limit:
4
t
.
integer
"namespace_id"
,
limit:
4
t
.
integer
"creator_id"
t
.
integer
"namespace_id"
t
.
datetime
"last_activity_at"
t
.
string
"import_url"
,
limit:
255
t
.
integer
"visibility_level"
,
limit:
4
,
default:
0
,
null:
false
t
.
string
"import_url"
t
.
integer
"visibility_level"
,
default:
0
,
null:
false
t
.
boolean
"archived"
,
default:
false
,
null:
false
t
.
string
"avatar"
,
limit:
255
t
.
string
"import_status"
,
limit:
255
t
.
float
"repository_size"
,
limit:
24
,
default:
0.0
t
.
text
"merge_requests_template"
,
limit:
65535
t
.
integer
"star_count"
,
limit:
4
,
default:
0
,
null:
false
t
.
boolean
"merge_requests_rebase_enabled"
,
default:
false
t
.
string
"import_type"
,
limit:
255
t
.
string
"import_source"
,
limit:
255
t
.
integer
"approvals_before_merge"
,
limit:
4
,
default:
0
,
null:
false
t
.
boolean
"reset_approvals_on_push"
,
default:
true
t
.
integer
"commit_count"
,
limit:
4
,
default:
0
t
.
boolean
"merge_requests_ff_only_enabled"
,
default:
false
t
.
text
"issues_template"
,
limit:
65535
t
.
boolean
"mirror"
,
default:
false
,
null:
false
t
.
datetime
"mirror_last_update_at"
t
.
datetime
"mirror_last_successful_update_at"
t
.
integer
"mirror_user_id"
,
limit:
4
t
.
text
"import_error"
,
limit:
65535
t
.
integer
"ci_id"
,
limit:
4
t
.
string
"avatar"
t
.
string
"import_status"
t
.
float
"repository_size"
,
default:
0.0
t
.
integer
"star_count"
,
default:
0
,
null:
false
t
.
string
"import_type"
t
.
string
"import_source"
t
.
integer
"commit_count"
,
default:
0
t
.
text
"import_error"
t
.
integer
"ci_id"
t
.
boolean
"shared_runners_enabled"
,
default:
true
,
null:
false
t
.
string
"runners_token"
,
limit:
255
t
.
string
"build_coverage_regex"
,
limit:
255
t
.
string
"runners_token"
t
.
string
"build_coverage_regex"
t
.
boolean
"build_allow_git_fetch"
,
default:
true
,
null:
false
t
.
integer
"build_timeout"
,
limit:
4
,
default:
3600
,
null:
false
t
.
boolean
"mirror_trigger_builds"
,
default:
false
,
null:
false
t
.
integer
"build_timeout"
,
default:
3600
,
null:
false
t
.
boolean
"pending_delete"
,
default:
false
t
.
boolean
"public_builds"
,
default:
true
,
null:
false
t
.
boolean
"last_repository_check_failed"
...
...
@@ -1036,132 +912,90 @@ ActiveRecord::Schema.define(version: 20161109150329) do
t
.
boolean
"container_registry_enabled"
t
.
boolean
"only_allow_merge_if_build_succeeds"
,
default:
false
,
null:
false
t
.
boolean
"has_external_issue_tracker"
t
.
string
"repository_storage"
,
limit:
255
,
default:
"default"
,
null:
false
t
.
string
"repository_storage"
,
default:
"default"
,
null:
false
t
.
boolean
"request_access_enabled"
,
default:
false
,
null:
false
t
.
boolean
"has_external_wiki"
t
.
boolean
"repository_read_only"
t
.
boolean
"lfs_enabled"
t
.
integer
"repository_size_limit"
,
limit:
4
t
.
text
"description_html"
,
limit:
65535
t
.
text
"description_html"
t
.
boolean
"only_allow_merge_if_all_discussions_are_resolved"
,
default:
false
,
null:
false
end
add_index
"projects"
,
[
"ci_id"
],
name:
"index_projects_on_ci_id"
,
using: :btree
add_index
"projects"
,
[
"created_at"
],
name:
"index_projects_on_created_at"
,
using: :btree
add_index
"projects"
,
[
"creator_id"
],
name:
"index_projects_on_creator_id"
,
using: :btree
add_index
"projects"
,
[
"description"
],
name:
"index_projects_on_description_trigram"
,
using: :gin
,
opclasses:
{
"description"
=>
"gin_trgm_ops"
}
add_index
"projects"
,
[
"last_activity_at"
],
name:
"index_projects_on_last_activity_at"
,
using: :btree
add_index
"projects"
,
[
"last_repository_check_failed"
],
name:
"index_projects_on_last_repository_check_failed"
,
using: :btree
add_index
"projects"
,
[
"name"
],
name:
"index_projects_on_name_trigram"
,
using: :gin
,
opclasses:
{
"name"
=>
"gin_trgm_ops"
}
add_index
"projects"
,
[
"namespace_id"
],
name:
"index_projects_on_namespace_id"
,
using: :btree
add_index
"projects"
,
[
"path"
],
name:
"index_projects_on_path"
,
using: :btree
add_index
"projects"
,
[
"path"
],
name:
"index_projects_on_path_trigram"
,
using: :gin
,
opclasses:
{
"path"
=>
"gin_trgm_ops"
}
add_index
"projects"
,
[
"pending_delete"
],
name:
"index_projects_on_pending_delete"
,
using: :btree
add_index
"projects"
,
[
"runners_token"
],
name:
"index_projects_on_runners_token"
,
using: :btree
add_index
"projects"
,
[
"star_count"
],
name:
"index_projects_on_star_count"
,
using: :btree
add_index
"projects"
,
[
"visibility_level"
],
name:
"index_projects_on_visibility_level"
,
using: :btree
create_table
"protected_branch_merge_access_levels"
,
force: :cascade
do
|
t
|
t
.
integer
"protected_branch_id"
,
limit:
4
,
null:
false
t
.
integer
"access_level"
,
limit:
4
,
default:
40
t
.
integer
"protected_branch_id"
,
null:
false
t
.
integer
"access_level"
,
default:
40
,
null:
false
t
.
datetime
"created_at"
,
null:
false
t
.
datetime
"updated_at"
,
null:
false
t
.
integer
"user_id"
,
limit:
4
t
.
integer
"group_id"
,
limit:
4
end
add_index
"protected_branch_merge_access_levels"
,
[
"group_id"
],
name:
"fk_rails_98f3d044fe"
,
using: :btree
add_index
"protected_branch_merge_access_levels"
,
[
"protected_branch_id"
],
name:
"index_protected_branch_merge_access"
,
using: :btree
add_index
"protected_branch_merge_access_levels"
,
[
"user_id"
],
name:
"index_protected_branch_merge_access_levels_on_user_id"
,
using: :btree
create_table
"protected_branch_push_access_levels"
,
force: :cascade
do
|
t
|
t
.
integer
"protected_branch_id"
,
limit:
4
,
null:
false
t
.
integer
"access_level"
,
limit:
4
,
default:
40
t
.
integer
"protected_branch_id"
,
null:
false
t
.
integer
"access_level"
,
default:
40
,
null:
false
t
.
datetime
"created_at"
,
null:
false
t
.
datetime
"updated_at"
,
null:
false
t
.
integer
"user_id"
,
limit:
4
t
.
integer
"group_id"
,
limit:
4
end
add_index
"protected_branch_push_access_levels"
,
[
"group_id"
],
name:
"fk_rails_7111b68cdb"
,
using: :btree
add_index
"protected_branch_push_access_levels"
,
[
"protected_branch_id"
],
name:
"index_protected_branch_push_access"
,
using: :btree
add_index
"protected_branch_push_access_levels"
,
[
"user_id"
],
name:
"index_protected_branch_push_access_levels_on_user_id"
,
using: :btree
create_table
"protected_branches"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
limit:
4
,
null:
false
t
.
string
"name"
,
limit:
255
,
null:
false
t
.
integer
"project_id"
,
null:
false
t
.
string
"name"
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
end
add_index
"protected_branches"
,
[
"project_id"
],
name:
"index_protected_branches_on_project_id"
,
using: :btree
create_table
"push_rules"
,
force: :cascade
do
|
t
|
t
.
string
"force_push_regex"
,
limit:
255
t
.
string
"delete_branch_regex"
,
limit:
255
t
.
string
"commit_message_regex"
,
limit:
255
t
.
boolean
"deny_delete_tag"
t
.
integer
"project_id"
,
limit:
4
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"author_email_regex"
,
limit:
255
t
.
boolean
"member_check"
,
default:
false
,
null:
false
t
.
string
"file_name_regex"
,
limit:
255
t
.
boolean
"is_sample"
,
default:
false
t
.
integer
"max_file_size"
,
limit:
4
,
default:
0
,
null:
false
t
.
boolean
"prevent_secrets"
,
default:
false
,
null:
false
end
add_index
"push_rules"
,
[
"project_id"
],
name:
"index_push_rules_on_project_id"
,
using: :btree
create_table
"releases"
,
force: :cascade
do
|
t
|
t
.
string
"tag"
,
limit:
255
t
.
text
"description"
,
limit:
65535
t
.
integer
"project_id"
,
limit:
4
t
.
string
"tag"
t
.
text
"description"
t
.
integer
"project_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
text
"description_html"
,
limit:
65535
t
.
text
"description_html"
end
add_index
"releases"
,
[
"project_id"
,
"tag"
],
name:
"index_releases_on_project_id_and_tag"
,
using: :btree
add_index
"releases"
,
[
"project_id"
],
name:
"index_releases_on_project_id"
,
using: :btree
create_table
"remote_mirrors"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
limit:
4
t
.
string
"url"
,
limit:
255
t
.
boolean
"enabled"
,
default:
false
t
.
string
"update_status"
,
limit:
255
t
.
datetime
"last_update_at"
t
.
datetime
"last_successful_update_at"
t
.
string
"last_error"
,
limit:
255
t
.
text
"encrypted_credentials"
,
limit:
65535
t
.
string
"encrypted_credentials_iv"
,
limit:
255
t
.
string
"encrypted_credentials_salt"
,
limit:
255
t
.
datetime
"created_at"
,
null:
false
t
.
datetime
"updated_at"
,
null:
false
end
add_index
"remote_mirrors"
,
[
"project_id"
],
name:
"index_remote_mirrors_on_project_id"
,
using: :btree
create_table
"sent_notifications"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
limit:
4
t
.
integer
"noteable_id"
,
limit:
4
t
.
string
"noteable_type"
,
limit:
255
t
.
integer
"recipient_id"
,
limit:
4
t
.
string
"commit_id"
,
limit:
255
t
.
string
"reply_key"
,
limit:
255
,
null:
false
t
.
string
"line_code"
,
limit:
255
t
.
string
"note_type"
,
limit:
255
t
.
text
"position"
,
limit:
65535
t
.
integer
"project_id"
t
.
integer
"noteable_id"
t
.
string
"noteable_type"
t
.
integer
"recipient_id"
t
.
string
"commit_id"
t
.
string
"reply_key"
,
null:
false
t
.
string
"line_code"
t
.
string
"note_type"
t
.
text
"position"
end
add_index
"sent_notifications"
,
[
"reply_key"
],
name:
"index_sent_notifications_on_reply_key"
,
unique:
true
,
using: :btree
create_table
"services"
,
force: :cascade
do
|
t
|
t
.
string
"type"
,
limit:
255
t
.
string
"title"
,
limit:
255
t
.
integer
"project_id"
,
limit:
4
t
.
string
"type"
t
.
string
"title"
t
.
integer
"project_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
boolean
"active"
,
default:
false
,
null:
false
t
.
text
"properties"
,
limit:
65535
t
.
text
"properties"
t
.
boolean
"template"
,
default:
false
t
.
boolean
"push_events"
,
default:
true
t
.
boolean
"issues_events"
,
default:
true
...
...
@@ -1169,7 +1003,7 @@ ActiveRecord::Schema.define(version: 20161109150329) do
t
.
boolean
"tag_push_events"
,
default:
true
t
.
boolean
"note_events"
,
default:
true
,
null:
false
t
.
boolean
"build_events"
,
default:
false
,
null:
false
t
.
string
"category"
,
limit:
255
,
default:
"common"
,
null:
false
t
.
string
"category"
,
default:
"common"
,
null:
false
t
.
boolean
"default"
,
default:
false
t
.
boolean
"wiki_page_events"
,
default:
true
t
.
boolean
"pipeline_events"
,
default:
false
,
null:
false
...
...
@@ -1180,41 +1014,43 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"services"
,
[
"template"
],
name:
"index_services_on_template"
,
using: :btree
create_table
"snippets"
,
force: :cascade
do
|
t
|
t
.
string
"title"
,
limit:
255
t
.
text
"content"
,
limit:
4294967295
t
.
integer
"author_id"
,
limit:
4
,
null:
false
t
.
integer
"project_id"
,
limit:
4
t
.
string
"title"
t
.
text
"content"
t
.
integer
"author_id"
,
null:
false
t
.
integer
"project_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"file_name"
,
limit:
255
t
.
string
"type"
,
limit:
255
t
.
integer
"visibility_level"
,
limit:
4
,
default:
0
,
null:
false
t
.
text
"title_html"
,
limit:
65535
t
.
text
"content_html"
,
limit:
65535
t
.
string
"file_name"
t
.
string
"type"
t
.
integer
"visibility_level"
,
default:
0
,
null:
false
t
.
text
"title_html"
t
.
text
"content_html"
end
add_index
"snippets"
,
[
"author_id"
],
name:
"index_snippets_on_author_id"
,
using: :btree
add_index
"snippets"
,
[
"file_name"
],
name:
"index_snippets_on_file_name_trigram"
,
using: :gin
,
opclasses:
{
"file_name"
=>
"gin_trgm_ops"
}
add_index
"snippets"
,
[
"project_id"
],
name:
"index_snippets_on_project_id"
,
using: :btree
add_index
"snippets"
,
[
"title"
],
name:
"index_snippets_on_title_trigram"
,
using: :gin
,
opclasses:
{
"title"
=>
"gin_trgm_ops"
}
add_index
"snippets"
,
[
"updated_at"
],
name:
"index_snippets_on_updated_at"
,
using: :btree
add_index
"snippets"
,
[
"visibility_level"
],
name:
"index_snippets_on_visibility_level"
,
using: :btree
create_table
"spam_logs"
,
force: :cascade
do
|
t
|
t
.
integer
"user_id"
,
limit:
4
t
.
string
"source_ip"
,
limit:
255
t
.
string
"user_agent"
,
limit:
255
t
.
integer
"user_id"
t
.
string
"source_ip"
t
.
string
"user_agent"
t
.
boolean
"via_api"
t
.
string
"noteable_type"
,
limit:
255
t
.
string
"title"
,
limit:
255
t
.
text
"description"
,
limit:
65535
t
.
string
"noteable_type"
t
.
string
"title"
t
.
text
"description"
t
.
datetime
"created_at"
,
null:
false
t
.
datetime
"updated_at"
,
null:
false
t
.
boolean
"submitted_as_ham"
,
default:
false
,
null:
false
end
create_table
"subscriptions"
,
force: :cascade
do
|
t
|
t
.
integer
"user_id"
,
limit:
4
t
.
integer
"subscribable_id"
,
limit:
4
t
.
string
"subscribable_type"
,
limit:
255
t
.
integer
"user_id"
t
.
integer
"subscribable_id"
t
.
string
"subscribable_type"
t
.
boolean
"subscribed"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
...
...
@@ -1223,12 +1059,12 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"subscriptions"
,
[
"subscribable_id"
,
"subscribable_type"
,
"user_id"
],
name:
"subscriptions_user_id_and_ref_fields"
,
unique:
true
,
using: :btree
create_table
"taggings"
,
force: :cascade
do
|
t
|
t
.
integer
"tag_id"
,
limit:
4
t
.
integer
"taggable_id"
,
limit:
4
t
.
string
"taggable_type"
,
limit:
255
t
.
integer
"tagger_id"
,
limit:
4
t
.
string
"tagger_type"
,
limit:
255
t
.
string
"context"
,
limit:
255
t
.
integer
"tag_id"
t
.
integer
"taggable_id"
t
.
string
"taggable_type"
t
.
integer
"tagger_id"
t
.
string
"tagger_type"
t
.
string
"context"
t
.
datetime
"created_at"
end
...
...
@@ -1236,24 +1072,24 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"taggings"
,
[
"taggable_id"
,
"taggable_type"
,
"context"
],
name:
"index_taggings_on_taggable_id_and_taggable_type_and_context"
,
using: :btree
create_table
"tags"
,
force: :cascade
do
|
t
|
t
.
string
"name"
,
limit:
255
t
.
integer
"taggings_count"
,
limit:
4
,
default:
0
t
.
string
"name"
t
.
integer
"taggings_count"
,
default:
0
end
add_index
"tags"
,
[
"name"
],
name:
"index_tags_on_name"
,
unique:
true
,
using: :btree
create_table
"todos"
,
force: :cascade
do
|
t
|
t
.
integer
"user_id"
,
limit:
4
,
null:
false
t
.
integer
"project_id"
,
limit:
4
,
null:
false
t
.
integer
"target_id"
,
limit:
4
t
.
string
"target_type"
,
limit:
255
,
null:
false
t
.
integer
"author_id"
,
limit:
4
t
.
integer
"action"
,
limit:
4
,
null:
false
t
.
string
"state"
,
limit:
255
,
null:
false
t
.
integer
"user_id"
,
null:
false
t
.
integer
"project_id"
,
null:
false
t
.
integer
"target_id"
t
.
string
"target_type"
,
null:
false
t
.
integer
"author_id"
t
.
integer
"action"
,
null:
false
t
.
string
"state"
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
integer
"note_id"
,
limit:
4
t
.
string
"commit_id"
,
limit:
255
t
.
integer
"note_id"
t
.
string
"commit_id"
end
add_index
"todos"
,
[
"author_id"
],
name:
"index_todos_on_author_id"
,
using: :btree
...
...
@@ -1264,104 +1100,95 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"todos"
,
[
"user_id"
],
name:
"index_todos_on_user_id"
,
using: :btree
create_table
"trending_projects"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
limit:
4
,
null:
false
t
.
integer
"project_id"
,
null:
false
end
add_index
"trending_projects"
,
[
"project_id"
],
name:
"index_trending_projects_on_project_id"
,
using: :btree
create_table
"u2f_registrations"
,
force: :cascade
do
|
t
|
t
.
text
"certificate"
,
limit:
65535
t
.
string
"key_handle"
,
limit:
255
t
.
string
"public_key"
,
limit:
255
t
.
integer
"counter"
,
limit:
4
t
.
integer
"user_id"
,
limit:
4
t
.
text
"certificate"
t
.
string
"key_handle"
t
.
string
"public_key"
t
.
integer
"counter"
t
.
integer
"user_id"
t
.
datetime
"created_at"
,
null:
false
t
.
datetime
"updated_at"
,
null:
false
t
.
string
"name"
,
limit:
255
t
.
string
"name"
end
add_index
"u2f_registrations"
,
[
"key_handle"
],
name:
"index_u2f_registrations_on_key_handle"
,
using: :btree
add_index
"u2f_registrations"
,
[
"user_id"
],
name:
"index_u2f_registrations_on_user_id"
,
using: :btree
create_table
"user_activities"
,
force: :cascade
do
|
t
|
t
.
integer
"user_id"
,
limit:
4
t
.
datetime
"last_activity_at"
,
null:
false
end
add_index
"user_activities"
,
[
"user_id"
],
name:
"index_user_activities_on_user_id"
,
unique:
true
,
using: :btree
create_table
"user_agent_details"
,
force: :cascade
do
|
t
|
t
.
string
"user_agent"
,
limit:
255
,
null:
false
t
.
string
"ip_address"
,
limit:
255
,
null:
false
t
.
integer
"subject_id"
,
limit:
4
,
null:
false
t
.
string
"subject_type"
,
limit:
255
,
null:
false
t
.
string
"user_agent"
,
null:
false
t
.
string
"ip_address"
,
null:
false
t
.
integer
"subject_id"
,
null:
false
t
.
string
"subject_type"
,
null:
false
t
.
boolean
"submitted"
,
default:
false
,
null:
false
t
.
datetime
"created_at"
,
null:
false
t
.
datetime
"updated_at"
,
null:
false
end
create_table
"users"
,
force: :cascade
do
|
t
|
t
.
string
"email"
,
limit:
255
,
default:
""
,
null:
false
t
.
string
"encrypted_password"
,
limit:
255
,
default:
""
,
null:
false
t
.
string
"reset_password_token"
,
limit:
255
t
.
string
"email"
,
default:
""
,
null:
false
t
.
string
"encrypted_password"
,
default:
""
,
null:
false
t
.
string
"reset_password_token"
t
.
datetime
"reset_password_sent_at"
t
.
datetime
"remember_created_at"
t
.
integer
"sign_in_count"
,
limit:
4
,
default:
0
t
.
integer
"sign_in_count"
,
default:
0
t
.
datetime
"current_sign_in_at"
t
.
datetime
"last_sign_in_at"
t
.
string
"current_sign_in_ip"
,
limit:
255
t
.
string
"last_sign_in_ip"
,
limit:
255
t
.
string
"current_sign_in_ip"
t
.
string
"last_sign_in_ip"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"name"
,
limit:
255
t
.
string
"name"
t
.
boolean
"admin"
,
default:
false
,
null:
false
t
.
integer
"projects_limit"
,
limit:
4
,
default:
10
t
.
string
"skype"
,
limit:
255
,
default:
""
,
null:
false
t
.
string
"linkedin"
,
limit:
255
,
default:
""
,
null:
false
t
.
string
"twitter"
,
limit:
255
,
default:
""
,
null:
false
t
.
string
"authentication_token"
,
limit:
255
t
.
integer
"theme_id"
,
limit:
4
,
default:
1
,
null:
false
t
.
string
"bio"
,
limit:
255
t
.
integer
"failed_attempts"
,
limit:
4
,
default:
0
t
.
integer
"projects_limit"
,
default:
10
t
.
string
"skype"
,
default:
""
,
null:
false
t
.
string
"linkedin"
,
default:
""
,
null:
false
t
.
string
"twitter"
,
default:
""
,
null:
false
t
.
string
"authentication_token"
t
.
integer
"theme_id"
,
default:
1
,
null:
false
t
.
string
"bio"
t
.
integer
"failed_attempts"
,
default:
0
t
.
datetime
"locked_at"
t
.
string
"username"
,
limit:
255
t
.
string
"username"
t
.
boolean
"can_create_group"
,
default:
true
,
null:
false
t
.
boolean
"can_create_team"
,
default:
true
,
null:
false
t
.
string
"state"
,
limit:
255
t
.
integer
"color_scheme_id"
,
limit:
4
,
default:
1
,
null:
false
t
.
string
"state"
t
.
integer
"color_scheme_id"
,
default:
1
,
null:
false
t
.
datetime
"password_expires_at"
t
.
integer
"created_by_id"
,
limit:
4
t
.
integer
"created_by_id"
t
.
datetime
"last_credential_check_at"
t
.
string
"avatar"
,
limit:
255
t
.
string
"confirmation_token"
,
limit:
255
t
.
string
"avatar"
t
.
string
"confirmation_token"
t
.
datetime
"confirmed_at"
t
.
datetime
"confirmation_sent_at"
t
.
string
"unconfirmed_email"
,
limit:
255
t
.
string
"unconfirmed_email"
t
.
boolean
"hide_no_ssh_key"
,
default:
false
t
.
string
"website_url"
,
limit:
255
,
default:
""
,
null:
false
t
.
datetime
"admin_email_unsubscribed_at"
t
.
string
"notification_email"
,
limit:
255
t
.
string
"website_url"
,
default:
""
,
null:
false
t
.
string
"notification_email"
t
.
boolean
"hide_no_password"
,
default:
false
t
.
boolean
"password_automatically_set"
,
default:
false
t
.
string
"location"
,
limit:
255
t
.
string
"encrypted_otp_secret"
,
limit:
255
t
.
string
"encrypted_otp_secret_iv"
,
limit:
255
t
.
string
"encrypted_otp_secret_salt"
,
limit:
255
t
.
string
"location"
t
.
string
"encrypted_otp_secret"
t
.
string
"encrypted_otp_secret_iv"
t
.
string
"encrypted_otp_secret_salt"
t
.
boolean
"otp_required_for_login"
,
default:
false
,
null:
false
t
.
text
"otp_backup_codes"
,
limit:
65535
t
.
string
"public_email"
,
limit:
255
,
default:
""
,
null:
false
t
.
integer
"dashboard"
,
limit:
4
,
default:
0
t
.
integer
"project_view"
,
limit:
4
,
default:
0
t
.
integer
"consumed_timestep"
,
limit:
4
t
.
integer
"layout"
,
limit:
4
,
default:
0
t
.
text
"otp_backup_codes"
t
.
string
"public_email"
,
default:
""
,
null:
false
t
.
integer
"dashboard"
,
default:
0
t
.
integer
"project_view"
,
default:
0
t
.
integer
"consumed_timestep"
t
.
integer
"layout"
,
default:
0
t
.
boolean
"hide_project_limit"
,
default:
false
t
.
text
"note"
,
limit:
65535
t
.
string
"unlock_token"
,
limit:
255
t
.
string
"unlock_token"
t
.
datetime
"otp_grace_period_started_at"
t
.
boolean
"ldap_email"
,
default:
false
,
null:
false
t
.
boolean
"external"
,
default:
false
t
.
string
"organization"
,
limit:
255
t
.
string
"incoming_email_token"
,
limit:
255
t
.
string
"organization"
t
.
string
"incoming_email_token"
end
add_index
"users"
,
[
"admin"
],
name:
"index_users_on_admin"
,
using: :btree
...
...
@@ -1370,15 +1197,18 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_index
"users"
,
[
"created_at"
],
name:
"index_users_on_created_at"
,
using: :btree
add_index
"users"
,
[
"current_sign_in_at"
],
name:
"index_users_on_current_sign_in_at"
,
using: :btree
add_index
"users"
,
[
"email"
],
name:
"index_users_on_email"
,
unique:
true
,
using: :btree
add_index
"users"
,
[
"email"
],
name:
"index_users_on_email_trigram"
,
using: :gin
,
opclasses:
{
"email"
=>
"gin_trgm_ops"
}
add_index
"users"
,
[
"incoming_email_token"
],
name:
"index_users_on_incoming_email_token"
,
using: :btree
add_index
"users"
,
[
"name"
],
name:
"index_users_on_name"
,
using: :btree
add_index
"users"
,
[
"name"
],
name:
"index_users_on_name_trigram"
,
using: :gin
,
opclasses:
{
"name"
=>
"gin_trgm_ops"
}
add_index
"users"
,
[
"reset_password_token"
],
name:
"index_users_on_reset_password_token"
,
unique:
true
,
using: :btree
add_index
"users"
,
[
"state"
],
name:
"index_users_on_state"
,
using: :btree
add_index
"users"
,
[
"username"
],
name:
"index_users_on_username"
,
using: :btree
add_index
"users"
,
[
"username"
],
name:
"index_users_on_username_trigram"
,
using: :gin
,
opclasses:
{
"username"
=>
"gin_trgm_ops"
}
create_table
"users_star_projects"
,
force: :cascade
do
|
t
|
t
.
integer
"project_id"
,
limit:
4
,
null:
false
t
.
integer
"user_id"
,
limit:
4
,
null:
false
t
.
integer
"project_id"
,
null:
false
t
.
integer
"user_id"
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
end
...
...
@@ -1389,28 +1219,26 @@ ActiveRecord::Schema.define(version: 20161109150329) do
create_table
"web_hooks"
,
force: :cascade
do
|
t
|
t
.
string
"url"
,
limit:
2000
t
.
integer
"project_id"
,
limit:
4
t
.
integer
"project_id"
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
string
"type"
,
limit:
255
,
default:
"ProjectHook"
t
.
integer
"service_id"
,
limit:
4
t
.
string
"type"
,
default:
"ProjectHook"
t
.
integer
"service_id"
t
.
boolean
"push_events"
,
default:
true
,
null:
false
t
.
boolean
"issues_events"
,
default:
false
,
null:
false
t
.
boolean
"merge_requests_events"
,
default:
false
,
null:
false
t
.
boolean
"tag_push_events"
,
default:
false
t
.
integer
"group_id"
,
limit:
4
t
.
boolean
"note_events"
,
default:
false
,
null:
false
t
.
boolean
"enable_ssl_verification"
,
default:
true
t
.
boolean
"build_events"
,
default:
false
,
null:
false
t
.
string
"token"
,
limit:
255
t
.
boolean
"wiki_page_events"
,
default:
false
,
null:
false
t
.
string
"token"
t
.
boolean
"pipeline_events"
,
default:
false
,
null:
false
t
.
boolean
"confidential_issues_events"
,
default:
false
,
null:
false
end
add_index
"web_hooks"
,
[
"project_id"
],
name:
"index_web_hooks_on_project_id"
,
using: :btree
add_foreign_key
"approver_groups"
,
"namespaces"
,
column:
"group_id"
,
on_delete: :cascade
add_foreign_key
"boards"
,
"projects"
add_foreign_key
"issue_metrics"
,
"issues"
,
on_delete: :cascade
add_foreign_key
"label_priorities"
,
"labels"
,
on_delete: :cascade
...
...
@@ -1422,17 +1250,9 @@ ActiveRecord::Schema.define(version: 20161109150329) do
add_foreign_key
"merge_request_metrics"
,
"merge_requests"
,
on_delete: :cascade
add_foreign_key
"merge_requests_closing_issues"
,
"issues"
,
on_delete: :cascade
add_foreign_key
"merge_requests_closing_issues"
,
"merge_requests"
,
on_delete: :cascade
add_foreign_key
"path_locks"
,
"projects"
add_foreign_key
"path_locks"
,
"users"
add_foreign_key
"personal_access_tokens"
,
"users"
add_foreign_key
"protected_branch_merge_access_levels"
,
"namespaces"
,
column:
"group_id"
add_foreign_key
"protected_branch_merge_access_levels"
,
"protected_branches"
add_foreign_key
"protected_branch_merge_access_levels"
,
"users"
add_foreign_key
"protected_branch_push_access_levels"
,
"namespaces"
,
column:
"group_id"
add_foreign_key
"protected_branch_push_access_levels"
,
"protected_branches"
add_foreign_key
"protected_branch_push_access_levels"
,
"users"
add_foreign_key
"remote_mirrors"
,
"projects"
add_foreign_key
"trending_projects"
,
"projects"
,
on_delete: :cascade
add_foreign_key
"u2f_registrations"
,
"users"
add_foreign_key
"user_activities"
,
"users"
,
on_delete: :cascade
end
lib/gitlab/cycle_analytics/base_event.rb
View file @
d5b673da
module
Gitlab
module
CycleAnalytics
class
BaseEvent
extend
MetricsTables
include
MetricsTables
class
<<
self
attr_reader
:stage
,
:start_time_attrs
,
:end_time_attrs
,
:projections
attr_reader
:stage
,
:start_time_attrs
,
:end_time_attrs
,
:projections
,
:query
def
order
@order
||
@start_time_attrs
def
initialize
(
project
:,
options
:)
@query
=
EventsQuery
.
new
(
project:
project
,
options:
options
)
@project
=
project
@options
=
options
end
def
fetch
@query
.
execute
(
self
).
map
do
|
event
|
serialize
(
event
)
if
has_permission?
(
event
[
'id'
])
end
end
def
query
(
_base_query
);
end
def
custom_
query
(
_base_query
);
end
def
fetch
(
query
)
query
.
execute
(
self
).
map
{
|
event
|
serialize
(
event
,
query
)
}
end
def
order
@order
||
@start_time_attrs
end
private
private
def
serialize
(
_event
,
_query
)
raise
NotImplementedError
.
new
(
"Expected
#{
self
.
name
}
to implement serialize(event, query)"
)
end
def
serialize
(
_event
)
raise
NotImplementedError
.
new
(
"Expected
#{
self
.
name
}
to implement serialize(event)"
)
end
def
has_permission?
(
_id
)
true
end
end
end
...
...
lib/gitlab/cycle_analytics/code_event.rb
View file @
d5b673da
module
Gitlab
module
CycleAnalytics
class
CodeEvent
<
BaseEvent
@stage
=
:code
@start_time_attrs
=
issue_metrics_table
[
:first_mentioned_in_commit_at
]
def
initialize
(
*
args
)
@stage
=
:code
@start_time_attrs
=
issue_metrics_table
[
:first_mentioned_in_commit_at
]
@end_time_attrs
=
mr_table
[
:created_at
]
@projections
=
[
mr_table
[
:title
],
mr_table
[
:iid
],
mr_table
[
:id
],
mr_table
[
:created_at
],
mr_table
[
:state
],
mr_table
[
:author_id
]]
@order
=
mr_table
[
:created_at
]
@end_time_attrs
=
mr_table
[
:created_at
]
@projections
=
[
mr_table
[
:title
],
mr_table
[
:iid
],
mr_table
[
:id
],
mr_table
[
:created_at
],
mr_table
[
:state
],
mr_table
[
:author_id
]]
super
(
*
args
)
end
@order
=
mr_table
[
:created_at
]
private
def
se
lf
.
serialize
(
event
,
query
)
def
se
rialize
(
event
)
event
[
'author'
]
=
User
.
find
(
event
.
delete
(
'author_id'
))
AnalyticsMergeRequestSerializer
.
new
(
project:
query
.
project
).
represent
(
event
).
as_json
AnalyticsMergeRequestSerializer
.
new
(
project:
@project
).
represent
(
event
).
as_json
end
def
has_permission?
(
id
)
@options
[
:current_user
].
can?
(
:read_merge_request
,
MergeRequest
.
find
(
id
))
end
end
end
...
...
lib/gitlab/cycle_analytics/event_config.rb
deleted
100644 → 0
View file @
9c995725
module
Gitlab
module
CycleAnalytics
class
TestEvent
<
BaseEvent
@start_time_attrs
=
mr_table
[
:created_at
]
@end_time_attrs
=
mr_metrics_table
[
:merged_at
]
@projections
=
[
mr_table
[
:title
],
mr_table
[
:iid
],
mr_table
[
:id
],
mr_table
[
:created_at
],
mr_table
[
:state
],
mr_table
[
:author_id
]]
end
end
end
lib/gitlab/cycle_analytics/events.rb
View file @
d5b673da
...
...
@@ -3,35 +3,35 @@ module Gitlab
class
Events
def
initialize
(
project
:,
options
:)
@project
=
project
@
query
=
EventsQuery
.
new
(
project:
project
,
options:
options
)
@
options
=
options
end
def
issue_events
IssueEvent
.
fetch
(
@query
)
IssueEvent
.
new
(
project:
@project
,
options:
@options
).
fetch
end
def
plan_events
PlanEvent
.
fetch
(
@query
)
PlanEvent
.
new
(
project:
@project
,
options:
@options
).
fetch
end
def
code_events
CodeEvent
.
fetch
(
@query
)
CodeEvent
.
new
(
project:
@project
,
options:
@options
).
fetch
end
def
test_events
TestEvent
.
fetch
(
@query
)
TestEvent
.
new
(
project:
@project
,
options:
@options
).
fetch
end
def
review_events
ReviewEvent
.
fetch
(
@query
)
ReviewEvent
.
new
(
project:
@project
,
options:
@options
).
fetch
end
def
staging_events
StagingEvent
.
fetch
(
@query
)
StagingEvent
.
new
(
project:
@project
,
options:
@options
).
fetch
end
def
production_events
ProductionEvent
.
fetch
(
@query
)
ProductionEvent
.
new
(
project:
@project
,
options:
@options
).
fetch
end
end
end
...
...
lib/gitlab/cycle_analytics/events_query.rb
View file @
d5b673da
...
...
@@ -22,7 +22,7 @@ module Gitlab
base_query
=
@fetcher
.
base_query_for
(
@stage_class
.
stage
)
diff_fn
=
@fetcher
.
subtract_datetimes_diff
(
base_query
,
@stage_class
.
start_time_attrs
,
@stage_class
.
end_time_attrs
)
@stage_class
.
query
(
base_query
)
@stage_class
.
custom_
query
(
base_query
)
base_query
.
project
(
extract_epoch
(
diff_fn
).
as
(
'total_time'
),
*
@stage_class
.
projections
).
order
(
@stage_class
.
order
.
desc
)
end
...
...
lib/gitlab/cycle_analytics/issue_event.rb
View file @
d5b673da
module
Gitlab
module
CycleAnalytics
class
IssueEvent
<
BaseEvent
@stage
=
:issue
@start_time_attrs
=
issue_table
[
:created_at
]
def
initialize
(
*
args
)
@stage
=
:issue
@start_time_attrs
=
issue_table
[
:created_at
]
@end_time_attrs
=
[
issue_metrics_table
[
:first_associated_with_milestone_at
],
issue_metrics_table
[
:first_added_to_board_at
]]
@projections
=
[
issue_table
[
:title
],
issue_table
[
:iid
],
issue_table
[
:id
],
issue_table
[
:created_at
],
issue_table
[
:author_id
]]
@end_time_attrs
=
[
issue_metrics_table
[
:first_associated_with_milestone_at
],
issue_metrics_table
[
:first_added_to_board_at
]]
super
(
*
args
)
end
@projections
=
[
issue_table
[
:title
],
issue_table
[
:iid
],
issue_table
[
:id
],
issue_table
[
:created_at
],
issue_table
[
:author_id
]]
private
def
se
lf
.
serialize
(
event
,
query
)
def
se
rialize
(
event
)
event
[
'author'
]
=
User
.
find
(
event
.
delete
(
'author_id'
))
AnalyticsIssueSerializer
.
new
(
project:
query
.
project
).
represent
(
event
).
as_json
AnalyticsIssueSerializer
.
new
(
project:
@project
).
represent
(
event
).
as_json
end
def
has_permission?
(
id
)
@options
[
:current_user
].
can?
(
:read_issue
,
Issue
.
find
(
id
))
end
end
end
...
...
lib/gitlab/cycle_analytics/plan_event.rb
View file @
d5b673da
module
Gitlab
module
CycleAnalytics
class
PlanEvent
<
BaseEvent
@stage
=
:plan
@start_time_attrs
=
issue_metrics_table
[
:first_associated_with_milestone_at
]
@end_time_attrs
=
[
issue_metrics_table
[
:first_added_to_board_at
],
issue_metrics_table
[
:first_mentioned_in_commit_at
]]
@projections
=
[
mr_diff_table
[
:st_commits
].
as
(
'commits'
),
issue_metrics_table
[
:first_mentioned_in_commit_at
]]
def
initialize
(
*
args
)
@stage
=
:plan
@start_time_attrs
=
issue_metrics_table
[
:first_associated_with_milestone_at
]
@end_time_attrs
=
[
issue_metrics_table
[
:first_added_to_board_at
],
issue_metrics_table
[
:first_mentioned_in_commit_at
]]
@projections
=
[
mr_diff_table
[
:st_commits
].
as
(
'commits'
),
issue_metrics_table
[
:first_mentioned_in_commit_at
]]
super
(
*
args
)
end
class
<<
self
def
query
(
base_query
)
base_query
.
join
(
mr_diff_table
).
on
(
mr_diff_table
[
:merge_request_id
].
eq
(
mr_table
[
:id
]))
end
def
custom_query
(
base_query
)
base_query
.
join
(
mr_diff_table
).
on
(
mr_diff_table
[
:merge_request_id
].
eq
(
mr_table
[
:id
]))
end
private
private
def
serialize
(
event
,
query
)
st_commit
=
first_time_reference_commit
(
event
.
delete
(
'commits'
),
event
)
def
serialize
(
event
)
st_commit
=
first_time_reference_commit
(
event
.
delete
(
'commits'
),
event
)
return
unless
st_commit
return
unless
st_commit
serialize_commit
(
event
,
st_commit
,
query
)
end
serialize_commit
(
event
,
st_commit
,
query
)
end
def
first_time_reference_commit
(
commits
,
event
)
YAML
.
load
(
commits
).
find
do
|
commit
|
next
unless
commit
[
:committed_date
]
&&
event
[
'first_mentioned_in_commit_at'
]
def
first_time_reference_commit
(
commits
,
event
)
YAML
.
load
(
commits
).
find
do
|
commit
|
next
unless
commit
[
:committed_date
]
&&
event
[
'first_mentioned_in_commit_at'
]
commit
[
:committed_date
].
to_i
==
DateTime
.
parse
(
event
[
'first_mentioned_in_commit_at'
].
to_s
).
to_i
end
commit
[
:committed_date
].
to_i
==
DateTime
.
parse
(
event
[
'first_mentioned_in_commit_at'
].
to_s
).
to_i
end
end
def
serialize_commit
(
event
,
st_commit
,
query
)
commit
=
Commit
.
new
(
Gitlab
::
Git
::
Commit
.
new
(
st_commit
),
@project
)
def
serialize_commit
(
event
,
st_commit
,
query
)
commit
=
Commit
.
new
(
Gitlab
::
Git
::
Commit
.
new
(
st_commit
),
@project
)
AnalyticsCommitSerializer
.
new
(
project:
query
.
project
,
total_time:
event
[
'total_time'
]).
represent
(
commit
).
as_json
end
AnalyticsCommitSerializer
.
new
(
project:
@project
,
total_time:
event
[
'total_time'
]).
represent
(
commit
).
as_json
end
end
end
...
...
lib/gitlab/cycle_analytics/production_event.rb
View file @
d5b673da
module
Gitlab
module
CycleAnalytics
class
ProductionEvent
<
BaseEvent
@stage
=
:production
@start_time_attrs
=
issue_table
[
:created_at
]
def
initialize
(
*
args
)
@stage
=
:production
@start_time_attrs
=
issue_table
[
:created_at
]
@end_time_attrs
=
mr_metrics_table
[
:first_deployed_to_production_at
]
@projections
=
[
issue_table
[
:title
],
issue_table
[
:iid
],
issue_table
[
:id
],
issue_table
[
:created_at
],
issue_table
[
:author_id
]]
@end_time_attrs
=
mr_metrics_table
[
:first_deployed_to_production_at
]
super
(
*
args
)
end
@projections
=
[
issue_table
[
:title
],
issue_table
[
:iid
],
issue_table
[
:id
],
issue_table
[
:created_at
],
issue_table
[
:author_id
]]
private
def
se
lf
.
serialize
(
event
,
query
)
def
se
rialize
(
event
)
event
[
'author'
]
=
User
.
find
(
event
.
delete
(
'author_id'
))
AnalyticsIssueSerializer
.
new
(
project:
query
.
project
).
represent
(
event
).
as_json
AnalyticsIssueSerializer
.
new
(
project:
@project
).
represent
(
event
).
as_json
end
def
has_permission?
(
id
)
@options
[
:current_user
].
can?
(
:read_issue
,
Issue
.
find
(
id
))
end
end
end
...
...
lib/gitlab/cycle_analytics/review_event.rb
View file @
d5b673da
module
Gitlab
module
CycleAnalytics
class
ReviewEvent
<
BaseEvent
@stage
=
:review
@start_time_attrs
=
mr_table
[
:created_at
]
@end_time_attrs
=
mr_metrics_table
[
:merged_at
]
@projections
=
[
mr_table
[
:title
],
mr_table
[
:iid
],
mr_table
[
:id
],
mr_table
[
:created_at
],
mr_table
[
:state
],
mr_table
[
:author_id
]]
def
initialize
(
*
args
)
@stage
=
:review
@start_time_attrs
=
mr_table
[
:created_at
]
@end_time_attrs
=
mr_metrics_table
[
:merged_at
]
@projections
=
[
mr_table
[
:title
],
mr_table
[
:iid
],
mr_table
[
:id
],
mr_table
[
:created_at
],
mr_table
[
:state
],
mr_table
[
:author_id
]]
def
self
.
serialize
(
event
,
query
)
super
(
*
args
)
end
def
serialize
(
event
)
event
[
'author'
]
=
User
.
find
(
event
.
delete
(
'author_id'
))
AnalyticsMergeRequestSerializer
.
new
(
project:
query
.
project
).
represent
(
event
).
as_json
AnalyticsMergeRequestSerializer
.
new
(
project:
@project
).
represent
(
event
).
as_json
end
def
has_permission?
(
id
)
@options
[
:current_user
].
can?
(
:read_merge_request
,
MergeRequest
.
find
(
id
))
end
end
end
...
...
lib/gitlab/cycle_analytics/staging_event.rb
View file @
d5b673da
module
Gitlab
module
CycleAnalytics
class
StagingEvent
<
BaseEvent
@stage
=
:staging
@start_time_attrs
=
mr_metrics_table
[
:merged_at
]
@end_time_attrs
=
mr_metrics_table
[
:first_deployed_to_production_at
]
@projections
=
[
build_table
[
:id
]]
@order
=
build_table
[
:created_at
]
def
initialize
(
*
args
)
@stage
=
:staging
@start_time_attrs
=
mr_metrics_table
[
:merged_at
]
@end_time_attrs
=
mr_metrics_table
[
:first_deployed_to_production_at
]
@projections
=
[
build_table
[
:id
]]
@order
=
build_table
[
:created_at
]
def
self
.
query
(
base_query
)
super
(
*
args
)
end
def
custom_query
(
base_query
)
base_query
.
join
(
build_table
).
on
(
mr_metrics_table
[
:pipeline_id
].
eq
(
build_table
[
:commit_id
]))
end
def
self
.
serialize
(
event
,
_query
)
private
def
serialize
(
event
)
build
=
::
Ci
::
Build
.
find
(
event
[
'id'
])
AnalyticsBuildSerializer
.
new
.
represent
(
build
).
as_json
...
...
lib/gitlab/cycle_analytics/test_event.rb
View file @
d5b673da
module
Gitlab
module
CycleAnalytics
class
TestEvent
<
BaseEvent
@stage
=
:test
@start_time_attrs
=
mr_metrics_table
[
:latest_build_started_at
]
@end_time_attrs
=
mr_metrics_table
[
:latest_build_finished_at
]
@projections
=
[
build_table
[
:id
]]
@order
=
build_table
[
:created_at
]
def
initialize
(
*
args
)
@stage
=
:test
@start_time_attrs
=
mr_metrics_table
[
:latest_build_started_at
]
@end_time_attrs
=
mr_metrics_table
[
:latest_build_finished_at
]
@projections
=
[
build_table
[
:id
]]
@order
=
build_table
[
:created_at
]
def
self
.
query
(
base_query
)
super
(
*
args
)
end
def
custom_query
(
base_query
)
base_query
.
join
(
build_table
).
on
(
mr_metrics_table
[
:pipeline_id
].
eq
(
build_table
[
:commit_id
]))
end
def
self
.
serialize
(
event
,
_query
)
private
def
serialize
(
event
)
build
=
::
Ci
::
Build
.
find
(
event
[
'id'
])
AnalyticsBuildSerializer
.
new
.
represent
(
build
).
as_json
...
...
spec/lib/gitlab/cycle_analytics/events_spec.rb
View file @
d5b673da
...
...
@@ -6,7 +6,7 @@ describe Gitlab::CycleAnalytics::Events do
let
(
:user
)
{
create
(
:user
,
:admin
)
}
let!
(
:context
)
{
create
(
:issue
,
project:
project
,
created_at:
2
.
days
.
ago
)
}
subject
{
described_class
.
new
(
project:
project
,
options:
{
from:
from_date
})
}
subject
{
described_class
.
new
(
project:
project
,
options:
{
from:
from_date
,
current_user:
user
})
}
before
do
allow_any_instance_of
(
Gitlab
::
ReferenceExtractor
).
to
receive
(
:issues
).
and_return
([
context
])
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment