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
