Page MenuHomePhabricator

D20641.id.diff
No OneTemporary

D20641.id.diff

diff --git a/resources/sql/autopatches/20190703.polls.01.ferret.doc.sql b/resources/sql/autopatches/20190703.polls.01.ferret.doc.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20190703.polls.01.ferret.doc.sql
@@ -0,0 +1,9 @@
+CREATE TABLE {$NAMESPACE}_slowvote.slowvote_poll_fdocument (
+ id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
+ objectPHID VARBINARY(64) NOT NULL,
+ isClosed BOOL NOT NULL,
+ authorPHID VARBINARY(64),
+ ownerPHID VARBINARY(64),
+ epochCreated INT UNSIGNED NOT NULL,
+ epochModified INT UNSIGNED NOT NULL
+) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
diff --git a/resources/sql/autopatches/20190703.polls.02.ferret.field.sql b/resources/sql/autopatches/20190703.polls.02.ferret.field.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20190703.polls.02.ferret.field.sql
@@ -0,0 +1,8 @@
+CREATE TABLE {$NAMESPACE}_slowvote.slowvote_poll_ffield (
+ id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
+ documentID INT UNSIGNED NOT NULL,
+ fieldKey VARCHAR(4) NOT NULL COLLATE {$COLLATE_TEXT},
+ rawCorpus LONGTEXT NOT NULL COLLATE {$COLLATE_SORT},
+ termCorpus LONGTEXT NOT NULL COLLATE {$COLLATE_SORT},
+ normalCorpus LONGTEXT NOT NULL COLLATE {$COLLATE_SORT}
+) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
diff --git a/resources/sql/autopatches/20190703.polls.03.ferret.ngrams.sql b/resources/sql/autopatches/20190703.polls.03.ferret.ngrams.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20190703.polls.03.ferret.ngrams.sql
@@ -0,0 +1,5 @@
+CREATE TABLE {$NAMESPACE}_slowvote.slowvote_poll_fngrams (
+ id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
+ documentID INT UNSIGNED NOT NULL,
+ ngram CHAR(3) NOT NULL COLLATE {$COLLATE_TEXT}
+) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
diff --git a/resources/sql/autopatches/20190703.polls.04.ferret.cngrams.sql b/resources/sql/autopatches/20190703.polls.04.ferret.cngrams.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20190703.polls.04.ferret.cngrams.sql
@@ -0,0 +1,7 @@
+CREATE TABLE {$NAMESPACE}_slowvote.slowvote_poll_fngrams_common (
+ id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
+ ngram CHAR(3) NOT NULL COLLATE {$COLLATE_TEXT},
+ needsCollection BOOL NOT NULL,
+ UNIQUE KEY `key_ngram` (ngram),
+ KEY `key_collect` (needsCollection)
+) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -4642,6 +4642,8 @@
'PhabricatorSlowvoteOption' => 'applications/slowvote/storage/PhabricatorSlowvoteOption.php',
'PhabricatorSlowvotePoll' => 'applications/slowvote/storage/PhabricatorSlowvotePoll.php',
'PhabricatorSlowvotePollController' => 'applications/slowvote/controller/PhabricatorSlowvotePollController.php',
+ 'PhabricatorSlowvotePollFerretEngine' => 'applications/slowvote/engine/PhabricatorSlowvotePollFerretEngine.php',
+ 'PhabricatorSlowvotePollFulltextEngine' => 'applications/slowvote/engine/PhabricatorSlowvotePollFulltextEngine.php',
'PhabricatorSlowvotePollPHIDType' => 'applications/slowvote/phid/PhabricatorSlowvotePollPHIDType.php',
'PhabricatorSlowvoteQuery' => 'applications/slowvote/query/PhabricatorSlowvoteQuery.php',
'PhabricatorSlowvoteQuestionTransaction' => 'applications/slowvote/xaction/PhabricatorSlowvoteQuestionTransaction.php',
@@ -11013,8 +11015,12 @@
'PhabricatorProjectInterface',
'PhabricatorDestructibleInterface',
'PhabricatorSpacesInterface',
+ 'PhabricatorFerretInterface',
+ 'PhabricatorFulltextInterface',
),
'PhabricatorSlowvotePollController' => 'PhabricatorSlowvoteController',
+ 'PhabricatorSlowvotePollFerretEngine' => 'PhabricatorFerretEngine',
+ 'PhabricatorSlowvotePollFulltextEngine' => 'PhabricatorFulltextEngine',
'PhabricatorSlowvotePollPHIDType' => 'PhabricatorPHIDType',
'PhabricatorSlowvoteQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
'PhabricatorSlowvoteQuestionTransaction' => 'PhabricatorSlowvoteTransactionType',
diff --git a/src/applications/slowvote/editor/PhabricatorSlowvoteEditor.php b/src/applications/slowvote/editor/PhabricatorSlowvoteEditor.php
--- a/src/applications/slowvote/editor/PhabricatorSlowvoteEditor.php
+++ b/src/applications/slowvote/editor/PhabricatorSlowvoteEditor.php
@@ -92,4 +92,8 @@
return true;
}
+ protected function supportsSearch() {
+ return true;
+ }
+
}
diff --git a/src/applications/slowvote/engine/PhabricatorSlowvotePollFerretEngine.php b/src/applications/slowvote/engine/PhabricatorSlowvotePollFerretEngine.php
new file mode 100644
--- /dev/null
+++ b/src/applications/slowvote/engine/PhabricatorSlowvotePollFerretEngine.php
@@ -0,0 +1,18 @@
+<?php
+
+final class PhabricatorSlowvotePollFerretEngine
+ extends PhabricatorFerretEngine {
+
+ public function getApplicationName() {
+ return 'slowvote';
+ }
+
+ public function getScopeName() {
+ return 'poll';
+ }
+
+ public function newSearchEngine() {
+ return new PhabricatorSlowvoteSearchEngine();
+ }
+
+}
diff --git a/src/applications/slowvote/engine/PhabricatorSlowvotePollFulltextEngine.php b/src/applications/slowvote/engine/PhabricatorSlowvotePollFulltextEngine.php
new file mode 100644
--- /dev/null
+++ b/src/applications/slowvote/engine/PhabricatorSlowvotePollFulltextEngine.php
@@ -0,0 +1,33 @@
+<?php
+
+final class PhabricatorSlowvotePollFulltextEngine
+ extends PhabricatorFulltextEngine {
+
+ protected function buildAbstractDocument(
+ PhabricatorSearchAbstractDocument $document,
+ $object) {
+
+ $poll = $object;
+
+ $document->setDocumentTitle($poll->getQuestion());
+
+ $document->addRelationship(
+ $poll->getIsClosed()
+ ? PhabricatorSearchRelationship::RELATIONSHIP_OPEN
+ : PhabricatorSearchRelationship::RELATIONSHIP_CLOSED,
+ $poll->getPHID(),
+ PhabricatorSlowvotePollPHIDType::TYPECONST,
+ PhabricatorTime::getNow());
+
+ $document->addField(
+ PhabricatorSearchDocumentFieldType::FIELD_BODY,
+ $poll->getDescription());
+
+ $document->addRelationship(
+ PhabricatorSearchRelationship::RELATIONSHIP_AUTHOR,
+ $poll->getAuthorPHID(),
+ PhabricatorPeopleUserPHIDType::TYPECONST,
+ $poll->getDateCreated());
+ }
+
+}
diff --git a/src/applications/slowvote/storage/PhabricatorSlowvotePoll.php b/src/applications/slowvote/storage/PhabricatorSlowvotePoll.php
--- a/src/applications/slowvote/storage/PhabricatorSlowvotePoll.php
+++ b/src/applications/slowvote/storage/PhabricatorSlowvotePoll.php
@@ -9,7 +9,9 @@
PhabricatorTokenReceiverInterface,
PhabricatorProjectInterface,
PhabricatorDestructibleInterface,
- PhabricatorSpacesInterface {
+ PhabricatorSpacesInterface,
+ PhabricatorFerretInterface,
+ PhabricatorFulltextInterface {
const RESPONSES_VISIBLE = 0;
const RESPONSES_VOTERS = 1;
@@ -202,10 +204,23 @@
$this->saveTransaction();
}
- /* -( PhabricatorSpacesInterface )--------------------------------------- */
+/* -( PhabricatorSpacesInterface )----------------------------------------- */
public function getSpacePHID() {
return $this->spacePHID;
}
+/* -( PhabricatorFerretInterface )----------------------------------------- */
+
+
+ public function newFerretEngine() {
+ return new PhabricatorSlowvotePollFerretEngine();
+ }
+
+/* -( PhabricatorFulltextInterface )--------------------------------------- */
+
+ public function newFulltextEngine() {
+ return new PhabricatorSlowvotePollFulltextEngine();
+ }
+
}

File Metadata

Mime Type
text/plain
Expires
Tue, Mar 18, 2:26 AM (3 w, 5 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7692744
Default Alt Text
D20641.id.diff (7 KB)

Event Timeline