1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2025-01-18 18:51:12 +01:00

Generate expected schemata for Differential

Summary: Ref T1191. No major issues here.

Test Plan: Saw ~150 fewer issues.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T1191

Differential Revision: https://secure.phabricator.com/D10577
This commit is contained in:
epriestley 2014-09-28 15:12:58 -07:00
parent 9be2bf2119
commit 93681fcdbc
11 changed files with 245 additions and 5 deletions

View file

@ -138,6 +138,10 @@ abstract class PhabricatorConfigSchemaSpec extends Phobject {
'src' => array(
'columns' => array('src', 'type', 'dateCreated', 'seq'),
),
'key_dst' => array(
'columns' => array('dst', 'type', 'src'),
'unique' => true,
),
));
$this->buildRawSchema(
@ -251,16 +255,24 @@ abstract class PhabricatorConfigSchemaSpec extends Phobject {
$charset = 'binary';
$collation = 'binary';
break;
case 'bytes20':
$column_type = 'char(20)';
$charset = 'binary';
$collation = 'binary';
break;
case 'bytes12':
$column_type = 'char(12)';
$charset = 'binary';
$collation = 'binary';
break;
case 'bytes':
$column_type = 'longblob';
case 'bytes4':
$column_type = 'char(4)';
$charset = 'binary';
$collation = 'binary';
break;
case 'bytes':
$column_type = 'longblob';
break;
case 'text255':
$column_type = 'varchar(255)';
$charset = $this->getUTF8Charset();

View file

@ -14,6 +14,18 @@ final class DifferentialAffectedPath extends DifferentialDAO {
public function getConfiguration() {
return array(
self::CONFIG_TIMESTAMPS => false,
self::CONFIG_COLUMN_SCHEMA => array(
'id' => null,
),
self::CONFIG_KEY_SCHEMA => array(
'PRIMARY' => null,
'repositoryID' => array(
'columns' => array('repositoryID', 'pathID', 'epoch'),
),
'revisionID' => array(
'columns' => array('revisionID'),
),
),
) + parent::getConfiguration();
}

View file

@ -28,7 +28,21 @@ final class DifferentialChangeset extends DifferentialDAO
'oldProperties' => self::SERIALIZATION_JSON,
'newProperties' => self::SERIALIZATION_JSON,
'awayPaths' => self::SERIALIZATION_JSON,
)) + parent::getConfiguration();
),
self::CONFIG_COLUMN_SCHEMA => array(
'oldFile' => 'text255?',
'filename' => 'text255',
'changeType' => 'uint32',
'fileType' => 'uint32',
'addLines' => 'uint32',
'delLines' => 'uint32',
),
self::CONFIG_KEY_SCHEMA => array(
'diffID' => array(
'columns' => array('diffID'),
),
),
) + parent::getConfiguration();
}
public function getAffectedLineCount() {

View file

@ -42,6 +42,30 @@ final class DifferentialDiff
public function getConfiguration() {
return array(
self::CONFIG_AUX_PHID => true,
self::CONFIG_COLUMN_SCHEMA => array(
'revisionID' => 'id?',
'authorPHID' => 'phid?',
'repositoryPHID' => 'phid?',
'sourceMachine' => 'text255?',
'sourcePath' => 'text255?',
'sourceControlSystem' => 'text64?',
'sourceControlBaseRevision' => 'text255?',
'sourceControlPath' => 'text255?',
'lintStatus' => 'uint32',
'unitStatus' => 'uint32',
'lineCount' => 'uint32',
'branch' => 'text255?',
'bookmark' => 'text255?',
'arcanistProjectPHID' => 'phid?',
'creationMethod' => 'text255',
'description' => 'text255',
'repositoryUUID' => 'text64?',
),
self::CONFIG_KEY_SCHEMA => array(
'revisionID' => array(
'columns' => array('revisionID'),
),
),
) + parent::getConfiguration();
}

View file

@ -10,7 +10,17 @@ final class DifferentialDiffProperty extends DifferentialDAO {
return array(
self::CONFIG_SERIALIZATION => array(
'data' => self::SERIALIZATION_JSON,
)) + parent::getConfiguration();
),
self::CONFIG_COLUMN_SCHEMA => array(
'name' => 'text255',
),
self::CONFIG_KEY_SCHEMA => array(
'diffID' => array(
'columns' => array('diffID', 'name'),
'unique' => true,
),
),
) + parent::getConfiguration();
}
}

View file

