mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-04 20:52:43 +01:00
64cee4a902
Summary: Ref T13077. This is mostly just a small cleanup change, even though the actual change is large. We currently reference content and document objects from one another with `contentID` and `documentID`, but this means that `contentID` must be nullable. Switching to PHIDs allows the column to be non-nullable. This also supports reorienting some current and future transactions around PHIDs, which is preferable for the API. In particular, I'm adding a "publish version X" transaction soon, and would rather callers pass a PHID than an ID or version number, since this will make the API more consistent and powerful. Today, `contentID` gets used as a cheaty way to order documents by (content) edit time. Since PHIDs aren't orderable and stuff is going to become actually-revertible soon, replace this with an epoch timestamp. Test Plan: - Created, edited, moved, retitled, and deleted Phriction documents. - Grepped for `documentID` and `contentID`. - This probably breaks //something// but I'll be in this code for a bit and am likely to catch whatever breaks. Reviewers: amckinley Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam Maniphest Tasks: T13077 Differential Revision: https://secure.phabricator.com/D19619
57 lines
1.3 KiB
PHP
57 lines
1.3 KiB
PHP
<?php
|
|
|
|
// Update the PhrictionDocument and PhrictionContent tables to refer to one
|
|
// another by PHID instead of by ID.
|
|
|
|
$document_table = new PhrictionDocument();
|
|
$content_table = new PhrictionContent();
|
|
|
|
$conn = $document_table->establishConnection('w');
|
|
|
|
$document_iterator = new LiskRawMigrationIterator(
|
|
$conn,
|
|
$document_table->getTableName());
|
|
foreach ($document_iterator as $row) {
|
|
$content_id = $row['contentID'];
|
|
|
|
$content_row = queryfx_one(
|
|
$conn,
|
|
'SELECT phid, dateCreated FROM %T WHERE id = %d',
|
|
$content_table->getTableName(),
|
|
$content_id);
|
|
|
|
if (!$content_row) {
|
|
continue;
|
|
}
|
|
|
|
queryfx(
|
|
$conn,
|
|
'UPDATE %T SET contentPHID = %s, editedEpoch = %d WHERE id = %d',
|
|
$document_table->getTableName(),
|
|
$content_row['phid'],
|
|
$content_row['dateCreated'],
|
|
$row['id']);
|
|
}
|
|
|
|
$content_iterator = new LiskRawMigrationIterator(
|
|
$conn,
|
|
$content_table->getTableName());
|
|
foreach ($content_iterator as $row) {
|
|
$document_id = $row['documentID'];
|
|
|
|
$document_row = queryfx_one(
|
|
$conn,
|
|
'SELECT phid FROM %T WHERE id = %d',
|
|
$document_table->getTableName(),
|
|
$document_id);
|
|
if (!$document_row) {
|
|
continue;
|
|
}
|
|
|
|
queryfx(
|
|
$conn,
|
|
'UPDATE %T SET documentPHID = %s WHERE id = %d',
|
|
$content_table->getTableName(),
|
|
$document_row['phid'],
|
|
$row['id']);
|
|
}
|