diff options
author | Filipa Lacerda <filipa@gitlab.com> | 2018-01-04 22:39:01 +0000 |
---|---|---|
committer | Filipa Lacerda <filipa@gitlab.com> | 2018-01-04 22:39:01 +0000 |
commit | a29a91f02d5de7a42a423f1c9ea2a18e325ef9ee (patch) | |
tree | 63956a640c01370f929fa25dad43f83e4714dec5 /app/serializers | |
parent | 3b8cee95a7d62bce3b3890ff8618073958dc2fb0 (diff) | |
parent | 6f1b4dc76b4619f538b7216ad3a10ca9336d0c2b (diff) | |
download | gitlab-ce-a29a91f02d5de7a42a423f1c9ea2a18e325ef9ee.tar.gz |
Merge branch 'master' into 22643-manual-job-page
* master: (200 commits)
Fix issue boards scroll config.
Added multi editor setting on the profile preferences page
fix missing import of timeWeek which would cause errors in prometheus graphs with deployments
Remove downcase from special path helper
Rename db:seed_fu-{pg,mysql} to gitlab:setup-{pg,mysql}
Fix error when viewing diffs without blobs
Moves prettier to dev dependency
Eager load event target authors whenever possible
Do not run ee_compat_check on security branches
Include integration tests in CE/EE testing documentation
41054-Disallow creation of new Kubernetes integrations
Resolve "Resizable file list and commit panel"
Make tooltip placement bottom by default as per design guidelines
Fix groups list icon, timestamp alignment and row height
Avoid leaving a push event empty if payload cannot be created
Move git operations for UpdateRemoteMirrorService into Gitlab::Git
Move delete_remote_branches from Gitlab::Shell to Gitlab::Git::Repository
Move push_remote_branches from Gitlab::Shell to Gitlab::Git::Repository
Update Kubernetes service documentation
fix issue #37843
...
Diffstat (limited to 'app/serializers')
-rw-r--r-- | app/serializers/event_entity.rb | 4 | ||||
-rw-r--r-- | app/serializers/merge_request_metrics_entity.rb | 6 | ||||
-rw-r--r-- | app/serializers/merge_request_widget_entity.rb | 31 |
3 files changed, 34 insertions, 7 deletions
diff --git a/app/serializers/event_entity.rb b/app/serializers/event_entity.rb deleted file mode 100644 index 935d67a4f37..00000000000 --- a/app/serializers/event_entity.rb +++ /dev/null @@ -1,4 +0,0 @@ -class EventEntity < Grape::Entity - expose :author, using: UserEntity - expose :updated_at -end diff --git a/app/serializers/merge_request_metrics_entity.rb b/app/serializers/merge_request_metrics_entity.rb new file mode 100644 index 00000000000..3548107ac16 --- /dev/null +++ b/app/serializers/merge_request_metrics_entity.rb @@ -0,0 +1,6 @@ +class MergeRequestMetricsEntity < Grape::Entity + expose :latest_closed_at, as: :closed_at + expose :merged_at + expose :latest_closed_by, as: :closed_by, using: UserEntity + expose :merged_by, using: UserEntity +end diff --git a/app/serializers/merge_request_widget_entity.rb b/app/serializers/merge_request_widget_entity.rb index f8e59b2ffd7..e905e6876c2 100644 --- a/app/serializers/merge_request_widget_entity.rb +++ b/app/serializers/merge_request_widget_entity.rb @@ -17,9 +17,11 @@ class MergeRequestWidgetEntity < IssuableEntity merge_request.project.merge_requests_ff_only_enabled end - # Events - expose :merge_event, using: EventEntity - expose :closed_event, using: EventEntity + expose :metrics do |merge_request| + metrics = build_metrics(merge_request) + + MergeRequestMetricsEntity.new(metrics).as_json + end # User entities expose :merge_user, using: UserEntity @@ -178,4 +180,27 @@ class MergeRequestWidgetEntity < IssuableEntity @presenters ||= {} @presenters[merge_request] ||= MergeRequestPresenter.new(merge_request, current_user: current_user) end + + # Once SchedulePopulateMergeRequestMetricsWithEventsData fully runs, + # we can remove this method and just serialize MergeRequest#metrics + # instead. See https://gitlab.com/gitlab-org/gitlab-ce/issues/41587 + def build_metrics(merge_request) + # There's no need to query and serialize metrics data for merge requests that are not + # merged or closed. + return unless merge_request.merged? || merge_request.closed? + return merge_request.metrics if merge_request.merged? && merge_request.metrics&.merged_by_id + return merge_request.metrics if merge_request.closed? && merge_request.metrics&.latest_closed_by_id + + build_metrics_from_events(merge_request) + end + + def build_metrics_from_events(merge_request) + closed_event = merge_request.closed_event + merge_event = merge_request.merge_event + + MergeRequest::Metrics.new(latest_closed_at: closed_event&.updated_at, + latest_closed_by: closed_event&.author, + merged_at: merge_event&.updated_at, + merged_by: merge_event&.author) + end end |