Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilipa Lacerda <filipa@gitlab.com>2018-01-05 01:39:01 +0300
committerFilipa Lacerda <filipa@gitlab.com>2018-01-05 01:39:01 +0300
commita29a91f02d5de7a42a423f1c9ea2a18e325ef9ee (patch)
tree63956a640c01370f929fa25dad43f83e4714dec5 /app/serializers
parent3b8cee95a7d62bce3b3890ff8618073958dc2fb0 (diff)
parent6f1b4dc76b4619f538b7216ad3a10ca9336d0c2b (diff)
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.rb4
-rw-r--r--app/serializers/merge_request_metrics_entity.rb6
-rw-r--r--app/serializers/merge_request_widget_entity.rb31
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