Addshore has submitted this change and it was merged. Change subject: Update bootstrapping code to match changes in WikibaseQueryEngine ......................................................................
Update bootstrapping code to match changes in WikibaseQueryEngine Change-Id: I19446a08c8919ec3fa2f5b0523ffe07f2c880eb7 --- M Tests/Integration/ObjectConstructionTest.php M Tests/System/EntitiesByPropertyValueApiTest.php M Tests/Unit/DIC/WikibaseQueryTest.php M Tests/Unit/Setup/ExtensionUpdaterTest.php M src/Wikibase/Query/DIC/Builders/ByPropertyValueEntityFinderBuilder.php A src/Wikibase/Query/DIC/Builders/DatabaseConnectionBuilder.php M src/Wikibase/Query/DIC/Builders/ExtensionUpdaterBuilder.php M src/Wikibase/Query/DIC/Builders/QueryInterfaceBuilder.php D src/Wikibase/Query/DIC/Builders/QueryStoreBuilder.php A src/Wikibase/Query/DIC/Builders/QueryStoreWithDependenciesBuilder.php A src/Wikibase/Query/DIC/Builders/SQLStoreBuilder.php M src/Wikibase/Query/DIC/WikibaseQuery.php M src/Wikibase/Query/DIC/WikibaseQueryBuilder.php M src/Wikibase/Query/Setup/ExtensionUpdater.php M src/Wikibase/Query/Setup/HookSetup.php 15 files changed, 361 insertions(+), 190 deletions(-) Approvals: Addshore: Verified; Looks good to me, approved diff --git a/Tests/Integration/ObjectConstructionTest.php b/Tests/Integration/ObjectConstructionTest.php index c9caf18..2a85f2e 100644 --- a/Tests/Integration/ObjectConstructionTest.php +++ b/Tests/Integration/ObjectConstructionTest.php @@ -13,11 +13,6 @@ */ class ObjectConstructionTest extends \PHPUnit_Framework_TestCase { - public function testConstructQueryStore() { - $queryStore = ExtensionAccess::getWikibaseQuery()->getQueryStore(); - $this->assertInstanceOf( 'Wikibase\QueryEngine\QueryStore', $queryStore ); - } - public function testConstructByPropertyValueEntityFinder() { $byPropertyValueEntityFinder = ExtensionAccess::getWikibaseQuery()->getByPropertyValueEntityFinder(); $this->assertInstanceOf( 'Wikibase\Query\ByPropertyValueEntityFinder', $byPropertyValueEntityFinder ); diff --git a/Tests/System/EntitiesByPropertyValueApiTest.php b/Tests/System/EntitiesByPropertyValueApiTest.php index 46b2c1b..4bddd41 100644 --- a/Tests/System/EntitiesByPropertyValueApiTest.php +++ b/Tests/System/EntitiesByPropertyValueApiTest.php @@ -31,7 +31,7 @@ protected $propertyId; protected function getQueryStore() { - return ExtensionAccess::getWikibaseQuery()->getQueryStore(); + return ExtensionAccess::getWikibaseQuery()->getQueryStoreWithDependencies(); } public function setUp() { @@ -40,14 +40,14 @@ $this->itemId = new ItemId( self::ITEM_ID_STRING ); $this->propertyId = new PropertyId( self::PROPERTY_ID_STRING ); - $this->getQueryStore()->newSetup()->install(); + $this->getQueryStore()->newInstaller()->install(); $this->createNewProperty(); $this->insertNewItem(); } public function tearDown() { - $this->getQueryStore()->newSetup()->uninstall(); + $this->getQueryStore()->newUninstaller()->uninstall(); parent::tearDown(); } @@ -62,7 +62,7 @@ } protected function insertNewItem() { - $storeUpdater = $this->getQueryStore()->getWriter(); + $storeUpdater = $this->getQueryStore()->newWriter(); $item = $this->newMockItem(); diff --git a/Tests/Unit/DIC/WikibaseQueryTest.php b/Tests/Unit/DIC/WikibaseQueryTest.php index d70b088..d4828a6 100644 --- a/Tests/Unit/DIC/WikibaseQueryTest.php +++ b/Tests/Unit/DIC/WikibaseQueryTest.php @@ -40,7 +40,8 @@ $argLists = array(); $argLists[] = array( 'byPropertyValueEntityFinder', 'getByPropertyValueEntityFinder' ); - $argLists[] = array( 'queryStore', 'getQueryStore' ); + $argLists[] = array( 'queryStoreWithDependencies', 'getQueryStoreWithDependencies' ); + $argLists[] = array( 'extensionUpdater', 'getExtensionUpdater' ); return $argLists; } diff --git a/Tests/Unit/Setup/ExtensionUpdaterTest.php b/Tests/Unit/Setup/ExtensionUpdaterTest.php index 91c7c78..06d6561 100644 --- a/Tests/Unit/Setup/ExtensionUpdaterTest.php +++ b/Tests/Unit/Setup/ExtensionUpdaterTest.php @@ -16,13 +16,14 @@ class ExtensionUpdaterTest extends \PHPUnit_Framework_TestCase { public function testRunForNewInstall() { - $queryStoreSetup = $this->getMock( 'Wikibase\QueryEngine\QueryStoreSetup' ); + $queryStoreInstaller = $this->getMock( 'Wikibase\QueryEngine\QueryStoreInstaller' ); + $queryStoreUpdater = $this->getMock( 'Wikibase\QueryEngine\QueryStoreUpdater' ); - $queryStoreSetup->expects( $this->once() ) - ->method( 'update' ); - - $queryStoreSetup->expects( $this->once() ) + $queryStoreInstaller->expects( $this->once() ) ->method( 'install' ); + + $queryStoreUpdater->expects( $this->once() ) + ->method( 'update' ); $dbUpdater = $this->getMockBuilder( 'MysqlUpdater' ) ->disableOriginalConstructor()->getMock(); @@ -34,18 +35,19 @@ $dbUpdater->expects( $this->exactly( 1 ) ) ->method( 'insertUpdateRow' ); - $updater = new ExtensionUpdater( $queryStoreSetup ); + $updater = new ExtensionUpdater( $queryStoreInstaller, $queryStoreUpdater ); $updater->run( $dbUpdater ); } public function testRunForExistingInstall() { - $queryStoreSetup = $this->getMock( 'Wikibase\QueryEngine\QueryStoreSetup' ); + $queryStoreInstaller = $this->getMock( 'Wikibase\QueryEngine\QueryStoreInstaller' ); + $queryStoreUpdater = $this->getMock( 'Wikibase\QueryEngine\QueryStoreUpdater' ); - $queryStoreSetup->expects( $this->once() ) - ->method( 'update' ); - - $queryStoreSetup->expects( $this->never() ) + $queryStoreInstaller->expects( $this->never() ) ->method( 'install' ); + + $queryStoreUpdater->expects( $this->once() ) + ->method( 'update' ); $dbUpdater = $this->getMockBuilder( 'MysqlUpdater' ) ->disableOriginalConstructor()->getMock(); @@ -57,7 +59,7 @@ $dbUpdater->expects( $this->never() ) ->method( 'insertUpdateRow' ); - $updater = new ExtensionUpdater( $queryStoreSetup ); + $updater = new ExtensionUpdater( $queryStoreInstaller, $queryStoreUpdater ); $updater->run( $dbUpdater ); } diff --git a/src/Wikibase/Query/DIC/Builders/ByPropertyValueEntityFinderBuilder.php b/src/Wikibase/Query/DIC/Builders/ByPropertyValueEntityFinderBuilder.php index 2308760..4fdf99c 100644 --- a/src/Wikibase/Query/DIC/Builders/ByPropertyValueEntityFinderBuilder.php +++ b/src/Wikibase/Query/DIC/Builders/ByPropertyValueEntityFinderBuilder.php @@ -2,11 +2,11 @@ namespace Wikibase\Query\DIC\Builders; -use DataValues\DataValueFactory; +use Wikibase\Database\QueryInterface\QueryInterface; use Wikibase\Query\ByPropertyValueEntityFinder; use Wikibase\Query\DIC\DependencyBuilder; use Wikibase\Query\DIC\DependencyManager; -use Wikibase\QueryEngine\QueryStore; +use Wikibase\QueryEngine\SQLStore\SQLStore; use Wikibase\Repo\WikibaseRepo; /** @@ -30,12 +30,17 @@ */ public function buildObject( DependencyManager $dependencyManager ) { /** - * @var QueryStore $queryStore + * @var SQLStore $queryStore */ - $queryStore = $dependencyManager->newObject( 'queryStore' ); + $queryStore = $dependencyManager->newObject( 'sqlStore' ); + + /** + * @var QueryInterface $queryInterface + */ + $queryInterface = $dependencyManager->newObject( 'slaveQueryInterface' ); return new ByPropertyValueEntityFinder( - $queryStore->getQueryEngine(), + $queryStore->newQueryEngine( $queryInterface ), $this->repo->getDataValueFactory(), $this->repo->getEntityIdParser(), $this->repo->getEntityIdFormatter() diff --git a/src/Wikibase/Query/DIC/Builders/DatabaseConnectionBuilder.php b/src/Wikibase/Query/DIC/Builders/DatabaseConnectionBuilder.php new file mode 100644 index 0000000..8b348de --- /dev/null +++ b/src/Wikibase/Query/DIC/Builders/DatabaseConnectionBuilder.php @@ -0,0 +1,36 @@ +<?php + +namespace Wikibase\Query\DIC\Builders; + +use Wikibase\Database\DBConnectionProvider; +use Wikibase\Database\LazyDBConnectionProvider; +use Wikibase\Query\DIC\DependencyBuilder; +use Wikibase\Query\DIC\DependencyManager; + +/** + * @licence GNU GPL v2+ + * @author Jeroen De Dauw < jeroended...@gmail.com > + */ +class DatabaseConnectionBuilder extends DependencyBuilder { + + protected $connectionId; + + /** + * @param int $connectionId ie DB_MASTER, DB_SLAVE + */ + public function __construct( $connectionId ) { + $this->connectionId = $connectionId; + } + + /** + * @see DependencyBuilder::buildObject + * + * @param DependencyManager $dependencyManager + * + * @return DBConnectionProvider + */ + public function buildObject( DependencyManager $dependencyManager ) { + return new LazyDBConnectionProvider( $this->connectionId ); + } + +} diff --git a/src/Wikibase/Query/DIC/Builders/ExtensionUpdaterBuilder.php b/src/Wikibase/Query/DIC/Builders/ExtensionUpdaterBuilder.php index f13bf92..757aceb 100644 --- a/src/Wikibase/Query/DIC/Builders/ExtensionUpdaterBuilder.php +++ b/src/Wikibase/Query/DIC/Builders/ExtensionUpdaterBuilder.php @@ -2,16 +2,36 @@ namespace Wikibase\Query\DIC\Builders; +use Wikibase\Database\DBConnectionProvider; +use Wikibase\Database\MediaWiki\MediaWikiSchemaModifierBuilder; +use Wikibase\Database\MediaWiki\MWTableBuilderBuilder; +use Wikibase\Database\MediaWiki\MWTableDefinitionReaderBuilder; +use Wikibase\Database\QueryInterface\QueryInterface; use Wikibase\Query\DIC\DependencyBuilder; use Wikibase\Query\DIC\DependencyManager; use Wikibase\Query\Setup\ExtensionUpdater; -use Wikibase\QueryEngine\QueryStore; +use Wikibase\QueryEngine\SQLStore\SQLStore; /** * @licence GNU GPL v2+ * @author Jeroen De Dauw < jeroended...@gmail.com > */ class ExtensionUpdaterBuilder extends DependencyBuilder { + + /** + * @var SQLStore + */ + protected $queryStore; + + /** + * @var DBConnectionProvider + */ + protected $connectionProvider; + + /** + * @var QueryInterface + */ + protected $queryInterface; /** * @see DependencyBuilder::buildObject @@ -21,11 +41,51 @@ * @return ExtensionUpdater */ public function buildObject( DependencyManager $dependencyManager ) { - /** - * @var QueryStore $queryStore - */ - $queryStore = $dependencyManager->newObject( 'queryStore' ); - return new ExtensionUpdater( $queryStore->newSetup() ); + $this->queryStore = $dependencyManager->newObject( 'sqlStore' ); + $this->connectionProvider = $dependencyManager->newObject( 'masterConnectionProvider' ); + $this->queryInterface = $dependencyManager->newObject( 'masterQueryInterface' ); + + return new ExtensionUpdater( + $this->newQueryStoreInstaller(), + $this->newQueryStoreUpdater() + ); + } + + protected function newQueryStoreInstaller() { + return $this->queryStore->newInstaller( + $this->newTableBuilder() + ); + } + + protected function newQueryStoreUpdater() { + return $this->queryStore->newUpdater( + $this->newTableBuilder(), + $this->newTableDefinitionReader(), + $this->newSchemaModifier() + ); + } + + protected function newTableBuilder() { + $tbBuilder = new MWTableBuilderBuilder(); + + return $tbBuilder->setConnection( $this->connectionProvider ) + ->getTableBuilder(); + } + + protected function newTableDefinitionReader() { + $drBuilder = new MWTableDefinitionReaderBuilder(); + + return $drBuilder->setConnection( $this->connectionProvider ) + ->setQueryInterface( $this->queryInterface ) + ->getTableDefinitionReader(); + } + + protected function newSchemaModifier() { + $smBuilder = new MediaWikiSchemaModifierBuilder(); + + return $smBuilder->setConnection( $this->connectionProvider ) + ->setQueryInterface( $this->queryInterface ) + ->getSchemaModifier(); } } diff --git a/src/Wikibase/Query/DIC/Builders/QueryInterfaceBuilder.php b/src/Wikibase/Query/DIC/Builders/QueryInterfaceBuilder.php index 18add69..7c1bdc0 100644 --- a/src/Wikibase/Query/DIC/Builders/QueryInterfaceBuilder.php +++ b/src/Wikibase/Query/DIC/Builders/QueryInterfaceBuilder.php @@ -14,16 +14,10 @@ */ class QueryInterfaceBuilder extends DependencyBuilder { - protected $connectionId; - protected $dbType; + protected $queryInterfaceBuilderKey; - /** - * @param int $connectionId ie DB_MASTER, DB_SLAVE - * @param string $dbType ie mysql, sqlite - */ - public function __construct( $connectionId, $dbType ) { - $this->connectionId = $connectionId; - $this->dbType = $dbType; + public function __construct( $queryInterfaceBuilderKey ) { + $this->queryInterfaceBuilderKey = $queryInterfaceBuilderKey; } /** @@ -34,11 +28,9 @@ * @return QueryInterface */ public function buildObject( DependencyManager $dependencyManager ) { - return new MediaWikiQueryInterface( $this->newConnectionProvider() ); - } - - protected function newConnectionProvider() { - return new LazyDBConnectionProvider( $this->connectionId ); + return new MediaWikiQueryInterface( + $dependencyManager->newObject( $this->queryInterfaceBuilderKey ) + ); } } diff --git a/src/Wikibase/Query/DIC/Builders/QueryStoreBuilder.php b/src/Wikibase/Query/DIC/Builders/QueryStoreBuilder.php deleted file mode 100644 index 6699e8d..0000000 --- a/src/Wikibase/Query/DIC/Builders/QueryStoreBuilder.php +++ /dev/null @@ -1,115 +0,0 @@ -<?php - -namespace Wikibase\Query\DIC\Builders; - -use Wikibase\Database\DBConnectionProvider; -use Wikibase\Database\LazyDBConnectionProvider; -use Wikibase\Database\MediaWiki\MediaWikiSchemaModifierBuilder; -use Wikibase\Database\MediaWiki\MWTableBuilderBuilder; -use Wikibase\Database\MediaWiki\MWTableDefinitionReaderBuilder; -use Wikibase\Database\QueryInterface\QueryInterface; -use Wikibase\Query\ByPropertyValueEntityFinder; -use Wikibase\Query\DIC\DependencyBuilder; -use Wikibase\Query\DIC\DependencyManager; -use Wikibase\Query\PropertyDataValueTypeFinder; -use Wikibase\QueryEngine\SQLStore\DataValueHandlers; -use Wikibase\QueryEngine\SQLStore\Store; -use Wikibase\QueryEngine\SQLStore\StoreConfig; -use Wikibase\Repo\WikibaseRepo; - -/** - * @licence GNU GPL v2+ - * @author Jeroen De Dauw < jeroended...@gmail.com > - */ -class QueryStoreBuilder extends DependencyBuilder { - - protected $connectionId; - protected $dbType; - - /** - * @var DBConnectionProvider - */ - protected $connectionProvider; - - /** - * @var QueryInterface - */ - protected $queryInterface; - - /** - * @param int $connectionId ie DB_MASTER, DB_SLAVE - * @param string $dbType ie mysql, sqlite - */ - public function __construct( $connectionId, $dbType ) { - $this->connectionId = $connectionId; - $this->dbType = $dbType; - } - - /** - * @see DependencyBuilder::buildObject - * - * @param DependencyManager $dependencyManager - * - * @return ByPropertyValueEntityFinder - */ - public function buildObject( DependencyManager $dependencyManager ) { - $this->connectionProvider = $this->newConnectionProvider(); - $this->queryInterface = $dependencyManager->newObject( 'slaveQueryInterface' ); - - return new Store( - $this->newStoreConfig(), - $this->queryInterface, - $this->newTableBuilder(), - $this->newTableDefinitionReader(), - $this->newSchemaModifier() - ); - } - - protected function newStoreConfig() { - // TODO: provide an extension mechanism for the DV handlers - $dvHandlers = new DataValueHandlers(); - - $config = new StoreConfig( - 'Wikibase Query store v0.1', - 'wbq_', - $dvHandlers->getHandlers() - ); - - $dvtLookup = new PropertyDataValueTypeFinder( - WikibaseRepo::getDefaultInstance()->getPropertyDataTypeLookup(), - WikibaseRepo::getDefaultInstance()->getDataTypeFactory() - ); - - $config->setPropertyDataValueTypeLookup( $dvtLookup ); - - return $config; - } - - protected function newConnectionProvider() { - return new LazyDBConnectionProvider( $this->connectionId ); - } - - protected function newTableBuilder() { - $tbBuilder = new MWTableBuilderBuilder(); - - return $tbBuilder->setConnection( $this->connectionProvider ) - ->getTableBuilder(); - } - - protected function newTableDefinitionReader() { - $drBuilder = new MWTableDefinitionReaderBuilder(); - - return $drBuilder->setConnection( $this->connectionProvider ) - ->setQueryInterface( $this->queryInterface ) - ->getTableDefinitionReader(); - } - - protected function newSchemaModifier() { - $smBuilder = new MediaWikiSchemaModifierBuilder(); - - return $smBuilder->setConnection( $this->connectionProvider ) - ->setQueryInterface( $this->queryInterface ) - ->getSchemaModifier(); - } - -} diff --git a/src/Wikibase/Query/DIC/Builders/QueryStoreWithDependenciesBuilder.php b/src/Wikibase/Query/DIC/Builders/QueryStoreWithDependenciesBuilder.php new file mode 100644 index 0000000..802afec --- /dev/null +++ b/src/Wikibase/Query/DIC/Builders/QueryStoreWithDependenciesBuilder.php @@ -0,0 +1,74 @@ +<?php + +namespace Wikibase\Query\DIC\Builders; + +use Wikibase\Database\DBConnectionProvider; +use Wikibase\Database\MediaWiki\MediaWikiSchemaModifierBuilder; +use Wikibase\Database\MediaWiki\MWTableBuilderBuilder; +use Wikibase\Database\MediaWiki\MWTableDefinitionReaderBuilder; +use Wikibase\Database\QueryInterface\QueryInterface; +use Wikibase\Query\ByPropertyValueEntityFinder; +use Wikibase\Query\DIC\DependencyBuilder; +use Wikibase\Query\DIC\DependencyManager; +use Wikibase\QueryEngine\SQLStore\SQLStoreWithDependencies; + +/** + * @licence GNU GPL v2+ + * @author Jeroen De Dauw < jeroended...@gmail.com > + */ +class QueryStoreWithDependenciesBuilder extends DependencyBuilder { + + /** + * @var DBConnectionProvider + */ + protected $connectionProvider; + + /** + * @var QueryInterface + */ + protected $queryInterface; + + /** + * @see DependencyBuilder::buildObject + * + * @param DependencyManager $dependencyManager + * + * @return ByPropertyValueEntityFinder + */ + public function buildObject( DependencyManager $dependencyManager ) { + $this->connectionProvider = $dependencyManager->newObject( 'masterConnectionProvider' ); + $this->queryInterface = $dependencyManager->newObject( 'masterQueryInterface' ); + + return new SQLStoreWithDependencies( + $dependencyManager->newObject( 'sqlStore' ), + $dependencyManager->newObject( 'masterQueryInterface' ), + $this->newTableBuilder(), + $this->newTableDefinitionReader(), + $this->newSchemaModifier() + ); + } + + protected function newTableBuilder() { + $tbBuilder = new MWTableBuilderBuilder(); + + return $tbBuilder->setConnection( $this->connectionProvider ) + ->getTableBuilder(); + } + + protected function newTableDefinitionReader() { + $drBuilder = new MWTableDefinitionReaderBuilder(); + + return $drBuilder->setConnection( $this->connectionProvider ) + ->setQueryInterface( $this->queryInterface ) + ->getTableDefinitionReader(); + } + + protected function newSchemaModifier() { + $smBuilder = new MediaWikiSchemaModifierBuilder(); + + return $smBuilder->setConnection( $this->connectionProvider ) + ->setQueryInterface( $this->queryInterface ) + ->getSchemaModifier(); + } + +} diff --git a/src/Wikibase/Query/DIC/Builders/SQLStoreBuilder.php b/src/Wikibase/Query/DIC/Builders/SQLStoreBuilder.php new file mode 100644 index 0000000..c6b835c --- /dev/null +++ b/src/Wikibase/Query/DIC/Builders/SQLStoreBuilder.php @@ -0,0 +1,76 @@ +<?php + +namespace Wikibase\Query\DIC\Builders; + +use Wikibase\Database\DBConnectionProvider; +use Wikibase\Database\LazyDBConnectionProvider; +use Wikibase\Database\MediaWiki\MediaWikiSchemaModifierBuilder; +use Wikibase\Database\MediaWiki\MWTableBuilderBuilder; +use Wikibase\Database\MediaWiki\MWTableDefinitionReaderBuilder; +use Wikibase\Database\QueryInterface\QueryInterface; +use Wikibase\Query\ByPropertyValueEntityFinder; +use Wikibase\Query\DIC\DependencyBuilder; +use Wikibase\Query\DIC\DependencyManager; +use Wikibase\Query\PropertyDataValueTypeFinder; +use Wikibase\QueryEngine\SQLStore\DataValueHandlers; +use Wikibase\QueryEngine\SQLStore\SQLStore; +use Wikibase\QueryEngine\SQLStore\StoreConfig; +use Wikibase\Repo\WikibaseRepo; + +/** + * @licence GNU GPL v2+ + * @author Jeroen De Dauw < jeroended...@gmail.com > + */ +class SQLStoreBuilder extends DependencyBuilder { + + protected $storeName; + protected $tablePrefix; + + /** + * @var QueryInterface + */ + protected $queryInterface; + + /** + * @param string $storeName Human readable name for the store + * @param string $tablePrefix Table prefix to be used for the store + */ + public function __construct( $storeName, $tablePrefix ) { + $this->storeName = $storeName; + $this->tablePrefix = $tablePrefix; + } + + /** + * @see DependencyBuilder::buildObject + * + * @param DependencyManager $dependencyManager + * + * @return ByPropertyValueEntityFinder + */ + public function buildObject( DependencyManager $dependencyManager ) { + $this->queryInterface = $dependencyManager->newObject( 'slaveQueryInterface' ); + + return new SQLStore( $this->newStoreConfig() ); + } + + protected function newStoreConfig() { + // TODO: provide an extension mechanism for the DV handlers + $dvHandlers = new DataValueHandlers(); + + $config = new StoreConfig( + $this->storeName, + $this->tablePrefix, + $dvHandlers->getHandlers() + ); + + $dvtLookup = new PropertyDataValueTypeFinder( + WikibaseRepo::getDefaultInstance()->getPropertyDataTypeLookup(), + WikibaseRepo::getDefaultInstance()->getDataTypeFactory() + ); + + $config->setPropertyDataValueTypeLookup( $dvtLookup ); + + return $config; + } + +} diff --git a/src/Wikibase/Query/DIC/WikibaseQuery.php b/src/Wikibase/Query/DIC/WikibaseQuery.php index 40cec8b..35eed20 100644 --- a/src/Wikibase/Query/DIC/WikibaseQuery.php +++ b/src/Wikibase/Query/DIC/WikibaseQuery.php @@ -4,7 +4,7 @@ use Wikibase\Query\ByPropertyValueEntityFinder; use Wikibase\Query\Setup\ExtensionUpdater; -use Wikibase\QueryEngine\QueryStore; +use Wikibase\QueryEngine\QueryStoreWithDependencies; /** * This class exposes methods to retrieve each type of generally accessible object @@ -37,17 +37,20 @@ } /** - * @return QueryStore - */ - public function getQueryStore() { - return $this->dependencyManager->newObject( 'queryStore' ); - } - - /** * @return ExtensionUpdater */ public function getExtensionUpdater() { return $this->dependencyManager->newObject( 'extensionUpdater' ); } + /** + * This initializes all dependencies of the QueryStore. + * Do not use in production code if only part of the QueryStore is needed. + * + * @return QueryStoreWithDependencies + */ + public function getQueryStoreWithDependencies() { + return $this->dependencyManager->newObject( 'queryStoreWithDependencies' ); + } + } \ No newline at end of file diff --git a/src/Wikibase/Query/DIC/WikibaseQueryBuilder.php b/src/Wikibase/Query/DIC/WikibaseQueryBuilder.php index de65a72..92bf11b 100644 --- a/src/Wikibase/Query/DIC/WikibaseQueryBuilder.php +++ b/src/Wikibase/Query/DIC/WikibaseQueryBuilder.php @@ -3,9 +3,11 @@ namespace Wikibase\Query\DIC; use Wikibase\Query\DIC\Builders\ByPropertyValueEntityFinderBuilder; +use Wikibase\Query\DIC\Builders\DatabaseConnectionBuilder; use Wikibase\Query\DIC\Builders\ExtensionUpdaterBuilder; use Wikibase\Query\DIC\Builders\QueryInterfaceBuilder; -use Wikibase\Query\DIC\Builders\QueryStoreBuilder; +use Wikibase\Query\DIC\Builders\QueryStoreWithDependenciesBuilder; +use Wikibase\Query\DIC\Builders\SQLStoreBuilder; use Wikibase\Repo\WikibaseRepo; /** @@ -27,25 +29,61 @@ ) ); + if ( defined( 'MW_PHPUNIT_TEST' ) ) { + $dependencyManager->registerBuilder( + 'sqlStore', + new SQLStoreBuilder( + 'WikibaseQuery test store', + 'test_wbq_' + ) + ); + } + else { + $dependencyManager->registerBuilder( + 'sqlStore', + new SQLStoreBuilder( + 'WikibaseQuery SQLStore 0.1 alpha', + 'wbq_' + ) + ); + } + $dependencyManager->registerBuilder( - 'queryStore', - new QueryStoreBuilder( - DB_SLAVE, - $GLOBALS['wgDBtype'] - ) + 'extensionUpdater', + new ExtensionUpdaterBuilder() + ); + + $dependencyManager->registerBuilder( + 'queryStoreWithDependencies', + new QueryStoreWithDependenciesBuilder() ); $dependencyManager->registerBuilder( 'slaveQueryInterface', new QueryInterfaceBuilder( - DB_SLAVE, - $GLOBALS['wgDBtype'] + 'slaveConnectionProvider' ) ); $dependencyManager->registerBuilder( - 'extensionUpdater', - new ExtensionUpdaterBuilder() + 'masterQueryInterface', + new QueryInterfaceBuilder( + 'masterConnectionProvider' + ) + ); + + $dependencyManager->registerBuilder( + 'slaveConnectionProvider', + new DatabaseConnectionBuilder( + DB_SLAVE + ) + ); + + $dependencyManager->registerBuilder( + 'masterConnectionProvider', + new DatabaseConnectionBuilder( + DB_MASTER + ) ); return new WikibaseQuery( $dependencyManager ); diff --git a/src/Wikibase/Query/Setup/ExtensionUpdater.php b/src/Wikibase/Query/Setup/ExtensionUpdater.php index 00af496..03a63a3 100644 --- a/src/Wikibase/Query/Setup/ExtensionUpdater.php +++ b/src/Wikibase/Query/Setup/ExtensionUpdater.php @@ -3,7 +3,8 @@ namespace Wikibase\Query\Setup; use DatabaseUpdater; -use Wikibase\QueryEngine\QueryStoreSetup; +use Wikibase\QueryEngine\QueryStoreInstaller; +use Wikibase\QueryEngine\QueryStoreUpdater; /** * @licence GNU GPL v2+ @@ -11,18 +12,17 @@ */ class ExtensionUpdater { - /** - * @var QueryStoreSetup - */ - protected $queryStoreSetup; + protected $queryStoreInstaller; + protected $queryStoreUpdater; /** * @var DatabaseUpdater */ protected $updater; - public function __construct( QueryStoreSetup $queryStoreSetup ) { - $this->queryStoreSetup = $queryStoreSetup; + public function __construct( QueryStoreInstaller $installer, QueryStoreUpdater $updater ) { + $this->queryStoreInstaller = $installer; + $this->queryStoreUpdater = $updater; } public function run( DatabaseUpdater $updater ) { @@ -43,11 +43,15 @@ } protected function installStore() { - $this->queryStoreSetup->install(); + $this->queryStoreInstaller->install(); } protected function updateStore() { - $this->queryStoreSetup->update(); + $this->queryStoreUpdater->update(); + } + + protected function reportMessage( $message ) { + $this->updater->output( $message ); } } diff --git a/src/Wikibase/Query/Setup/HookSetup.php b/src/Wikibase/Query/Setup/HookSetup.php index 41518e1..1fc377e 100644 --- a/src/Wikibase/Query/Setup/HookSetup.php +++ b/src/Wikibase/Query/Setup/HookSetup.php @@ -50,7 +50,7 @@ protected function registerExtensionSchemaUpdates() { // https://www.mediawiki.org/wiki/Manual:Hooks/LoadExtensionSchemaUpdates $this->hooks['LoadExtensionSchemaUpdates'][] = function( \DatabaseUpdater $updater ) { - // TODO: ExtensionAccess::getWikibaseQuery()-> + ExtensionAccess::getWikibaseQuery()->getExtensionUpdater()->run( $updater ); }; } -- To view, visit https://gerrit.wikimedia.org/r/91887 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I19446a08c8919ec3fa2f5b0523ffe07f2c880eb7 Gerrit-PatchSet: 3 Gerrit-Project: mediawiki/extensions/WikibaseQuery Gerrit-Branch: master Gerrit-Owner: Jeroen De Dauw <jeroended...@gmail.com> Gerrit-Reviewer: Addshore <addshorew...@gmail.com> Gerrit-Reviewer: Daniel Kinzler <daniel.kinz...@wikimedia.de> Gerrit-Reviewer: Daniel Werner <daniel.wer...@wikimedia.de> Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits