Skip to content

Commit 127500c

Browse files
committed
Add commit stats fetching and update logic to Package model; enhance sole maintainer view with additional issue metadata
1 parent 7c6743c commit 127500c

File tree

3 files changed

+38
-6
lines changed

3 files changed

+38
-6
lines changed

app/models/package.rb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -633,6 +633,26 @@ def ping_commits
633633
return unless repo_metadata.present?
634634
ecosystems_api_get("#{commits_api_url}/ping")
635635
end
636+
637+
def fetch_commit_stats
638+
return unless commits_api_url.present?
639+
ecosystems_api_get("#{commits_api_url}/stats")
640+
rescue
641+
nil
642+
end
643+
644+
# Fetches commit stats from the commits service and stores in repo_metadata['commit_stats']
645+
# This provides an alternative to relying on the repos service to load commit data
646+
def update_commit_stats
647+
return unless repo_metadata.present?
648+
649+
commit_stats = fetch_commit_stats
650+
if commit_stats.present?
651+
updated_metadata = repo_metadata.deep_dup
652+
updated_metadata['commit_stats'] = commit_stats
653+
update(repo_metadata: updated_metadata)
654+
end
655+
end
636656

637657
def sync_maintainers
638658
registry.sync_maintainers(self)

app/views/critical/_sole_maintainer_package.html.erb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@
2626
<% end %>
2727
</small>
2828

29-
<% if package.issue_metadata.present? || package.commit_stats.present? %>
29+
<% if package.issue_metadata.present? || package.commit_stats.present? || package.repo_metadata&.dig('commit_stats').present? %>
3030
<br>
3131
<small class='text-muted'>
32-
<% committers_count = package.commit_stats&.dig('total_committers') %>
32+
<% committers_count = package.commit_stats&.dig('total_committers') || package.repo_metadata&.dig('commit_stats', 'total_committers') %>
3333
<% issue_authors_count = package.issue_metadata&.dig('past_year_issue_authors_count') %>
3434
<% pr_authors_count = package.issue_metadata&.dig('past_year_pull_request_authors_count') %>
3535
<% maintainers_count = package.issue_metadata&.dig('maintainers')&.length %>
@@ -61,7 +61,7 @@
6161
<% any_stats = true %>
6262
<% end %>
6363

64-
<% dds_score = package.issue_metadata&.dig('dds') || package.commit_stats&.dig('dds') %>
64+
<% dds_score = package.issue_metadata&.dig('dds') || package.commit_stats&.dig('dds') || package.repo_metadata&.dig('commit_stats', 'dds') %>
6565
<% if dds_score && dds_score > 0 %>
6666
<%= '- ' if any_stats %><%= number_with_delimiter(dds_score) %> DDS
6767
<% end %>

test/controllers/critical_controller_test.rb

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,13 @@ class CriticalControllerTest < ActionDispatch::IntegrationTest
1212
maintainers_count: 1,
1313
downloads: 1000,
1414
dependent_packages_count: 5,
15-
dependent_repos_count: 10
15+
dependent_repos_count: 10,
16+
issue_metadata: {
17+
'past_year_issue_authors_count' => 25,
18+
'past_year_pull_request_authors_count' => 12,
19+
'maintainers' => [{'login' => 'test-maintainer'}],
20+
'active_maintainers' => [{'login' => 'test-maintainer'}]
21+
}
1622
)
1723

1824
@critical_package.maintainers << @maintainer
@@ -44,7 +50,10 @@ class CriticalControllerTest < ActionDispatch::IntegrationTest
4450
ecosystem: 'pypi',
4551
name: 'other-package',
4652
critical: true,
47-
maintainers_count: 1
53+
maintainers_count: 1,
54+
issue_metadata: {
55+
'past_year_issue_authors_count' => 15
56+
}
4857
)
4958

5059
get critical_sole_maintainers_path(registry: @registry.name)
@@ -59,7 +68,10 @@ class CriticalControllerTest < ActionDispatch::IntegrationTest
5968
name: 'high-download-package',
6069
critical: true,
6170
maintainers_count: 1,
62-
downloads: 5000
71+
downloads: 5000,
72+
issue_metadata: {
73+
'past_year_issue_authors_count' => 30
74+
}
6375
)
6476

6577
get critical_sole_maintainers_path

0 commit comments

Comments
 (0)