Jeroen De Dauw has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/93966


Change subject: Notify the SQLStore of Entity changes
......................................................................

Notify the SQLStore of Entity changes

Change-Id: I366ddc3cece122217e54c9cc4c81f94f12024c62
---
M Tests/System/EntitiesByPropertyValueApiTest.php
M Tests/System/Specials/SimpleQueryTest.php
M Tests/Unit/DIC/WikibaseQueryTest.php
M Tests/Unit/Setup/ExtensionSetupTest.php
M Tests/Unit/Setup/HookSetupTest.php
A src/Wikibase/Query/DIC/Builders/QueryStoreWriterBuilder.php
M src/Wikibase/Query/DIC/WikibaseQuery.php
M src/Wikibase/Query/DIC/WikibaseQueryBuilder.php
M src/Wikibase/Query/Setup/HookSetup.php
9 files changed, 82 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseQuery 
refs/changes/66/93966/1

diff --git a/Tests/System/EntitiesByPropertyValueApiTest.php 
b/Tests/System/EntitiesByPropertyValueApiTest.php
index 4bddd41..810740e 100644
--- a/Tests/System/EntitiesByPropertyValueApiTest.php
+++ b/Tests/System/EntitiesByPropertyValueApiTest.php
@@ -6,6 +6,7 @@
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\DataModel\Entity\PropertyId;
 use Wikibase\Item;
+use Wikibase\ItemContent;
 use Wikibase\Property;
 use Wikibase\PropertyContent;
 use Wikibase\PropertyValueSnak;
@@ -16,7 +17,7 @@
  * @group WikibaseQuery
  * @group WikibaseQuerySystem
  * @group Database
- * @group large
+ * @group medium
  *
  * @licence GNU GPL v2+
  * @author Jeroen De Dauw < [email protected] >
@@ -62,11 +63,10 @@
        }
 
        protected function insertNewItem() {
-               $storeUpdater = $this->getQueryStore()->newWriter();
-
                $item = $this->newMockItem();
 
-               $storeUpdater->insertEntity( $item );
+               $itemContent = ItemContent::newFromItem( $item );
+               $itemContent->save();
        }
 
        protected function newMockItem() {
diff --git a/Tests/System/Specials/SimpleQueryTest.php 
b/Tests/System/Specials/SimpleQueryTest.php
index fe3170f..9e1c949 100644
--- a/Tests/System/Specials/SimpleQueryTest.php
+++ b/Tests/System/Specials/SimpleQueryTest.php
@@ -1,6 +1,7 @@
 <?php
 
 namespace Tests\Integration\Wikibase\Query\Special;
+
 use \Wikibase\Test\SpecialPageTestBase;
 use \Wikibase\Query\Specials\SimpleQuery;
 
@@ -8,6 +9,7 @@
  * @group Wikibase
  * @group SpecialPage
  * @group WikibaseSpecialPage
+ * @group medium
  *
  * @since 0.1
  * @licence GNU GPL v2+
diff --git a/Tests/Unit/DIC/WikibaseQueryTest.php 
b/Tests/Unit/DIC/WikibaseQueryTest.php
index d4828a6..811c69e 100644
--- a/Tests/Unit/DIC/WikibaseQueryTest.php
+++ b/Tests/Unit/DIC/WikibaseQueryTest.php
@@ -42,6 +42,7 @@
                $argLists[] = array( 'byPropertyValueEntityFinder', 
'getByPropertyValueEntityFinder' );
                $argLists[] = array( 'queryStoreWithDependencies', 
'getQueryStoreWithDependencies' );
                $argLists[] = array( 'extensionUpdater', 'getExtensionUpdater' 
);
+               $argLists[] = array( 'queryStoreWriter', 'getQueryStoreWriter' 
);
 
                return $argLists;
        }
