Skip to content

Commit 5b36f0c

Browse files
author
epriestley
committedOct 25, 2019
Add default branch, description, and metrics (commit count, recent commit) to "diffusion.repository.search"
Summary: Fixes T13430. Provide more information about repositories in "diffusion.repository.search". Test Plan: Used API console to call method (with new "metrics" attachment), reviewed output. Saw new fields returned. Maniphest Tasks: T13430 Differential Revision: https://secure.phabricator.com/D20862
1 parent f497b93 commit 5b36f0c

File tree

4 files changed

+64
-0
lines changed

4 files changed

+64
-0
lines changed
 

‎src/__phutil_library_map__.php

+2
Original file line numberDiff line numberDiff line change
@@ -996,6 +996,7 @@
996996
'DiffusionRepositoryManagementOtherPanelGroup' => 'applications/diffusion/management/DiffusionRepositoryManagementOtherPanelGroup.php',
997997
'DiffusionRepositoryManagementPanel' => 'applications/diffusion/management/DiffusionRepositoryManagementPanel.php',
998998
'DiffusionRepositoryManagementPanelGroup' => 'applications/diffusion/management/DiffusionRepositoryManagementPanelGroup.php',
999+
'DiffusionRepositoryMetricsSearchEngineAttachment' => 'applications/diffusion/engineextension/DiffusionRepositoryMetricsSearchEngineAttachment.php',
9991000
'DiffusionRepositoryPath' => 'applications/diffusion/data/DiffusionRepositoryPath.php',
10001001
'DiffusionRepositoryPoliciesManagementPanel' => 'applications/diffusion/management/DiffusionRepositoryPoliciesManagementPanel.php',
10011002
'DiffusionRepositoryProfilePictureController' => 'applications/diffusion/controller/DiffusionRepositoryProfilePictureController.php',
@@ -6964,6 +6965,7 @@
69646965
'DiffusionRepositoryManagementOtherPanelGroup' => 'DiffusionRepositoryManagementPanelGroup',
69656966
'DiffusionRepositoryManagementPanel' => 'Phobject',
69666967
'DiffusionRepositoryManagementPanelGroup' => 'Phobject',
6968+
'DiffusionRepositoryMetricsSearchEngineAttachment' => 'PhabricatorSearchEngineAttachment',
69676969
'DiffusionRepositoryPath' => 'Phobject',
69686970
'DiffusionRepositoryPoliciesManagementPanel' => 'DiffusionRepositoryManagementPanel',
69696971
'DiffusionRepositoryProfilePictureController' => 'DiffusionController',
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
3+
final class DiffusionRepositoryMetricsSearchEngineAttachment
4+
extends PhabricatorSearchEngineAttachment {
5+
6+
public function getAttachmentName() {
7+
return pht('Repository Metrics');
8+
}
9+
10+
public function getAttachmentDescription() {
11+
return pht(
12+
'Get metrics (like commit count and most recent commit) for each '.
13+
'repository.');
14+
}
15+
16+
public function willLoadAttachmentData($query, $spec) {
17+
$query
18+
->needCommitCounts(true)
19+
->needMostRecentCommits(true);
20+
}
21+
22+
public function getAttachmentForObject($object, $data, $spec) {
23+
$commit = $object->getMostRecentCommit();
24+
if ($commit !== null) {
25+
$recent_commit = $commit->getFieldValuesForConduit();
26+
} else {
27+
$recent_commit = null;
28+
}
29+
30+
$commit_count = $object->getCommitCount();
31+
if ($commit_count !== null) {
32+
$commit_count = (int)$commit_count;
33+
}
34+
35+
return array(
36+
'commitCount' => $commit_count,
37+
'recentCommit' => $recent_commit,
38+
);
39+
}
40+
41+
}

‎src/applications/repository/query/PhabricatorRepositoryQuery.php

+2
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,8 @@ protected function loadPage() {
215215
$commits = id(new DiffusionCommitQuery())
216216
->setViewer($this->getViewer())
217217
->withIDs($commit_ids)
218+
->needCommitData(true)
219+
->needIdentities(true)
218220
->execute();
219221
} else {
220222
$commits = array();

‎src/applications/repository/storage/PhabricatorRepository.php

+19
Original file line numberDiff line numberDiff line change
@@ -2757,6 +2757,14 @@ public function getFieldSpecificationsForConduit() {
27572757
->setDescription(
27582758
pht(
27592759
'The "Fetch" and "Permanent Ref" rules for this repository.')),
2760+
id(new PhabricatorConduitSearchFieldSpecification())
2761+
->setKey('defaultBranch')
2762+
->setType('string?')
2763+
->setDescription(pht('Default branch name.')),
2764+
id(new PhabricatorConduitSearchFieldSpecification())
2765+
->setKey('description')
2766+
->setType('remarkup')
2767+
->setDescription(pht('Repository description.')),
27602768
);
27612769
}
27622770

@@ -2769,6 +2777,11 @@ public function getFieldValuesForConduit() {
27692777
$track_rules = $this->getStringListForConduit($track_rules);
27702778
$permanent_rules = $this->getStringListForConduit($permanent_rules);
27712779

2780+
$default_branch = $this->getDefaultBranch();
2781+
if (!strlen($default_branch)) {
2782+
$default_branch = null;
2783+
}
2784+
27722785
return array(
27732786
'name' => $this->getName(),
27742787
'vcs' => $this->getVersionControlSystem(),
@@ -2782,6 +2795,10 @@ public function getFieldValuesForConduit() {
27822795
'trackRules' => $track_rules,
27832796
'permanentRefRules' => $permanent_rules,
27842797
),
2798+
'defaultBranch' => $default_branch,
2799+
'description' => array(
2800+
'raw' => (string)$this->getDetail('description'),
2801+
),
27852802
);
27862803
}
27872804

@@ -2804,6 +2821,8 @@ public function getConduitSearchAttachments() {
28042821
return array(
28052822
id(new DiffusionRepositoryURIsSearchEngineAttachment())
28062823
->setAttachmentKey('uris'),
2824+
id(new DiffusionRepositoryMetricsSearchEngineAttachment())
2825+
->setAttachmentKey('metrics'),
28072826
);
28082827
}
28092828

0 commit comments

Comments
 (0)
Failed to load comments.