Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15399808
D13329.id32249.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
13 KB
Referenced Files
None
Subscribers
None
D13329.id32249.diff
View Options
diff --git a/resources/sql/autopatches/20150617.harbor.1.lint.sql b/resources/sql/autopatches/20150617.harbor.1.lint.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20150617.harbor.1.lint.sql
@@ -0,0 +1,14 @@
+CREATE TABLE {$NAMESPACE}_harbormaster.harbormaster_buildlintmessage (
+ id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
+ buildTargetPHID VARBINARY(64) NOT NULL,
+ path LONGTEXT NOT NULL,
+ line INT UNSIGNED,
+ characterOffset INT UNSIGNED,
+ code VARCHAR(32) COLLATE {$COLLATE_TEXT} NOT NULL,
+ severity VARCHAR(32) COLLATE {$COLLATE_TEXT} NOT NULL,
+ name VARCHAR(255) COLLATE {$COLLATE_TEXT} NOT NULL,
+ properties LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL,
+ dateCreated INT UNSIGNED NOT NULL,
+ dateModified INT UNSIGNED NOT NULL,
+ KEY `key_target` (buildTargetPHID)
+) ENGINE=INNODB, COLLATE {$COLLATE_TEXT};
diff --git a/resources/sql/autopatches/20150617.harbor.2.unit.sql b/resources/sql/autopatches/20150617.harbor.2.unit.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20150617.harbor.2.unit.sql
@@ -0,0 +1,13 @@
+CREATE TABLE {$NAMESPACE}_harbormaster.harbormaster_buildunitmessage (
+ id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
+ buildTargetPHID VARBINARY(64) NOT NULL,
+ engine VARCHAR(255) COLLATE {$COLLATE_TEXT} NOT NULL,
+ namespace VARCHAR(255) COLLATE {$COLLATE_TEXT} NOT NULL,
+ name VARCHAR(255) COLLATE {$COLLATE_TEXT} NOT NULL,
+ result VARCHAR(32) COLLATE {$COLLATE_TEXT} NOT NULL,
+ duration DOUBLE,
+ properties LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL,
+ dateCreated INT UNSIGNED NOT NULL,
+ dateModified INT UNSIGNED NOT NULL,
+ KEY `key_target` (buildTargetPHID)
+) ENGINE=INNODB, COLLATE {$COLLATE_TEXT};
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
@@ -832,9 +832,7 @@
'HarbormasterBuildEngine' => 'applications/harbormaster/engine/HarbormasterBuildEngine.php',
'HarbormasterBuildFailureException' => 'applications/harbormaster/exception/HarbormasterBuildFailureException.php',
'HarbormasterBuildGraph' => 'applications/harbormaster/engine/HarbormasterBuildGraph.php',
- 'HarbormasterBuildItem' => 'applications/harbormaster/storage/build/HarbormasterBuildItem.php',
- 'HarbormasterBuildItemPHIDType' => 'applications/harbormaster/phid/HarbormasterBuildItemPHIDType.php',
- 'HarbormasterBuildItemQuery' => 'applications/harbormaster/query/HarbormasterBuildItemQuery.php',
+ 'HarbormasterBuildLintMessage' => 'applications/harbormaster/storage/build/HarbormasterBuildLintMessage.php',
'HarbormasterBuildLog' => 'applications/harbormaster/storage/build/HarbormasterBuildLog.php',
'HarbormasterBuildLogPHIDType' => 'applications/harbormaster/phid/HarbormasterBuildLogPHIDType.php',
'HarbormasterBuildLogQuery' => 'applications/harbormaster/query/HarbormasterBuildLogQuery.php',
@@ -866,6 +864,7 @@
'HarbormasterBuildTransaction' => 'applications/harbormaster/storage/HarbormasterBuildTransaction.php',
'HarbormasterBuildTransactionEditor' => 'applications/harbormaster/editor/HarbormasterBuildTransactionEditor.php',
'HarbormasterBuildTransactionQuery' => 'applications/harbormaster/query/HarbormasterBuildTransactionQuery.php',
+ 'HarbormasterBuildUnitMessage' => 'applications/harbormaster/storage/build/HarbormasterBuildUnitMessage.php',
'HarbormasterBuildViewController' => 'applications/harbormaster/controller/HarbormasterBuildViewController.php',
'HarbormasterBuildWorker' => 'applications/harbormaster/worker/HarbormasterBuildWorker.php',
'HarbormasterBuildable' => 'applications/harbormaster/storage/HarbormasterBuildable.php',
@@ -4252,9 +4251,7 @@
'HarbormasterBuildEngine' => 'Phobject',
'HarbormasterBuildFailureException' => 'Exception',
'HarbormasterBuildGraph' => 'AbstractDirectedGraph',
- 'HarbormasterBuildItem' => 'HarbormasterDAO',
- 'HarbormasterBuildItemPHIDType' => 'PhabricatorPHIDType',
- 'HarbormasterBuildItemQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
+ 'HarbormasterBuildLintMessage' => 'HarbormasterDAO',
'HarbormasterBuildLog' => array(
'HarbormasterDAO',
'PhabricatorPolicyInterface',
@@ -4308,6 +4305,7 @@
'HarbormasterBuildTransaction' => 'PhabricatorApplicationTransaction',
'HarbormasterBuildTransactionEditor' => 'PhabricatorApplicationTransactionEditor',
'HarbormasterBuildTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
+ 'HarbormasterBuildUnitMessage' => 'HarbormasterDAO',
'HarbormasterBuildViewController' => 'HarbormasterController',
'HarbormasterBuildWorker' => 'HarbormasterWorker',
'HarbormasterBuildable' => array(
diff --git a/src/applications/harbormaster/phid/HarbormasterBuildItemPHIDType.php b/src/applications/harbormaster/phid/HarbormasterBuildItemPHIDType.php
deleted file mode 100644
--- a/src/applications/harbormaster/phid/HarbormasterBuildItemPHIDType.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-
-final class HarbormasterBuildItemPHIDType extends PhabricatorPHIDType {
-
- const TYPECONST = 'HMBI';
-
- public function getTypeName() {
- return pht('Build Item');
- }
-
- public function newObject() {
- return new HarbormasterBuildItem();
- }
-
- protected function buildQueryForObjects(
- PhabricatorObjectQuery $query,
- array $phids) {
-
- return id(new HarbormasterBuildItemQuery())
- ->withPHIDs($phids);
- }
-
- public function loadHandles(
- PhabricatorHandleQuery $query,
- array $handles,
- array $objects) {
-
- foreach ($handles as $phid => $handle) {
- $build_item = $objects[$phid];
- }
- }
-
-}
diff --git a/src/applications/harbormaster/query/HarbormasterBuildItemQuery.php b/src/applications/harbormaster/query/HarbormasterBuildItemQuery.php
deleted file mode 100644
--- a/src/applications/harbormaster/query/HarbormasterBuildItemQuery.php
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-
-final class HarbormasterBuildItemQuery
- extends PhabricatorCursorPagedPolicyAwareQuery {
-
- private $ids;
- private $phids;
-
- public function withIDs(array $ids) {
- $this->ids = $ids;
- return $this;
- }
-
- public function withPHIDs(array $phids) {
- $this->phids = $phids;
- return $this;
- }
-
- protected function loadPage() {
- $table = new HarbormasterBuildItem();
- $conn_r = $table->establishConnection('r');
-
- $data = queryfx_all(
- $conn_r,
- 'SELECT * FROM %T %Q %Q %Q',
- $table->getTableName(),
- $this->buildWhereClause($conn_r),
- $this->buildOrderClause($conn_r),
- $this->buildLimitClause($conn_r));
-
- return $table->loadAllFromArray($data);
- }
-
- protected function buildWhereClause(AphrontDatabaseConnection $conn_r) {
- $where = array();
-
- if ($this->ids) {
- $where[] = qsprintf(
- $conn_r,
- 'id IN (%Ld)',
- $this->ids);
- }
-
- if ($this->phids) {
- $where[] = qsprintf(
- $conn_r,
- 'phid in (%Ls)',
- $this->phids);
- }
-
- $where[] = $this->buildPagingClause($conn_r);
-
- return $this->formatWhereClause($where);
- }
-
- public function getQueryApplicationClass() {
- return 'PhabricatorHarbormasterApplication';
- }
-
-}
diff --git a/src/applications/harbormaster/storage/build/HarbormasterBuildItem.php b/src/applications/harbormaster/storage/build/HarbormasterBuildItem.php
deleted file mode 100644
--- a/src/applications/harbormaster/storage/build/HarbormasterBuildItem.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-final class HarbormasterBuildItem extends HarbormasterDAO {
-
- protected $name;
-
- protected function getConfiguration() {
- return array(
- self::CONFIG_AUX_PHID => true,
- self::CONFIG_NO_TABLE => true,
- ) + parent::getConfiguration();
- }
-
- public function generatePHID() {
- return PhabricatorPHID::generateNewPHID(
- HarbormasterBuildItemPHIDType::TYPECONST);
- }
-
-}
diff --git a/src/applications/harbormaster/storage/build/HarbormasterBuildLintMessage.php b/src/applications/harbormaster/storage/build/HarbormasterBuildLintMessage.php
new file mode 100644
--- /dev/null
+++ b/src/applications/harbormaster/storage/build/HarbormasterBuildLintMessage.php
@@ -0,0 +1,98 @@
+<?php
+
+final class HarbormasterBuildLintMessage
+ extends HarbormasterDAO {
+
+ protected $buildTargetPHID;
+ protected $path;
+ protected $line;
+ protected $characterOffset;
+ protected $code;
+ protected $severity;
+ protected $name;
+ protected $properties = array();
+
+ private $buildTarget = self::ATTACHABLE;
+
+ public static function initializeNewLintMessage(
+ HarbormasterBuildTarget $build_target) {
+ return id(new HarbormasterBuildLintMessage())
+ ->setBuildTargetPHID($build_target->getPHID());
+ }
+
+ public static function newFromDictionary(
+ HarbormasterBuildTarget $build_target,
+ array $dict) {
+
+ $obj = self::initializeNewLintMessage($build_target);
+
+ $spec = array(
+ 'path' => 'string',
+ 'line' => 'optional int',
+ 'char' => 'optional int',
+ 'code' => 'string',
+ 'severity' => 'string',
+ 'name' => 'string',
+ 'description' => 'optional string',
+ );
+
+ // We're just going to ignore extra keys for now, to make it easier to
+ // add stuff here later on.
+ $dict = array_select_keys($dict, array_keys($spec));
+ PhutilTypeSpec::checkMap($dict, $spec);
+
+ $obj->setPath($dict['path']);
+ $obj->setLine(idx($dict, 'line'));
+ $obj->setCharacterOffset(idx($dict, 'char'));
+ $obj->setCode($dict['code']);
+ $obj->setSeverity($dict['severity']);
+ $obj->setName($dict['name']);
+
+ $description = idx($dict, 'description');
+ if (strlen($description)) {
+ $obj->setProperty('description', $description);
+ }
+
+ return $obj;
+ }
+
+ protected function getConfiguration() {
+ return array(
+ self::CONFIG_SERIALIZATION => array(
+ 'properties' => self::SERIALIZATION_JSON,
+ ),
+ self::CONFIG_COLUMN_SCHEMA => array(
+ 'path' => 'text',
+ 'line' => 'uint32?',
+ 'characterOffset' => 'uint32?',
+ 'code' => 'text32',
+ 'severity' => 'text32',
+ 'name' => 'text255',
+ ),
+ self::CONFIG_KEY_SCHEMA => array(
+ 'key_target' => array(
+ 'columns' => array('buildTargetPHID'),
+ ),
+ ),
+ ) + parent::getConfiguration();
+ }
+
+ public function attachBuildTarget(HarbormasterBuildTarget $build_target) {
+ $this->buildTarget = $build_target;
+ return $this;
+ }
+
+ public function getBuildTarget() {
+ return $this->assertAttached($this->buildTarget);
+ }
+
+ public function getProperty($key, $default = null) {
+ return idx($this->properties, $key, $default);
+ }
+
+ public function setProperty($key, $value) {
+ $this->properties[$key] = $value;
+ return $this;
+ }
+
+}
diff --git a/src/applications/harbormaster/storage/build/HarbormasterBuildUnitMessage.php b/src/applications/harbormaster/storage/build/HarbormasterBuildUnitMessage.php
new file mode 100644
--- /dev/null
+++ b/src/applications/harbormaster/storage/build/HarbormasterBuildUnitMessage.php
@@ -0,0 +1,100 @@
+<?php
+
+final class HarbormasterBuildUnitMessage
+ extends HarbormasterDAO {
+
+ protected $buildTargetPHID;
+ protected $engine;
+ protected $namespace;
+ protected $name;
+ protected $result;
+ protected $duration;
+ protected $properties = array();
+
+ private $buildTarget = self::ATTACHABLE;
+
+ public static function initializeNewUnitMessage(
+ HarbormasterBuildTarget $build_target) {
+ return id(new HarbormasterBuildLintMessage())
+ ->setBuildTargetPHID($build_target->getPHID());
+ }
+
+ public static function newFromDictionary(
+ HarbormasterBuildTarget $build_target,
+ array $dict) {
+
+ $obj = self::initializeNewUnitMessage($build_target);
+
+ $spec = array(
+ 'engine' => 'optional string',
+ 'namespace' => 'optional string',
+ 'name' => 'string',
+ 'result' => 'string',
+ 'duration' => 'optional float',
+ 'path' => 'optional string',
+ 'coverage' => 'optional string',
+ );
+
+ // We're just going to ignore extra keys for now, to make it easier to
+ // add stuff here later on.
+ $dict = array_select_keys($dict, array_keys($spec));
+ PhutilTypeSpec::checkMap($dict, $spec);
+
+ $obj->setEngine(idx($dict, 'engine', ''));
+ $obj->setNamespace(idx($dict, 'namespace', ''));
+ $obj->setName($dict['name']);
+ $obj->setResult($dict['result']);
+ $obj->setDuration(idx($dict, 'duration'));
+
+ $path = idx($dict, 'path');
+ if (strlen($path)) {
+ $obj->setProperty('path', $path);
+ }
+
+ $coverage = idx($dict, 'coverage');
+ if (strlen($coverage)) {
+ $obj->setProperty('coverage', $coverage);
+ }
+
+ return $obj;
+ }
+
+ protected function getConfiguration() {
+ return array(
+ self::CONFIG_SERIALIZATION => array(
+ 'properties' => self::SERIALIZATION_JSON,
+ ),
+ self::CONFIG_COLUMN_SCHEMA => array(
+ 'engine' => 'text255',
+ 'namespace' => 'text255',
+ 'name' => 'text255',
+ 'result' => 'text32',
+ 'duration' => 'double?',
+ ),
+ self::CONFIG_KEY_SCHEMA => array(
+ 'key_target' => array(
+ 'columns' => array('buildTargetPHID'),
+ ),
+ ),
+ ) + parent::getConfiguration();
+ }
+
+ public function attachBuildTarget(HarbormasterBuildTarget $build_target) {
+ $this->buildTarget = $build_target;
+ return $this;
+ }
+
+ public function getBuildTarget() {
+ return $this->assertAttached($this->buildTarget);
+ }
+
+ public function getProperty($key, $default = null) {
+ return idx($this->properties, $key, $default);
+ }
+
+ public function setProperty($key, $value) {
+ $this->properties[$key] = $value;
+ return $this;
+ }
+
+}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Mar 18, 7:51 AM (23 h, 36 m ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7709506
Default Alt Text
D13329.id32249.diff (13 KB)
Attached To
Mode
D13329: Replace Harbormaster "BuildItem" with Lint/Unit messages
Attached
Detach File
Event Timeline
Log In to Comment