Index: resources/sql/patches/20131217.pushlogphid.1.col.sql =================================================================== --- /dev/null +++ resources/sql/patches/20131217.pushlogphid.1.col.sql @@ -0,0 +1,2 @@ +ALTER TABLE {$NAMESPACE}_repository.repository_pushlog + ADD phid VARCHAR(64) NOT NULL COLLATE utf8_bin AFTER id; Index: resources/sql/patches/20131217.pushlogphid.2.mig.php =================================================================== --- /dev/null +++ resources/sql/patches/20131217.pushlogphid.2.mig.php @@ -0,0 +1,20 @@ +<?php + +$table = new PhabricatorRepositoryPushLog(); +$conn_w = $table->establishConnection('w'); + +echo "Assigning PHIDs to push logs...\n"; + +$logs = new LiskMigrationIterator($table); +foreach ($logs as $log) { + $id = $log->getID(); + echo "Updating {$id}...\n"; + queryfx( + $conn_w, + 'UPDATE %T SET phid = %s WHERE id = %d', + $table->getTableName(), + $log->generatePHID(), + $id); +} + +echo "Done.\n"; Index: resources/sql/patches/20131217.pushlogphid.3.key.sql =================================================================== --- /dev/null +++ resources/sql/patches/20131217.pushlogphid.3.key.sql @@ -0,0 +1,2 @@ +ALTER TABLE {$NAMESPACE}_repository.repository_pushlog + ADD UNIQUE KEY `key_phid` (phid); Index: src/__phutil_library_map__.php =================================================================== --- src/__phutil_library_map__.php +++ src/__phutil_library_map__.php @@ -1798,6 +1798,7 @@ 'PhabricatorRepositoryPHIDTypeArcanistProject' => 'applications/repository/phid/PhabricatorRepositoryPHIDTypeArcanistProject.php', 'PhabricatorRepositoryPHIDTypeCommit' => 'applications/repository/phid/PhabricatorRepositoryPHIDTypeCommit.php', 'PhabricatorRepositoryPHIDTypeMirror' => 'applications/repository/phid/PhabricatorRepositoryPHIDTypeMirror.php', + 'PhabricatorRepositoryPHIDTypePushLog' => 'applications/repository/phid/PhabricatorRepositoryPHIDTypePushLog.php', 'PhabricatorRepositoryPHIDTypeRepository' => 'applications/repository/phid/PhabricatorRepositoryPHIDTypeRepository.php', 'PhabricatorRepositoryPullEngine' => 'applications/repository/engine/PhabricatorRepositoryPullEngine.php', 'PhabricatorRepositoryPullLocalDaemon' => 'applications/repository/daemon/PhabricatorRepositoryPullLocalDaemon.php', @@ -4363,6 +4364,7 @@ 'PhabricatorRepositoryPHIDTypeArcanistProject' => 'PhabricatorPHIDType', 'PhabricatorRepositoryPHIDTypeCommit' => 'PhabricatorPHIDType', 'PhabricatorRepositoryPHIDTypeMirror' => 'PhabricatorPHIDType', + 'PhabricatorRepositoryPHIDTypePushLog' => 'PhabricatorPHIDType', 'PhabricatorRepositoryPHIDTypeRepository' => 'PhabricatorPHIDType', 'PhabricatorRepositoryPullEngine' => 'PhabricatorRepositoryEngine', 'PhabricatorRepositoryPullLocalDaemon' => 'PhabricatorDaemon', Index: src/applications/repository/phid/PhabricatorRepositoryPHIDTypePushLog.php =================================================================== --- /dev/null +++ src/applications/repository/phid/PhabricatorRepositoryPHIDTypePushLog.php @@ -0,0 +1,44 @@ +<?php + +final class PhabricatorRepositoryPHIDTypePushLog + extends PhabricatorPHIDType { + + const TYPECONST = 'PSHL'; + + public function getTypeConstant() { + return self::TYPECONST; + } + + public function getTypeName() { + return pht('Push Log'); + } + + public function newObject() { + return new PhabricatorRepositoryPushLog(); + } + + protected function buildQueryForObjects( + PhabricatorObjectQuery $query, + array $phids) { + + return id(new PhabricatorRepositoryPushLogQuery()) + ->withPHIDs($phids); + } + + public function loadHandles( + PhabricatorHandleQuery $query, + array $handles, + array $objects) { + + foreach ($handles as $phid => $handle) { + $log = $objects[$phid]; + + $handle->setName(pht('Push Log %d', $log->getID())); + } + } + + public function canLoadNamedObject($name) { + return false; + } + +} Index: src/applications/repository/storage/PhabricatorRepositoryPushLog.php =================================================================== --- src/applications/repository/storage/PhabricatorRepositoryPushLog.php +++ src/applications/repository/storage/PhabricatorRepositoryPushLog.php @@ -57,10 +57,16 @@ public function getConfiguration() { return array( + self::CONFIG_AUX_PHID => true, self::CONFIG_TIMESTAMPS => false, ) + parent::getConfiguration(); } + public function generatePHID() { + return PhabricatorPHID::generateNewPHID( + PhabricatorRepositoryPHIDTypePushLog::TYPECONST); + } + public function attachRepository(PhabricatorRepository $repository) { $this->repository = $repository; return $this; Index: src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php =================================================================== --- src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php +++ src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php @@ -1832,6 +1832,18 @@ 'type' => 'sql', 'name' => $this->getPatchPath('20131211.phragmentedges.sql'), ), + '20131217.pushlogphid.1.col.sql' => array( + 'type' => 'sql', + 'name' => $this->getPatchPath('20131217.pushlogphid.1.col.sql'), + ), + '20131217.pushlogphid.2.mig.php' => array( + 'type' => 'php', + 'name' => $this->getPatchPath('20131217.pushlogphid.2.mig.php'), + ), + '20131217.pushlogphid.3.key.sql' => array( + 'type' => 'sql', + 'name' => $this->getPatchPath('20131217.pushlogphid.3.key.sql'), + ), ); } }