mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-01 11:12:42 +01:00
8e8057c6fe
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
39 lines
771 B
PHP
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;
|
|
}
|
|
|
|
}
|