From 45c402fc4cb9413577aee6f7f6f4a5364608ab99 Mon Sep 17 00:00:00 2001 From: Robbie Averill Date: Mon, 4 Dec 2017 11:53:37 +1300 Subject: [PATCH] API Remove bind_manipulation_capture and RequestFilter, use Injector instead --- _config.php | 7 --- _config/binding.yml | 5 -- _config/config.yml | 5 +- _config/database.yml | 28 +++++++++++ .../SearchManipulateCapture_MySQLDatabase.php | 2 +- ...chManipulateCapture_PostgreSQLDatabase.php | 2 +- ...earchManipulateCapture_SQLite3Database.php | 2 +- .../SearchUpdater_ObjectHandler.php | 10 ++-- src/Search/Updaters/SearchUpdater.php | 38 ++------------- ...hUpdater_BindManipulationCaptureFilter.php | 21 --------- tests/BatchedProcessorTest.php | 2 + tests/SearchUpdaterTest.php | 46 +++++++++---------- tests/SearchVariantSubsitesTest.php | 8 ++-- tests/SearchVariantVersionedTest.php | 2 - tests/SolrIndexSubsitesTest.php | 8 ++-- tests/SolrIndexVersionedTest.php | 4 +- 16 files changed, 74 insertions(+), 116 deletions(-) delete mode 100644 _config.php delete mode 100644 _config/binding.yml create mode 100644 _config/database.yml rename src/Search/{Updaters => Extensions}/SearchUpdater_ObjectHandler.php (97%) delete mode 100644 src/Search/Updaters/SearchUpdater_BindManipulationCaptureFilter.php diff --git a/_config.php b/_config.php deleted file mode 100644 index 118255b..0000000 --- a/_config.php +++ /dev/null @@ -1,7 +0,0 @@ -getSelectedDatabase() || @$current->isManipulationCapture) { - return; - } // If not yet set, or its already captured, just return - - $type = (new ReflectionClass($current))->getShortName(); - $dbClass = 'SilverStripe\FullTextSearch\Captures\SearchManipulateCapture_' . $type; - - // Check if Capture class exists. - if (!class_exists($dbClass)) { - return; - } - - /** @var Database $captured */ - $captured = new $dbClass(); - - $captured->setConnector($current->getConnector()); - $captured->setQueryBuilder($current->getQueryBuilder()); - $captured->setSchemaManager($current->getSchemaManager()); - - // The connection might have had it's name changed (like if we're currently in a test) - $captured->selectDatabase($current->getSelectedDatabase()); - DB::set_conn($captured); - } - public static $registered = false; /** @var SearchUpdateProcessor */ public static $processor = null; diff --git a/src/Search/Updaters/SearchUpdater_BindManipulationCaptureFilter.php b/src/Search/Updaters/SearchUpdater_BindManipulationCaptureFilter.php deleted file mode 100644 index 4262e8c..0000000 --- a/src/Search/Updaters/SearchUpdater_BindManipulationCaptureFilter.php +++ /dev/null @@ -1,21 +0,0 @@ -reset(); } - SearchUpdater::bind_manipulation_capture(); - Config::modify()->set(Injector::class, SearchUpdateProcessor::class, array( 'class' => SearchUpdateImmediateProcessor::class )); @@ -72,17 +70,17 @@ class SearchUpdaterTest extends SapphireTest // Check the default "writing a document updates the document" SearchUpdater::flush_dirty_indexes(); - $added = self::$index->getAdded(array('ID')); + $added = self::$index->getAdded(['ID']); // Some databases don't output $added in a consistent order; that's okay usort($added, function ($a, $b) { return $a['ID']-$b['ID']; }); - $this->assertEquals($added, array( - array('ID' => $container1->ID), - array('ID' => $container2->ID), - array('ID' => $container3->ID) - )); + $this->assertEquals([ + ['ID' => $container1->ID], + ['ID' => $container2->ID], + ['ID' => $container3->ID], + ], $added); // Check writing a has_one tracks back to the origin documents @@ -92,17 +90,17 @@ class SearchUpdaterTest extends SapphireTest $hasOne->write(); SearchUpdater::flush_dirty_indexes(); - $added = self::$index->getAdded(array('ID')); + $added = self::$index->getAdded(['ID']); // Some databases don't output $added in a consistent order; that's okay usort($added, function ($a, $b) { return $a['ID']-$b['ID']; }); - $this->assertEquals($added, array( - array('ID' => $container1->ID), - array('ID' => $container2->ID) - )); + $this->assertEquals([ + ['ID' => $container1->ID], + ['ID' => $container2->ID], + ], $added); // Check updating an unrelated field doesn't track back @@ -112,7 +110,7 @@ class SearchUpdaterTest extends SapphireTest $hasOne->write(); SearchUpdater::flush_dirty_indexes(); - $this->assertEquals(self::$index->getAdded(array('ID')), array()); + $this->assertEquals([], self::$index->getAdded(['ID'])); // Check writing a has_one tracks back to the origin documents @@ -122,9 +120,9 @@ class SearchUpdaterTest extends SapphireTest $alternateHasOne->write(); SearchUpdater::flush_dirty_indexes(); - $this->assertEquals(self::$index->getAdded(array('ID')), array( - array('ID' => $container3->ID) - )); + $this->assertEquals([ + ['ID' => $container3->ID], + ], self::$index->getAdded(['ID'])); } public function testHasManyHook() @@ -148,10 +146,10 @@ class SearchUpdaterTest extends SapphireTest SearchUpdater::flush_dirty_indexes(); - $this->assertEquals(self::$index->getAdded(array('ID')), array( - array('ID' => $container1->ID), - array('ID' => $container2->ID) - )); + $this->assertEquals([ + ['ID' => $container1->ID], + ['ID' => $container2->ID], + ], self::$index->getAdded(['ID'])); self::$index->reset(); @@ -162,8 +160,8 @@ class SearchUpdaterTest extends SapphireTest $hasMany2->write(); SearchUpdater::flush_dirty_indexes(); - $this->assertEquals(self::$index->getAdded(array('ID')), array( - array('ID' => $container1->ID) - )); + $this->assertEquals([ + ['ID' => $container1->ID], + ], self::$index->getAdded(['ID'])); } } diff --git a/tests/SearchVariantSubsitesTest.php b/tests/SearchVariantSubsitesTest.php index 428bb39..6ef6be2 100644 --- a/tests/SearchVariantSubsitesTest.php +++ b/tests/SearchVariantSubsitesTest.php @@ -31,11 +31,9 @@ class SearchVariantSubsiteTest extends SapphireTest self::$index = singleton(static::class); } - SearchUpdater::bind_manipulation_capture(); - - Config::modify()->set(Injector::class, SearchUpdateProcessor::class, [ - 'class' => SearchUpdateImmediateProcessor::class - ]); + Config::inst()->update('Injector', 'SearchUpdateProcessor', array( + 'class' => 'SearchUpdateImmediateProcessor' + )); FullTextSearch::force_index_list(self::$index); SearchUpdater::clear_dirty_indexes(); diff --git a/tests/SearchVariantVersionedTest.php b/tests/SearchVariantVersionedTest.php index ecda9d3..5c34da7 100644 --- a/tests/SearchVariantVersionedTest.php +++ b/tests/SearchVariantVersionedTest.php @@ -34,8 +34,6 @@ class SearchVariantVersionedTest extends SapphireTest self::$index = singleton(SearchVariantVersionedTest_Index::class); } - SearchUpdater::bind_manipulation_capture(); - Config::modify()->set(Injector::class, SearchUpdateProcessor::class, array( 'class' => SearchUpdateImmediateProcessor::class )); diff --git a/tests/SolrIndexSubsitesTest.php b/tests/SolrIndexSubsitesTest.php index d17f2f8..b1beb63 100644 --- a/tests/SolrIndexSubsitesTest.php +++ b/tests/SolrIndexSubsitesTest.php @@ -55,11 +55,9 @@ class SolrIndexSubsitesTest extends SapphireTest self::$index = singleton(SolrIndexSubsitesTest_Index::class); } - SearchUpdater::bind_manipulation_capture(); - - Config::modify()->set(Injector::class, SearchUpdateProcessor::class, [ - 'class' => SearchUpdateImmediateProcessor::class, - ]); + Config::modify()->set('Injector', 'SearchUpdateProcessor', array( + 'class' => 'SearchUpdateImmediateProcessor' + )); FullTextSearch::force_index_list(self::$index); SearchUpdater::clear_dirty_indexes(); diff --git a/tests/SolrIndexVersionedTest.php b/tests/SolrIndexVersionedTest.php index 14af82d..23b7a66 100644 --- a/tests/SolrIndexVersionedTest.php +++ b/tests/SolrIndexVersionedTest.php @@ -46,9 +46,7 @@ class SolrIndexVersionedTest extends SapphireTest self::$index = singleton(SolrVersionedTest_Index::class); } - SearchUpdater::bind_manipulation_capture(); - - Config::modify()->set(Injector::class, SearchUpdateProcessor::class, [ + Config::modify()->set(Injector::class, SearchUpdateProcessor::class, array( 'class' => SearchUpdateImmediateProcessor::class ]);