From 8226b3c88082ba74ad1e2318d13b385e2219fefa Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 16 Mar 2021 15:06:22 -0700 Subject: [PATCH] Modernize "mailKey" on Almanac Namespaces Summary: Ref T13065. Ref T13641. Migrate "mailKey" and drop the column. Test Plan: Ran "bin/storage upgrade", got a clean report, saw mail keys migrated to mail properties table. Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam Maniphest Tasks: T13641, T13065 Differential Revision: https://secure.phabricator.com/D21631 --- .../20210316.almanac.09.namespace-mailkey.php | 28 +++++++++++++++++++ ...10316.almanac.10.namespace-dropmailkey.sql | 2 ++ .../almanac/storage/AlmanacNamespace.php | 15 ++++------ 3 files changed, 35 insertions(+), 10 deletions(-) create mode 100644 resources/sql/autopatches/20210316.almanac.09.namespace-mailkey.php create mode 100644 resources/sql/autopatches/20210316.almanac.10.namespace-dropmailkey.sql diff --git a/resources/sql/autopatches/20210316.almanac.09.namespace-mailkey.php b/resources/sql/autopatches/20210316.almanac.09.namespace-mailkey.php new file mode 100644 index 0000000000..261181324e --- /dev/null +++ b/resources/sql/autopatches/20210316.almanac.09.namespace-mailkey.php @@ -0,0 +1,28 @@ +establishConnection('w'); + +$properties_table = new PhabricatorMetaMTAMailProperties(); +$conn = $properties_table->establishConnection('w'); + +$iterator = new LiskRawMigrationIterator( + $namespace_conn, + $namespace_table->getTableName()); + +foreach ($iterator as $row) { + queryfx( + $conn, + 'INSERT IGNORE INTO %R + (objectPHID, mailProperties, dateCreated, dateModified) + VALUES + (%s, %s, %d, %d)', + $properties_table, + $row['phid'], + phutil_json_encode( + array( + 'mailKey' => $row['mailKey'], + )), + PhabricatorTime::getNow(), + PhabricatorTime::getNow()); +} diff --git a/resources/sql/autopatches/20210316.almanac.10.namespace-dropmailkey.sql b/resources/sql/autopatches/20210316.almanac.10.namespace-dropmailkey.sql new file mode 100644 index 0000000000..867c42fbc2 --- /dev/null +++ b/resources/sql/autopatches/20210316.almanac.10.namespace-dropmailkey.sql @@ -0,0 +1,2 @@ +ALTER TABLE {$NAMESPACE}_almanac.almanac_namespace + DROP mailKey; diff --git a/src/applications/almanac/storage/AlmanacNamespace.php b/src/applications/almanac/storage/AlmanacNamespace.php index f3745b1d29..f6e3719057 100644 --- a/src/applications/almanac/storage/AlmanacNamespace.php +++ b/src/applications/almanac/storage/AlmanacNamespace.php @@ -12,7 +12,6 @@ final class AlmanacNamespace protected $name; protected $nameIndex; - protected $mailKey; protected $viewPolicy; protected $editPolicy; @@ -28,7 +27,6 @@ final class AlmanacNamespace self::CONFIG_COLUMN_SCHEMA => array( 'name' => 'text128', 'nameIndex' => 'bytes12', - 'mailKey' => 'bytes20', ), self::CONFIG_KEY_SCHEMA => array( 'key_nameindex' => array( @@ -42,9 +40,8 @@ final class AlmanacNamespace ) + parent::getConfiguration(); } - public function generatePHID() { - return PhabricatorPHID::generateNewPHID( - AlmanacNamespacePHIDType::TYPECONST); + public function getPHIDType() { + return AlmanacNamespacePHIDType::TYPECONST; } public function save() { @@ -52,15 +49,13 @@ final class AlmanacNamespace $this->nameIndex = PhabricatorHash::digestForIndex($this->getName()); - if (!$this->mailKey) { - $this->mailKey = Filesystem::readRandomCharacters(20); - } - return parent::save(); } public function getURI() { - return '/almanac/namespace/view/'.$this->getName().'/'; + return urisprintf( + '/almanac/namespace/view/%s/', + $this->getName()); } public function getNameLength() { -- 2.51.2