From febd68039fdcb2be22fcd4bf4c51d0dc76f8edff Mon Sep 17 00:00:00 2001 From: Austin McKinley Date: Wed, 19 Apr 2017 15:17:10 -0700 Subject: [PATCH] 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 --- .../20170418.1.application.01.xaction.sql | 19 ++++++++++++++ .../20170418.1.application.02.edge.sql | 16 ++++++++++++ .../base/PhabricatorApplication.php | 25 ++++++++++++++++++- ...ApplicationApplicationTransactionQuery.php | 10 ++++++++ ...plicationApplicationTransactionComment.php | 10 ++++++++ ...catorApplicationApplicationTransaction.php | 22 ++++++++++++++++ .../PhabricatorApplicationTransactionType.php | 4 +++ .../patch/PhabricatorBuiltinPatchList.php | 1 + 8 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 resources/sql/autopatches/20170418.1.application.01.xaction.sql create mode 100644 resources/sql/autopatches/20170418.1.application.02.edge.sql create mode 100644 src/applications/meta/query/PhabricatorApplicationApplicationTransactionQuery.php create mode 100644 src/applications/meta/storage/PhabricatorApplicationApplicationTransactionComment.php create mode 100644 src/applications/meta/xactions/PhabricatorApplicationApplicationTransaction.php create mode 100644 src/applications/meta/xactions/PhabricatorApplicationTransactionType.php diff --git a/resources/sql/autopatches/20170418.1.application.01.xaction.sql b/resources/sql/autopatches/20170418.1.application.01.xaction.sql new file mode 100644 index 0000000000..70868ef2f4 --- /dev/null +++ b/resources/sql/autopatches/20170418.1.application.01.xaction.sql @@ -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}; diff --git a/resources/sql/autopatches/20170418.1.application.02.edge.sql b/resources/sql/autopatches/20170418.1.application.02.edge.sql new file mode 100644 index 0000000000..a8f3e1e332 --- /dev/null +++ b/resources/sql/autopatches/20170418.1.application.02.edge.sql @@ -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}; diff --git a/src/applications/base/PhabricatorApplication.php b/src/applications/base/PhabricatorApplication.php index 93b738d9e0..8bf784fb1e 100644 --- a/src/applications/base/PhabricatorApplication.php +++ b/src/applications/base/PhabricatorApplication.php @@ -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; + } } diff --git a/src/applications/meta/query/PhabricatorApplicationApplicationTransactionQuery.php b/src/applications/meta/query/PhabricatorApplicationApplicationTransactionQuery.php new file mode 100644 index 0000000000..77843f713d --- /dev/null +++ b/src/applications/meta/query/PhabricatorApplicationApplicationTransactionQuery.php @@ -0,0 +1,10 @@ + array(), 'db.badges' => array(), 'db.packages' => array(), + 'db.application' => array(), '0000.legacy.sql' => array( 'legacy' => 0, ),