1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-01 11:12:42 +01:00
phorge-phorge/src/infrastructure/storage/lisk/LiskRawMigrationIterator.php
epriestley 8e8057c6fe Add LiskRawMigrationIterator
Summary: Ref T2222. I need this to migrate the Differential comment tables, because they are large. We have the similar `LiskMigrationIterator` already, but it won't work here because I intend to destroy the original objects after migrating them.

Test Plan:
Wrote a script to iterate over the `differential_comment` table, got reasonable output:

{P869}

Reviewers: btrahan

Reviewed By: btrahan

CC: chad, aran

Maniphest Tasks: T2222

Differential Revision: https://secure.phabricator.com/D6264
2013-06-21 12:55:07 -07:00

39 lines
771 B
PHP

<?php
final class LiskRawMigrationIterator extends PhutilBufferedIterator {
private $conn;
private $table;
private $cursor;
private $column = 'id';
public function __construct(AphrontDatabaseConnection $conn, $table) {
$this->conn = $conn;
$this->table = $table;
}
protected function didRewind() {
$this->cursor = 0;
}
public function key() {
return idx($this->current(), $this->column);
}
protected function loadPage() {
$page = queryfx_all(
$this->conn,
'SELECT * FROM %T WHERE %C > %d ORDER BY ID ASC LIMIT %d',
$this->table,
$this->column,
$this->cursor,
$this->getPageSize());
if ($page) {
$this->cursor = idx(last($page), $this->column);
}
return $page;
}
}