1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-22 21:40:55 +01:00

Add initial infrastructure for adding ModularTransaction support to Application config changes

Summary: Part of the groundwork for T11476.

Test Plan: ran `./bin/storage upgrade` and observed expected DB tables

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin

Maniphest Tasks: T11476

Differential Revision: https://secure.phabricator.com/D17736
This commit is contained in:
Austin McKinley 2017-04-19 15:17:10 -07:00
parent db60af7ea5
commit febd68039f
8 changed files with 106 additions and 1 deletions

View file

@ -0,0 +1,19 @@
CREATE TABLE {$NAMESPACE}_application.application_applicationtransaction (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
phid VARBINARY(64) NOT NULL,
authorPHID VARBINARY(64) NOT NULL,
objectPHID VARBINARY(64) NOT NULL,
viewPolicy VARBINARY(64) NOT NULL,
editPolicy VARBINARY(64) NOT NULL,
commentPHID VARBINARY(64) DEFAULT NULL,
commentVersion INT UNSIGNED NOT NULL,
transactionType VARCHAR(32) COLLATE {$COLLATE_TEXT} NOT NULL,
oldValue LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL,
newValue LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL,
contentSource LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL,
metadata LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL,
dateCreated INT UNSIGNED NOT NULL,
dateModified INT UNSIGNED NOT NULL,
UNIQUE KEY `key_phid` (`phid`),
KEY `key_object` (`objectPHID`)
) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};

View file

@ -0,0 +1,16 @@
CREATE TABLE {$NAMESPACE}_application.edge (
src VARBINARY(64) NOT NULL,
type INT UNSIGNED NOT NULL,
dst VARBINARY(64) NOT NULL,
dateCreated INT UNSIGNED NOT NULL,
seq INT UNSIGNED NOT NULL,
dataID INT UNSIGNED,
PRIMARY KEY (src, type, dst),
KEY `src` (src, type, dateCreated, seq),
UNIQUE KEY `key_dst` (dst, type, src)
) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
CREATE TABLE {$NAMESPACE}_application.edgedata (
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
data LONGTEXT NOT NULL COLLATE {$COLLATE_TEXT}
) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};

View file

@ -10,7 +10,9 @@
*/
abstract class PhabricatorApplication
extends Phobject
implements PhabricatorPolicyInterface {
implements
PhabricatorPolicyInterface,
PhabricatorApplicationTransactionInterface {
const GROUP_CORE = 'core';
const GROUP_UTILITIES = 'util';
@ -613,4 +615,25 @@ abstract class PhabricatorApplication
);
}
/* -( PhabricatorApplicationTransactionInterface )------------------------- */
public function getApplicationTransactionEditor() {
return new PhabricatorApplicationEditor();
}
public function getApplicationTransactionObject() {
return $this;
}
public function getApplicationTransactionTemplate() {
return new PhabricatorApplicationApplicationTransaction();
}
public function willRenderTimeline(
PhabricatorApplicationTransactionView $timeline,
AphrontRequest $request) {
return $timeline;
}
}

View file

@ -0,0 +1,10 @@
<?php
final class PhabricatorApplicationApplicationTransactionQuery
extends PhabricatorApplicationTransactionQuery {
public function getTemplateApplicationTransaction() {
return new PhabricatorApplicationApplicationTransaction();
}
}

View file

@ -0,0 +1,10 @@
<?php
final class PhabricatorApplicationApplicationTransactionComment
extends PhabricatorApplicationTransactionComment {
public function getApplicationTransactionObject() {
return new PhabricatorApplicationApplicationTransaction();
}
}

View file

@ -0,0 +1,22 @@
<?php
final class PhabricatorApplicationApplicationTransaction
extends PhabricatorModularTransaction {
public function getApplicationName() {
return 'application';
}
public function getApplicationTransactionType() {
return PhabricatorApplicationApplicationPHIDType::TYPECONST;
}
public function getApplicationTransactionCommentObject() {
return new PhabricatorApplicationTransactionComment();
}
public function getBaseTransactionClass() {
return 'PhabricatorApplicationTransactionType';
}
}

View file

@ -0,0 +1,4 @@
<?php
abstract class PhabricatorApplicationTransactionType
extends PhabricatorModularTransactionType {}

View file

@ -112,6 +112,7 @@ final class PhabricatorBuiltinPatchList extends PhabricatorSQLPatchList {
'db.phurl' => array(),
'db.badges' => array(),
'db.packages' => array(),
'db.application' => array(),
'0000.legacy.sql' => array(
'legacy' => 0,
),