@ -6,6 +6,20 @@ final class DifferentialDraft extends DifferentialDAO {
protected $authorPHID;
protected $draftKey;
public function getConfiguration() {
return array(
self::CONFIG_COLUMN_SCHEMA => array(
'draftKey' => 'text64',
),
self::CONFIG_KEY_SCHEMA => array(
'key_unique' => array(
'columns' => array('objectPHID', 'authorPHID', 'draftKey'),
'unique' => true,
),
),
) + parent::getConfiguration();
}
public static function markHasDraft(
$author_phid,
$object_phid,

View file

@ -4,6 +4,23 @@ final class DifferentialHunkLegacy extends DifferentialHunk {
protected $changes;
public function getConfiguration() {
return array(
self::CONFIG_COLUMN_SCHEMA => array(
'changes' => 'text?',
'oldOffset' => 'uint32',
'oldLen' => 'uint32',
'newOffset' => 'uint32',
'newLen' => 'uint32',
),
self::CONFIG_KEY_SCHEMA => array(
'changesetID' => array(
'columns' => array('changesetID'),
),
),
) + parent::getConfiguration();
}
public function getTableName() {
return 'differential_hunk';
}

View file

@ -25,6 +25,23 @@ final class DifferentialHunkModern extends DifferentialHunk {
self::CONFIG_BINARY => array(
'data' => true,
),
self::CONFIG_COLUMN_SCHEMA => array(
'dataType' => 'bytes4',
'dataEncoding' => 'text16?',
'dataFormat' => 'bytes4',
'oldOffset' => 'uint32',
'oldLen' => 'uint32',
'newOffset' => 'uint32',
'newLen' => 'uint32',
),
self::CONFIG_KEY_SCHEMA => array(
'key_changeset' => array(
'columns' => array('changesetID'),
),
'key_created' => array(
'columns' => array('dateCreated'),
),
),
) + parent::getConfiguration();
}

View file

@ -74,6 +74,33 @@ final class DifferentialRevision extends DifferentialDAO
'attached' => self::SERIALIZATION_JSON,
'unsubscribed' => self::SERIALIZATION_JSON,
),
self::CONFIG_COLUMN_SCHEMA => array(
'title' => 'text255',
'originalTitle' => 'text255',
'status' => 'text32',
'summary' => 'text',
'testPlan' => 'text',
'authorPHID' => 'phid?',
'lastReviewerPHID' => 'phid?',
'lineCount' => 'uint32?',
'mailKey' => 'bytes40',
'branchName' => 'text255',
'arcanistProjectPHID' => 'phid?',
'repositoryPHID' => 'phid?',
),
self::CONFIG_KEY_SCHEMA => array(
'key_phid' => null,
'phid' => array(
'columns' => array('phid'),
'unique' => true,
),
'authorPHID' => array(
'columns' => array('authorPHID', 'status'),
),
'repositoryPHID' => array(
'columns' => array('repositoryPHID'),
),
),
) + parent::getConfiguration();
}

View file

@ -4,7 +4,74 @@ final class DifferentialSchemaSpec extends PhabricatorConfigSchemaSpec {
public function buildSchemata() {
$this->buildLiskSchemata('DifferentialDAO');
// $this->addEdgeSchemata($server, new DifferentialRevision());
$this->buildEdgeSchemata(new DifferentialRevision());
$this->buildTransactionSchema(
new DifferentialTransaction(),
new DifferentialTransactionComment());
$this->buildCustomFieldSchemata(
new DifferentialCustomFieldStorage(),
array(
new DifferentialCustomFieldNumericIndex(),
new DifferentialCustomFieldStringIndex(),
));
$this->buildRawSchema(
id(new DifferentialRevision())->getApplicationName(),
DifferentialChangeset::TABLE_CACHE,
array(
'id' => 'id',
'cache' => 'bytes',
'dateCreated' => 'epoch',
),
array(
'PRIMARY' => array(
'columns' => array('id'),
'unique' => true,
),
'dateCreated' => array(
'columns' => array('dateCreated'),
),
));
$this->buildRawSchema(
id(new DifferentialRevision())->getApplicationName(),
DifferentialRevision::TABLE_COMMIT,
array(
'revisionID' => 'id',
'commitPHID' => 'phid',
),
array(
'PRIMARY' => array(
'columns' => array('revisionID', 'commitPHID'),
'unique' => true,
),
'commitPHID' => array(
'columns' => array('commitPHID'),
'unique' => true,
),
));
$this->buildRawSchema(
id(new DifferentialRevision())->getApplicationName(),
ArcanistDifferentialRevisionHash::TABLE_NAME,
array(
'revisionID' => 'id',
'type' => 'bytes4',
'hash' => 'bytes40',
),
array(
'type' => array(
'columns' => array('type', 'hash'),
),
'revisionID' => array(
'columns' => array('revisionID'),
),
));
}
}

View file

@ -16,6 +16,32 @@ final class DifferentialTransactionComment
return new DifferentialTransaction();
}
public function getConfiguration() {
$config = parent::getConfiguration();
$config[self::CONFIG_COLUMN_SCHEMA] = array(
'revisionPHID' => 'phid?',
'changesetID' => 'id?',
'isNewFile' => 'bool',
'lineNumber' => 'uint32',
'lineLength' => 'uint32',
'fixedState' => 'text12?',
'hasReplies' => 'bool',
'replyToCommentPHID' => 'phid?',
) + $config[self::CONFIG_COLUMN_SCHEMA];
$config[self::CONFIG_KEY_SCHEMA] = array(
'key_draft' => array(
'columns' => array('authorPHID', 'transactionPHID'),
),
'key_changeset' => array(
'columns' => array('changesetID'),
),
'key_revision' => array(
'columns' => array('revisionPHID'),
),
) + $config[self::CONFIG_KEY_SCHEMA];
return $config;
}
public function shouldUseMarkupCache($field) {
// Only cache submitted comments.
return ($this->getTransactionPHID() != null);