Differential D20921 Diff 49860 src/applications/audit/management/PhabricatorAuditManagementDeleteWorkflow.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/audit/management/PhabricatorAuditManagementDeleteWorkflow.php
Show First 20 Lines • Show All 87 Lines • ▼ Show 20 Lines | public function execute(PhutilArgumentParser $args) { | ||||
$id_map = array(); | $id_map = array(); | ||||
if ($ids) { | if ($ids) { | ||||
$id_map = array_fuse($ids); | $id_map = array_fuse($ids); | ||||
$query->withAuditIDs($ids); | $query->withAuditIDs($ids); | ||||
} | } | ||||
if ($repos) { | if ($repos) { | ||||
$query->withRepositoryIDs(mpull($repos, 'getID')); | $query->withRepositoryIDs(mpull($repos, 'getID')); | ||||
// See T13457. If we're iterating over commits in a single large | |||||
// repository, the lack of a "<repositoryID, [id]>" key can slow things | |||||
// down. Iterate in a specific order to use a key which is present | |||||
// on the table ("<repositoryID, epoch, [id]>"). | |||||
$query->setOrderVector(array('-epoch', '-id')); | |||||
} | } | ||||
$auditor_map = array(); | $auditor_map = array(); | ||||
if ($users) { | if ($users) { | ||||
$auditor_map = array_fuse(mpull($users, 'getPHID')); | $auditor_map = array_fuse(mpull($users, 'getPHID')); | ||||
$query->withAuditorPHIDs($auditor_map); | $query->withAuditorPHIDs($auditor_map); | ||||
} | } | ||||
if ($commits) { | if ($commits) { | ||||
$query->withPHIDs(mpull($commits, 'getPHID')); | $query->withPHIDs(mpull($commits, 'getPHID')); | ||||
} | } | ||||
$commit_iterator = new PhabricatorQueryIterator($query); | $commit_iterator = id(new PhabricatorQueryIterator($query)); | ||||
// See T13457. We may be examining many commits; each commit is small so | |||||
// we can safely increase the page size to improve performance a bit. | |||||
$commit_iterator->setPageSize(1000); | |||||
$audits = array(); | $audits = array(); | ||||
foreach ($commit_iterator as $commit) { | foreach ($commit_iterator as $commit) { | ||||
$commit_audits = $commit->getAudits(); | $commit_audits = $commit->getAudits(); | ||||
foreach ($commit_audits as $key => $audit) { | foreach ($commit_audits as $key => $audit) { | ||||
if ($id_map && empty($id_map[$audit->getID()])) { | if ($id_map && empty($id_map[$audit->getID()])) { | ||||
unset($commit_audits[$key]); | unset($commit_audits[$key]); | ||||
continue; | continue; | ||||
▲ Show 20 Lines • Show All 205 Lines • Show Last 20 Lines |