Page MenuHomePhabricator

D21557.diff
No OneTemporary

D21557.diff

diff --git a/resources/sql/autopatches/20210215.changeset.01.phid.sql b/resources/sql/autopatches/20210215.changeset.01.phid.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20210215.changeset.01.phid.sql
@@ -0,0 +1,2 @@
+ALTER TABLE {$NAMESPACE}_differential.differential_changeset
+ ADD phid VARBINARY(64) NOT NULL;
diff --git a/resources/sql/autopatches/20210215.changeset.02.phid-populate.php b/resources/sql/autopatches/20210215.changeset.02.phid-populate.php
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20210215.changeset.02.phid-populate.php
@@ -0,0 +1,26 @@
+<?php
+
+$phid_type = DifferentialChangesetPHIDType::TYPECONST;
+
+$changeset_table = new DifferentialChangeset();
+
+$conn = $changeset_table->establishConnection('w');
+$table_name = $changeset_table->getTableName();
+
+$iterator = new LiskRawMigrationIterator($conn, $table_name);
+foreach ($iterator as $changeset_row) {
+ $phid = $changeset_row['phid'];
+
+ if (strlen($phid)) {
+ continue;
+ }
+
+ $phid = PhabricatorPHID::generateNewPHID($phid_type);
+
+ queryfx(
+ $conn,
+ 'UPDATE %T SET phid = %s WHERE id = %d',
+ $table_name,
+ $phid,
+ $changeset_row['id']);
+}
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -472,6 +472,7 @@
'DifferentialChangesetOneUpMailRenderer' => 'applications/differential/render/DifferentialChangesetOneUpMailRenderer.php',
'DifferentialChangesetOneUpRenderer' => 'applications/differential/render/DifferentialChangesetOneUpRenderer.php',
'DifferentialChangesetOneUpTestRenderer' => 'applications/differential/render/DifferentialChangesetOneUpTestRenderer.php',
+ 'DifferentialChangesetPHIDType' => 'applications/differential/phid/DifferentialChangesetPHIDType.php',
'DifferentialChangesetParser' => 'applications/differential/parser/DifferentialChangesetParser.php',
'DifferentialChangesetParserTestCase' => 'applications/differential/parser/__tests__/DifferentialChangesetParserTestCase.php',
'DifferentialChangesetQuery' => 'applications/differential/query/DifferentialChangesetQuery.php',
@@ -6541,6 +6542,7 @@
'DifferentialChangesetOneUpMailRenderer' => 'DifferentialChangesetRenderer',
'DifferentialChangesetOneUpRenderer' => 'DifferentialChangesetHTMLRenderer',
'DifferentialChangesetOneUpTestRenderer' => 'DifferentialChangesetTestRenderer',
+ 'DifferentialChangesetPHIDType' => 'PhabricatorPHIDType',
'DifferentialChangesetParser' => 'Phobject',
'DifferentialChangesetParserTestCase' => 'PhabricatorTestCase',
'DifferentialChangesetQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
diff --git a/src/applications/differential/phid/DifferentialChangesetPHIDType.php b/src/applications/differential/phid/DifferentialChangesetPHIDType.php
new file mode 100644
--- /dev/null
+++ b/src/applications/differential/phid/DifferentialChangesetPHIDType.php
@@ -0,0 +1,41 @@
+<?php
+
+final class DifferentialChangesetPHIDType extends PhabricatorPHIDType {
+
+ const TYPECONST = 'DCNG';
+
+ public function getTypeName() {
+ return pht('Differential Changeset');
+ }
+
+ public function newObject() {
+ return new DifferentialChangeset();
+ }
+
+ public function getPHIDTypeApplicationClass() {
+ return 'PhabricatorDifferentialApplication';
+ }
+
+ protected function buildQueryForObjects(
+ PhabricatorObjectQuery $query,
+ array $phids) {
+
+ return id(new DifferentialChangesetQuery())
+ ->withPHIDs($phids);
+ }
+
+ public function loadHandles(
+ PhabricatorHandleQuery $query,
+ array $handles,
+ array $objects) {
+
+ foreach ($handles as $phid => $handle) {
+ $changeset = $objects[$phid];
+
+ $id = $changeset->getID();
+
+ $handle->setName(pht('Changeset %d', $id));
+ }
+ }
+
+}
diff --git a/src/applications/differential/storage/DifferentialChangeset.php b/src/applications/differential/storage/DifferentialChangeset.php
--- a/src/applications/differential/storage/DifferentialChangeset.php
+++ b/src/applications/differential/storage/DifferentialChangeset.php
@@ -45,6 +45,7 @@
protected function getConfiguration() {
return array(
+ self::CONFIG_AUX_PHID => true,
self::CONFIG_SERIALIZATION => array(
'metadata' => self::SERIALIZATION_JSON,
'oldProperties' => self::SERIALIZATION_JSON,
@@ -75,6 +76,10 @@
) + parent::getConfiguration();
}
+ public function getPHIDType() {
+ return DifferentialChangesetPHIDType::TYPECONST;
+ }
+
public function getAffectedLineCount() {
return $this->getAddLines() + $this->getDelLines();
}

File Metadata

Mime Type
text/plain
Expires
Sat, Mar 15, 5:25 PM (1 w, 7 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7699175
Default Alt Text
D21557.diff (4 KB)

Event Timeline