Changeset View
Changeset View
Standalone View
Standalone View
src/applications/search/worker/PhabricatorRebuildIndexesWorker.php
- This file was added.
| <?php | |||||
| final class PhabricatorRebuildIndexesWorker extends PhabricatorWorker { | |||||
| public static function rebuildObjectsWithQuery($query_class) { | |||||
| parent::scheduleTask( | |||||
| __CLASS__, | |||||
| array( | |||||
| 'queryClass' => $query_class, | |||||
| ), | |||||
| array( | |||||
| 'priority' => parent::PRIORITY_INDEX, | |||||
| )); | |||||
| } | |||||
| protected function doWork() { | |||||
| $viewer = PhabricatorUser::getOmnipotentUser(); | |||||
| $data = $this->getTaskData(); | |||||
| $query_class = idx($data, 'queryClass'); | |||||
| try { | |||||
| $query = newv($query_class, array()); | |||||
| } catch (Exception $ex) { | |||||
| throw new PhabricatorWorkerPermanentFailureException( | |||||
| pht( | |||||
| 'Unable to instantiate query class "%s": %s', | |||||
| $query_class, | |||||
| $ex->getMessage())); | |||||
| } | |||||
| $query->setViewer($viewer); | |||||
| $iterator = new PhabricatorQueryIterator($query); | |||||
| foreach ($iterator as $object) { | |||||
| PhabricatorSearchWorker::queueDocumentForIndexing( | |||||
| $object->getPHID(), | |||||
| array( | |||||
| 'force' => true, | |||||
| )); | |||||
| } | |||||
| } | |||||
| } | |||||