diff --git a/Tests/Unit/Setup/ExtensionSetupTest.php 
b/Tests/Unit/Setup/ExtensionSetupTest.php
index 525cc2b..25a392f 100644
--- a/Tests/Unit/Setup/ExtensionSetupTest.php
+++ b/Tests/Unit/Setup/ExtensionSetupTest.php
@@ -59,7 +59,7 @@
 
        public function testInternationalizationRegistration() {
                $this->runSetup();
-               $this->assertHooksAreRegistered();
+               $this->assertInternationalizationIsRegistered();
        }
 
        protected function assertInternationalizationIsRegistered() {
diff --git a/Tests/Unit/Setup/HookSetupTest.php 
b/Tests/Unit/Setup/HookSetupTest.php
index 0890d03..b8857ff 100644
--- a/Tests/Unit/Setup/HookSetupTest.php
+++ b/Tests/Unit/Setup/HookSetupTest.php
@@ -18,6 +18,9 @@
        protected $expectedHooks = array(
                'UnitTestsList',
                'LoadExtensionSchemaUpdates',
+               'WikibaseEntityInsertionUpdate',
+               'WikibaseEntityModificationUpdate',
+               'WikibaseEntityDeletionUpdate',
        );
 
        public function testRegistersHooks() {
diff --git a/src/Wikibase/Query/DIC/Builders/QueryStoreWriterBuilder.php 
b/src/Wikibase/Query/DIC/Builders/QueryStoreWriterBuilder.php
new file mode 100644
index 0000000..3535cc8
--- /dev/null
+++ b/src/Wikibase/Query/DIC/Builders/QueryStoreWriterBuilder.php
@@ -0,0 +1,38 @@
+<?php
+
+namespace Wikibase\Query\DIC\Builders;
+
+use Wikibase\Database\QueryInterface\QueryInterface;
+use Wikibase\Query\DIC\DependencyBuilder;
+use Wikibase\Query\DIC\DependencyManager;
+use Wikibase\QueryEngine\QueryStoreWriter;
+use Wikibase\QueryEngine\SQLStore\SQLStore;
+
+/**
+ * @licence GNU GPL v2+
+ * @author Jeroen De Dauw < [email protected] >
+ */
+class QueryStoreWriterBuilder extends DependencyBuilder {
+
+       /**
+        * @see DependencyBuilder::buildObject
+        *
+        * @param DependencyManager $dependencyManager
+        *
+        * @return QueryStoreWriter
+        */
+       public function buildObject( DependencyManager $dependencyManager ) {
+               /**
+                * @var SQLStore $queryStore
+                */
+               $queryStore = $dependencyManager->newObject( 'sqlStore' );
+
+               /**
+                * @var QueryInterface $queryInterface
+                */
+               $queryInterface = $dependencyManager->newObject( 
'masterQueryInterface' );
+
+               return $queryStore->newWriter( $queryInterface );
+       }
+
+}
diff --git a/src/Wikibase/Query/DIC/WikibaseQuery.php 
b/src/Wikibase/Query/DIC/WikibaseQuery.php
index 35eed20..133291f 100644
--- a/src/Wikibase/Query/DIC/WikibaseQuery.php
+++ b/src/Wikibase/Query/DIC/WikibaseQuery.php
@@ -5,6 +5,7 @@
 use Wikibase\Query\ByPropertyValueEntityFinder;
 use Wikibase\Query\Setup\ExtensionUpdater;
 use Wikibase\QueryEngine\QueryStoreWithDependencies;
+use Wikibase\QueryEngine\QueryStoreWriter;
 
 /**
  * This class exposes methods to retrieve each type of generally accessible 
object
@@ -53,4 +54,11 @@
                return $this->dependencyManager->newObject( 
'queryStoreWithDependencies' );
        }
 
+       /**
+        * @return QueryStoreWriter
+        */
+       public function getQueryStoreWriter() {
+               return $this->dependencyManager->newObject( 'queryStoreWriter' 
);
+       }
+
 }
\ No newline at end of file
diff --git a/src/Wikibase/Query/DIC/WikibaseQueryBuilder.php 
b/src/Wikibase/Query/DIC/WikibaseQueryBuilder.php
index 92bf11b..c644fb1 100644
--- a/src/Wikibase/Query/DIC/WikibaseQueryBuilder.php
+++ b/src/Wikibase/Query/DIC/WikibaseQueryBuilder.php
@@ -7,6 +7,7 @@
 use Wikibase\Query\DIC\Builders\ExtensionUpdaterBuilder;
 use Wikibase\Query\DIC\Builders\QueryInterfaceBuilder;
 use Wikibase\Query\DIC\Builders\QueryStoreWithDependenciesBuilder;
+use Wikibase\Query\DIC\Builders\QueryStoreWriterBuilder;
 use Wikibase\Query\DIC\Builders\SQLStoreBuilder;
 use Wikibase\Repo\WikibaseRepo;
 
@@ -86,6 +87,11 @@
                        )
                );
 
+               $dependencyManager->registerBuilder(
+                       'queryStoreWriter',
+                       new QueryStoreWriterBuilder()
+               );
+
                return new WikibaseQuery( $dependencyManager );
        }
 
diff --git a/src/Wikibase/Query/Setup/HookSetup.php 
b/src/Wikibase/Query/Setup/HookSetup.php
index 1fc377e..9baf0da 100644
--- a/src/Wikibase/Query/Setup/HookSetup.php
+++ b/src/Wikibase/Query/Setup/HookSetup.php
@@ -5,6 +5,7 @@
 use RecursiveDirectoryIterator;
 use RecursiveIteratorIterator;
 use SplFileInfo;
+use Wikibase\EntityContent;
 use Wikibase\Query\DIC\ExtensionAccess;
 
 /**
@@ -25,6 +26,7 @@
        public function run() {
                $this->registerUnitTests();
                $this->registerExtensionSchemaUpdates();
+               $this->registerEntityUpdateHookHandlers();
        }
 
        protected function registerUnitTests() {
@@ -54,4 +56,21 @@
                };
        }
 
+       protected function registerEntityUpdateHookHandlers() {
+               $this->hooks['WikibaseEntityInsertionUpdate'][] = function( 
EntityContent $entityContent ) {
+                       
ExtensionAccess::getWikibaseQuery()->getQueryStoreWriter()->insertEntity( 
$entityContent->getEntity() );
+               };
+
+               $this->hooks['WikibaseEntityModificationUpdate'][] =
+                       function( EntityContent $newContent, EntityContent 
$oldContent ) {
+                               
ExtensionAccess::getWikibaseQuery()->getQueryStoreWriter()->updateEntity(
+                                       $newContent->getEntity()
+                               );
+                       };
+
+               $this->hooks['WikibaseEntityDeletionUpdate'][] = function( 
EntityContent $entityContent ) {
+                       
ExtensionAccess::getWikibaseQuery()->getQueryStoreWriter()->deleteEntity( 
$entityContent->getEntity() );
+               };
+       }
+
 }
\ No newline at end of file

-- 
To view, visit https://gerrit.wikimedia.org/r/93966
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I366ddc3cece122217e54c9cc4c81f94f12024c62
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikibaseQuery
Gerrit-Branch: master
Gerrit-Owner: Jeroen De Dauw <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to