Move "most recent commit" and "commit count" into DiffusionRepositoryQuery

Summary: Ref T2625. `DiffusionHomeController` currently runs these queries inline. Move them into `DiffusionRepositoryQuery`. Prepareds for ApplicationSearch.

Test Plan: Loaded `/diffusion/`, saw the same content as before.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T2625

Differential Revision: https://secure.phabricator.com/D6914
This commit is contained in:
epriestley
2013-09-10 15:22:41 -07:00
parent 8e45b466da
commit 93c6704059
3 changed files with 99 additions and 34 deletions

View File

@@ -41,6 +41,8 @@ final class DiffusionHomeController extends DiffusionController {
$repositories = id(new PhabricatorRepositoryQuery())
->setViewer($user)
->needCommitCounts(true)
->needMostRecentCommits(true)
->execute();
foreach ($repositories as $key => $repo) {
@@ -50,25 +52,6 @@ final class DiffusionHomeController extends DiffusionController {
}
$repositories = msort($repositories, 'getName');
$repository_ids = mpull($repositories, 'getID');
$summaries = array();
$commits = array();
if ($repository_ids) {
$summaries = queryfx_all(
id(new PhabricatorRepository())->establishConnection('r'),
'SELECT * FROM %T WHERE repositoryID IN (%Ld)',
PhabricatorRepository::TABLE_SUMMARY,
$repository_ids);
$summaries = ipull($summaries, null, 'repositoryID');
$commit_ids = array_filter(ipull($summaries, 'lastCommitID'));
if ($commit_ids) {
$commit = new PhabricatorRepositoryCommit();
$commits = $commit->loadAllWhere('id IN (%Ld)', $commit_ids);
$commits = mpull($commits, null, 'getRepositoryID');
}
}
$branch = new PhabricatorRepositoryBranch();
$lint_messages = queryfx_all(
$branch->establishConnection('r'),
@@ -84,10 +67,9 @@ final class DiffusionHomeController extends DiffusionController {
$show_lint = false;
foreach ($repositories as $repository) {
$id = $repository->getID();
$commit = idx($commits, $id);
$size = idx(idx($summaries, $id, array()), 'size', '-');
if ($size != '-') {
$size = $repository->getCommitCount();
if ($size) {
$size = hsprintf(
'<a href="%s">%s</a>',
DiffusionRequest::generateDiffusionURI(array(
@@ -114,9 +96,10 @@ final class DiffusionHomeController extends DiffusionController {
}
$datetime = '';
if ($commit) {
$date = phabricator_date($commit->getEpoch(), $user);
$time = phabricator_time($commit->getEpoch(), $user);
$most_recent_commit = $repository->getMostRecentCommit();
if ($most_recent_commit) {
$date = phabricator_date($most_recent_commit->getEpoch(), $user);
$time = phabricator_time($most_recent_commit->getEpoch(), $user);
$datetime = $date.' '.$time;
}
@@ -125,13 +108,13 @@ final class DiffusionHomeController extends DiffusionController {
('/diffusion/'.$repository->getCallsign().'/'),
PhabricatorRepositoryType::getNameForRepositoryType(
$repository->getVersionControlSystem()),
$size,
$size ? $size : null,
$lint_count,
$commit
$most_recent_commit
? DiffusionView::linkCommit(
$repository,
$commit->getCommitIdentifier(),
$commit->getSummary())
$most_recent_commit->getCommitIdentifier(),
$most_recent_commit->getSummary())
: pht('No Commits'),
$datetime
);