summaryrefslogtreecommitdiff
path: root/lib/atlassian
diff options
context:
space:
mode:
Diffstat (limited to 'lib/atlassian')
-rw-r--r--lib/atlassian/jira_connect/client.rb18
-rw-r--r--lib/atlassian/jira_connect/serializers/base_entity.rb6
-rw-r--r--lib/atlassian/jira_connect/serializers/pull_request_entity.rb8
-rw-r--r--lib/atlassian/jira_connect/serializers/repository_entity.rb10
4 files changed, 33 insertions, 9 deletions
diff --git a/lib/atlassian/jira_connect/client.rb b/lib/atlassian/jira_connect/client.rb
index 0b578c03782..f81ed462174 100644
--- a/lib/atlassian/jira_connect/client.rb
+++ b/lib/atlassian/jira_connect/client.rb
@@ -3,19 +3,25 @@
module Atlassian
module JiraConnect
class Client < Gitlab::HTTP
+ def self.generate_update_sequence_id
+ Gitlab::Metrics::System.monotonic_time.to_i
+ end
+
def initialize(base_uri, shared_secret)
@base_uri = base_uri
@shared_secret = shared_secret
end
- def store_dev_info(project:, commits: nil, branches: nil, merge_requests: nil)
+ def store_dev_info(project:, commits: nil, branches: nil, merge_requests: nil, update_sequence_id: nil)
dev_info_json = {
repositories: [
Serializers::RepositoryEntity.represent(
project,
commits: commits,
branches: branches,
- merge_requests: merge_requests
+ merge_requests: merge_requests,
+ user_notes_count: user_notes_count(merge_requests),
+ update_sequence_id: update_sequence_id
)
]
}.to_json
@@ -32,6 +38,14 @@ module Atlassian
private
+ def user_notes_count(merge_requests)
+ return unless merge_requests
+
+ Note.count_for_collection(merge_requests.map(&:id), 'MergeRequest').map do |count_group|
+ [count_group.noteable_id, count_group.count]
+ end.to_h
+ end
+
def jwt_token(http_method, uri)
claims = Atlassian::Jwt.build_claims(
Atlassian::JiraConnect.app_key,
diff --git a/lib/atlassian/jira_connect/serializers/base_entity.rb b/lib/atlassian/jira_connect/serializers/base_entity.rb
index c5490aa3f54..94deb174a45 100644
--- a/lib/atlassian/jira_connect/serializers/base_entity.rb
+++ b/lib/atlassian/jira_connect/serializers/base_entity.rb
@@ -9,12 +9,12 @@ module Atlassian
format_with(:string) { |value| value.to_s }
- expose :monotonic_time, as: :updateSequenceId
+ expose :update_sequence_id, as: :updateSequenceId
private
- def monotonic_time
- Gitlab::Metrics::System.monotonic_time.to_i
+ def update_sequence_id
+ options[:update_sequence_id] || Client.generate_update_sequence_id
end
end
end
diff --git a/lib/atlassian/jira_connect/serializers/pull_request_entity.rb b/lib/atlassian/jira_connect/serializers/pull_request_entity.rb
index 0ddfcbf52ea..e2dc197969b 100644
--- a/lib/atlassian/jira_connect/serializers/pull_request_entity.rb
+++ b/lib/atlassian/jira_connect/serializers/pull_request_entity.rb
@@ -20,7 +20,13 @@ module Atlassian
end
expose :title
expose :author, using: JiraConnect::Serializers::AuthorEntity
- expose :user_notes_count, as: :commentCount
+ expose :commentCount do |mr|
+ if options[:user_notes_count]
+ options[:user_notes_count].fetch(mr.id, 0)
+ else
+ mr.user_notes_count
+ end
+ end
expose :source_branch, as: :sourceBranch
expose :target_branch, as: :destinationBranch
expose :lastUpdate do |mr|
diff --git a/lib/atlassian/jira_connect/serializers/repository_entity.rb b/lib/atlassian/jira_connect/serializers/repository_entity.rb
index 819ca2b62e0..616bbc85bfe 100644
--- a/lib/atlassian/jira_connect/serializers/repository_entity.rb
+++ b/lib/atlassian/jira_connect/serializers/repository_entity.rb
@@ -15,13 +15,17 @@ module Atlassian
end
expose :commits do |project, options|
- JiraConnect::Serializers::CommitEntity.represent options[:commits], project: project
+ JiraConnect::Serializers::CommitEntity.represent options[:commits], project: project, update_sequence_id: options[:update_sequence_id]
end
expose :branches do |project, options|
- JiraConnect::Serializers::BranchEntity.represent options[:branches], project: project
+ JiraConnect::Serializers::BranchEntity.represent options[:branches], project: project, update_sequence_id: options[:update_sequence_id]
end
expose :pullRequests do |project, options|
- JiraConnect::Serializers::PullRequestEntity.represent options[:merge_requests], project: project
+ JiraConnect::Serializers::PullRequestEntity.represent(
+ options[:merge_requests],
+ update_sequence_id: options[:update_sequence_id],
+ user_notes_count: options[:user_notes_count]
+ )
end
end
end