Skip to content

Commit ec5476a

Browse files
author
epriestley
committedFeb 15, 2021
Add a PHID to Changesets
Summary: Ref T13605. Changesets currently have no PHID, which limits their ability to use standard API infrastructure. Give them a PHID, since there's no reason they don't have one other than their age. Test Plan: - Ran migrations, saw PHIDs populated. - Created new changesets, saw PHIDs. Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam Maniphest Tasks: T13605 Differential Revision: https://secure.phabricator.com/D21557
1 parent 42c2682 commit ec5476a

File tree

5 files changed

+76
-0
lines changed

5 files changed

+76
-0
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ALTER TABLE {$NAMESPACE}_differential.differential_changeset
2+
ADD phid VARBINARY(64) NOT NULL;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
$phid_type = DifferentialChangesetPHIDType::TYPECONST;
4+
5+
$changeset_table = new DifferentialChangeset();
6+
7+
$conn = $changeset_table->establishConnection('w');
8+
$table_name = $changeset_table->getTableName();
9+
10+
$iterator = new LiskRawMigrationIterator($conn, $table_name);
11+
foreach ($iterator as $changeset_row) {
12+
$phid = $changeset_row['phid'];
13+
14+
if (strlen($phid)) {
15+
continue;
16+
}
17+
18+
$phid = PhabricatorPHID::generateNewPHID($phid_type);
19+
20+
queryfx(
21+
$conn,
22+
'UPDATE %T SET phid = %s WHERE id = %d',
23+
$table_name,
24+
$phid,
25+
$changeset_row['id']);
26+
}

‎src/__phutil_library_map__.php

+2
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,7 @@
472472
'DifferentialChangesetOneUpMailRenderer' => 'applications/differential/render/DifferentialChangesetOneUpMailRenderer.php',
473473
'DifferentialChangesetOneUpRenderer' => 'applications/differential/render/DifferentialChangesetOneUpRenderer.php',
474474
'DifferentialChangesetOneUpTestRenderer' => 'applications/differential/render/DifferentialChangesetOneUpTestRenderer.php',
475+
'DifferentialChangesetPHIDType' => 'applications/differential/phid/DifferentialChangesetPHIDType.php',
475476
'DifferentialChangesetParser' => 'applications/differential/parser/DifferentialChangesetParser.php',
476477
'DifferentialChangesetParserTestCase' => 'applications/differential/parser/__tests__/DifferentialChangesetParserTestCase.php',
477478
'DifferentialChangesetQuery' => 'applications/differential/query/DifferentialChangesetQuery.php',
@@ -6541,6 +6542,7 @@
65416542
'DifferentialChangesetOneUpMailRenderer' => 'DifferentialChangesetRenderer',
65426543
'DifferentialChangesetOneUpRenderer' => 'DifferentialChangesetHTMLRenderer',
65436544
'DifferentialChangesetOneUpTestRenderer' => 'DifferentialChangesetTestRenderer',
6545+
'DifferentialChangesetPHIDType' => 'PhabricatorPHIDType',
65446546
'DifferentialChangesetParser' => 'Phobject',
65456547
'DifferentialChangesetParserTestCase' => 'PhabricatorTestCase',
65466548
'DifferentialChangesetQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
3+
final class DifferentialChangesetPHIDType extends PhabricatorPHIDType {
4+
5+
const TYPECONST = 'DCNG';
6+
7+
public function getTypeName() {
8+
return pht('Differential Changeset');
9+
}
10+
11+
public function newObject() {
12+
return new DifferentialChangeset();
13+
}
14+
15+
public function getPHIDTypeApplicationClass() {
16+
return 'PhabricatorDifferentialApplication';
17+
}
18+
19+
protected function buildQueryForObjects(
20+
PhabricatorObjectQuery $query,
21+
array $phids) {
22+
23+
return id(new DifferentialChangesetQuery())
24+
->withPHIDs($phids);
25+
}
26+
27+
public function loadHandles(
28+
PhabricatorHandleQuery $query,
29+
array $handles,
30+
array $objects) {
31+
32+
foreach ($handles as $phid => $handle) {
33+
$changeset = $objects[$phid];
34+
35+
$id = $changeset->getID();
36+
37+
$handle->setName(pht('Changeset %d', $id));
38+
}
39+
}
40+
41+
}

‎src/applications/differential/storage/DifferentialChangeset.php

+5
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ final class DifferentialChangeset
4545

4646
protected function getConfiguration() {
4747
return array(
48+
self::CONFIG_AUX_PHID => true,
4849
self::CONFIG_SERIALIZATION => array(
4950
'metadata' => self::SERIALIZATION_JSON,
5051
'oldProperties' => self::SERIALIZATION_JSON,
@@ -75,6 +76,10 @@ protected function getConfiguration() {
7576
) + parent::getConfiguration();
7677
}
7778

79+
public function getPHIDType() {
80+
return DifferentialChangesetPHIDType::TYPECONST;
81+
}
82+
7883
public function getAffectedLineCount() {
7984
return $this->getAddLines() + $this->getDelLines();
8085
}

0 commit comments

Comments
 (0)
Failed to load comments.