Page MenuHomePhabricator

D18394.id44209.diff
No OneTemporary

D18394.id44209.diff

diff --git a/resources/sql/autopatches/20170811.differential.01.status.php b/resources/sql/autopatches/20170811.differential.01.status.php
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20170811.differential.01.status.php
@@ -0,0 +1,48 @@
+<?php
+
+// Migrate saved Differential revision queries from using a "<select />"
+// control with hard-coded status groups for status selection to using a
+// tokenizer with status functions.
+
+$table = new PhabricatorSavedQuery();
+$conn = $table->establishConnection('w');
+
+$status_map = array(
+ 'status-open' => array('open()'),
+ 'status-closed' => array('closed()'),
+
+ 'status-accepted' => array('accepted'),
+ 'status-needs-review' => array('needs-review'),
+ 'status-needs-revision' => array('needs-revision'),
+ 'status-abandoned' => array('abandoned'),
+);
+
+foreach (new LiskMigrationIterator($table) as $query) {
+ if ($query->getEngineClassName() !== 'DifferentialRevisionSearchEngine') {
+ // This isn't a revision query.
+ continue;
+ }
+
+ $parameters = $query->getParameters();
+ $status = idx($parameters, 'status');
+
+ if (!$status) {
+ // This query didn't specify a "status" value.
+ continue;
+ }
+
+ if (!isset($status_map[$status])) {
+ // The "status" value is unknown, or does not correspond to a
+ // modern "status" constraint.
+ continue;
+ }
+
+ $parameters['statuses'] = $status_map[$status];
+
+ queryfx(
+ $conn,
+ 'UPDATE %T SET parameters = %s WHERE id = %d',
+ $table->getTableName(),
+ phutil_json_encode($parameters),
+ $query->getID());
+}

File Metadata

Mime Type
text/plain
Expires
Sun, Mar 9, 3:11 AM (3 d, 5 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7382542
Default Alt Text
D18394.id44209.diff (1 KB)

Event Timeline