1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-23 14:00:56 +01:00

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
This commit is contained in:
epriestley 2019-10-24 16:42:25 -07:00
parent f497b93e43
commit 5b36f0c97a
4 changed files with 64 additions and 0 deletions

View file

@ -996,6 +996,7 @@ phutil_register_library_map(array(
'DiffusionRepositoryManagementOtherPanelGroup' => 'applications/diffusion/management/DiffusionRepositoryManagementOtherPanelGroup.php',
'DiffusionRepositoryManagementPanel' => 'applications/diffusion/management/DiffusionRepositoryManagementPanel.php',
'DiffusionRepositoryManagementPanelGroup' => 'applications/diffusion/management/DiffusionRepositoryManagementPanelGroup.php',
'DiffusionRepositoryMetricsSearchEngineAttachment' => 'applications/diffusion/engineextension/DiffusionRepositoryMetricsSearchEngineAttachment.php',
'DiffusionRepositoryPath' => 'applications/diffusion/data/DiffusionRepositoryPath.php',
'DiffusionRepositoryPoliciesManagementPanel' => 'applications/diffusion/management/DiffusionRepositoryPoliciesManagementPanel.php',
'DiffusionRepositoryProfilePictureController' => 'applications/diffusion/controller/DiffusionRepositoryProfilePictureController.php',
@ -6964,6 +6965,7 @@ phutil_register_library_map(array(
'DiffusionRepositoryManagementOtherPanelGroup' => 'DiffusionRepositoryManagementPanelGroup',
'DiffusionRepositoryManagementPanel' => 'Phobject',
'DiffusionRepositoryManagementPanelGroup' => 'Phobject',
'DiffusionRepositoryMetricsSearchEngineAttachment' => 'PhabricatorSearchEngineAttachment',
'DiffusionRepositoryPath' => 'Phobject',
'DiffusionRepositoryPoliciesManagementPanel' => 'DiffusionRepositoryManagementPanel',
'DiffusionRepositoryProfilePictureController' => 'DiffusionController',

View file

@ -0,0 +1,41 @@
<?php
final class DiffusionRepositoryMetricsSearchEngineAttachment
extends PhabricatorSearchEngineAttachment {
public function getAttachmentName() {
return pht('Repository Metrics');
}
public function getAttachmentDescription() {
return pht(
'Get metrics (like commit count and most recent commit) for each '.
'repository.');
}
public function willLoadAttachmentData($query, $spec) {
$query
->needCommitCounts(true)
->needMostRecentCommits(true);
}
public function getAttachmentForObject($object, $data, $spec) {
$commit = $object->getMostRecentCommit();
if ($commit !== null) {
$recent_commit = $commit->getFieldValuesForConduit();
} else {
$recent_commit = null;
}
$commit_count = $object->getCommitCount();
if ($commit_count !== null) {
$commit_count = (int)$commit_count;
}
return array(
'commitCount' => $commit_count,
'recentCommit' => $recent_commit,
);
}
}

View file

@ -215,6 +215,8 @@ final class PhabricatorRepositoryQuery
$commits = id(new DiffusionCommitQuery())
->setViewer($this->getViewer())
->withIDs($commit_ids)
->needCommitData(true)
->needIdentities(true)
->execute();
} else {
$commits = array();

View file

@ -2757,6 +2757,14 @@ final class PhabricatorRepository extends PhabricatorRepositoryDAO
->setDescription(
pht(
'The "Fetch" and "Permanent Ref" rules for this repository.')),
id(new PhabricatorConduitSearchFieldSpecification())
->setKey('defaultBranch')
->setType('string?')
->setDescription(pht('Default branch name.')),
id(new PhabricatorConduitSearchFieldSpecification())
->setKey('description')
->setType('remarkup')
->setDescription(pht('Repository description.')),
);
}
@ -2769,6 +2777,11 @@ final class PhabricatorRepository extends PhabricatorRepositoryDAO
$track_rules = $this->getStringListForConduit($track_rules);
$permanent_rules = $this->getStringListForConduit($permanent_rules);
$default_branch = $this->getDefaultBranch();
if (!strlen($default_branch)) {
$default_branch = null;
}
return array(
'name' => $this->getName(),
'vcs' => $this->getVersionControlSystem(),
@ -2782,6 +2795,10 @@ final class PhabricatorRepository extends PhabricatorRepositoryDAO
'trackRules' => $track_rules,
'permanentRefRules' => $permanent_rules,
),
'defaultBranch' => $default_branch,
'description' => array(
'raw' => (string)$this->getDetail('description'),
),
);
}
@ -2804,6 +2821,8 @@ final class PhabricatorRepository extends PhabricatorRepositoryDAO
return array(
id(new DiffusionRepositoryURIsSearchEngineAttachment())
->setAttachmentKey('uris'),
id(new DiffusionRepositoryMetricsSearchEngineAttachment())
->setAttachmentKey('metrics'),
);
}