diff --git a/resources/sql/patches/20130426.search_savedquery.sql b/resources/sql/patches/20130426.search_savedquery.sql new file mode 100644 index 0000000000..7b03dde976 --- /dev/null +++ b/resources/sql/patches/20130426.search_savedquery.sql @@ -0,0 +1,11 @@ +CREATE TABLE {$NAMESPACE}_search.search_savedquery ( + id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, + engineClassName VARCHAR(255) NOT NULL COLLATE utf8_bin, + parameters LONGTEXT NOT NULL COLLATE utf8_bin, + dateCreated INT(10) UNSIGNED NOT NULL, + dateModified INT(10) UNSIGNED NOT NULL, + queryKey VARCHAR(12) NOT NULL COLLATE utf8_bin, + PRIMARY KEY(id), + UNIQUE KEY key_queryKey (queryKey) +) +ENGINE=InnoDB, COLLATE utf8_general_ci diff --git a/src/applications/search/storage/PhabricatorSavedQuery.php b/src/applications/search/storage/PhabricatorSavedQuery.php index 2045333541..8433e0d7b7 100644 --- a/src/applications/search/storage/PhabricatorSavedQuery.php +++ b/src/applications/search/storage/PhabricatorSavedQuery.php @@ -6,6 +6,8 @@ final class PhabricatorSavedQuery extends PhabricatorSearchDAO { protected $parameters = array(); + protected $queryKey = ""; + protected $engineClassName = "PhabricatorPasteSearchEngine"; public function getConfiguration() { return array( @@ -22,4 +24,15 @@ final class PhabricatorSavedQuery extends PhabricatorSearchDAO { public function getParameter($key, $default = null) { return idx($this->parameters, $key, $default); } + + public function save() { + if ($this->getEngineClass() === null) { + throw new Exception(pht("Engine class is null.")); + } + + $serial = $this->getEngineClass().serialize($this->parameters); + $this->queryKey = PhabricatorHash::digestForIndex($serial); + + return parent::save(); + } } diff --git a/src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php b/src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php index e4a46bc335..a5ce2b5960 100644 --- a/src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php +++ b/src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php @@ -1254,6 +1254,10 @@ final class PhabricatorBuiltinPatchList extends PhabricatorSQLPatchList { 'type' => 'sql', 'name' => $this->getPatchPath('20130423.conpherenceindices.sql'), ), + '20130426.search_savedquery.sql' => array( + 'type' => 'sql', + 'name' => $this->getPatchPath('20130426.search_savedquery.sql'), + ), ); } }