diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 5f5de293ac..4206c02e6e 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -492,6 +492,7 @@ phutil_register_library_map(array( 'LiskIsolationTestCase' => 'infrastructure/storage/lisk/__tests__/LiskIsolationTestCase.php', 'LiskIsolationTestDAO' => 'infrastructure/storage/lisk/__tests__/LiskIsolationTestDAO.php', 'LiskIsolationTestDAOException' => 'infrastructure/storage/lisk/__tests__/LiskIsolationTestDAOException.php', + 'LiskMigrationIterator' => 'infrastructure/storage/lisk/LiskMigrationIterator.php', 'ManiphestAction' => 'applications/maniphest/constants/ManiphestAction.php', 'ManiphestAuxiliaryFieldDefaultSpecification' => 'applications/maniphest/auxiliaryfield/ManiphestAuxiliaryFieldDefaultSpecification.php', 'ManiphestAuxiliaryFieldSpecification' => 'applications/maniphest/auxiliaryfield/ManiphestAuxiliaryFieldSpecification.php', @@ -1231,7 +1232,7 @@ phutil_register_library_map(array( 'ConduitAPI_differential_close_Method' => 'ConduitAPIMethod', 'ConduitAPI_differential_createcomment_Method' => 'ConduitAPIMethod', 'ConduitAPI_differential_creatediff_Method' => 'ConduitAPIMethod', - 'ConduitAPI_differential_createinline_Method' => 'ConduitAPIMethod', + 'ConduitAPI_differential_createinline_Method' => 'ConduitAPI_differential_Method', 'ConduitAPI_differential_createrawdiff_Method' => 'ConduitAPI_differential_Method', 'ConduitAPI_differential_createrevision_Method' => 'ConduitAPIMethod', 'ConduitAPI_differential_find_Method' => 'ConduitAPIMethod', @@ -1241,7 +1242,7 @@ phutil_register_library_map(array( 'ConduitAPI_differential_getcommitpaths_Method' => 'ConduitAPIMethod', 'ConduitAPI_differential_getdiff_Method' => 'ConduitAPIMethod', 'ConduitAPI_differential_getrevision_Method' => 'ConduitAPIMethod', - 'ConduitAPI_differential_getrevisioncomments_Method' => 'ConduitAPIMethod', + 'ConduitAPI_differential_getrevisioncomments_Method' => 'ConduitAPI_differential_Method', 'ConduitAPI_differential_getrevisionfeedback_Method' => 'ConduitAPIMethod', 'ConduitAPI_differential_markcommitted_Method' => 'ConduitAPIMethod', 'ConduitAPI_differential_parsecommitmessage_Method' => 'ConduitAPIMethod', @@ -1536,6 +1537,7 @@ phutil_register_library_map(array( 'LiskIsolationTestCase' => 'PhabricatorTestCase', 'LiskIsolationTestDAO' => 'LiskDAO', 'LiskIsolationTestDAOException' => 'Exception', + 'LiskMigrationIterator' => 'Iterator', 'ManiphestAction' => 'ManiphestConstants', 'ManiphestAuxiliaryFieldDefaultSpecification' => 'ManiphestAuxiliaryFieldSpecification', 'ManiphestAuxiliaryFieldTypeException' => 'Exception', diff --git a/src/infrastructure/storage/lisk/LiskMigrationIterator.php b/src/infrastructure/storage/lisk/LiskMigrationIterator.php new file mode 100644 index 0000000000..9243c7432d --- /dev/null +++ b/src/infrastructure/storage/lisk/LiskMigrationIterator.php @@ -0,0 +1,77 @@ +object = $object; + } + + public function rewind() { + $this->cursor = 0; + $this->data = array(); + $this->next(); + } + + public function valid() { + if (!$this->data) { + $this->next(); + } + return (bool)$this->data; + } + + public function current() { + return end($this->data); + } + + public function key() { + return $this->current()->getID(); + } + + public function next() { + if ($this->data) { + return array_pop($this->data); + } + $this->data = $this->object->loadAllWhere( + 'id > %d ORDER BY id ASC LIMIT %d', + $this->cursor, + 100); + if ($this->data) { + $this->cursor = last($this->data)->getID(); + $this->data = array_reverse($this->data); + } + } + +}