api: Switch to use IConnectionProvider

As much as possible

Bug: T330641
Change-Id: Icb943d6d65b210760ba8966419327c9603e768e0
This commit is contained in:
Amir Sarabadani 2023-04-24 12:45:42 +02:00
parent 078dce3b5a
commit d7c8a0648f
10 changed files with 37 additions and 37 deletions

View file

@ -39,7 +39,6 @@ use Wikimedia\ParamValidator\ParamValidator;
use Wikimedia\ParamValidator\TypeDef\EnumDef;
use Wikimedia\ParamValidator\TypeDef\IntegerDef;
use Wikimedia\ParamValidator\TypeDef\StringDef;
use Wikimedia\Rdbms\IDatabase;
use Wikimedia\Timestamp\TimestampException;
/**
@ -655,11 +654,13 @@ abstract class ApiBase extends ContextSource {
/**
* Gets a default replica DB connection object
* @stable to override
* @return IDatabase
* @return \Wikimedia\Rdbms\IReadableDatabase
*/
protected function getDB() {
if ( !isset( $this->mReplicaDB ) ) {
$this->mReplicaDB = wfGetDB( DB_REPLICA, 'api' );
$this->mReplicaDB = MediaWikiServices::getInstance()
->getDBLoadBalancerFactory()
->getReplicaDatabase( false, 'api' );
}
return $this->mReplicaDB;

View file

@ -248,7 +248,7 @@ class ApiMain extends ApiBase {
'setnotificationtimestamp' => [
'class' => ApiSetNotificationTimestamp::class,
'services' => [
'DBLoadBalancer',
'DBLoadBalancerFactory',
'RevisionStore',
'WatchedItemStore',
]
@ -403,7 +403,7 @@ class ApiMain extends ApiBase {
'tag' => [
'class' => ApiTag::class,
'services' => [
'DBLoadBalancer',
'DBLoadBalancerFactory',
'RevisionStore',
]
],
@ -416,7 +416,7 @@ class ApiMain extends ApiBase {
'setpagelanguage' => [
'class' => ApiSetPageLanguage::class,
'services' => [
'DBLoadBalancer',
'DBLoadBalancerFactory',
'LanguageNameUtils',
]
],

View file

@ -1642,7 +1642,7 @@ class ApiPageSet extends ApiBase {
/**
* Get the database connection (read-only)
* @return IDatabase
* @return \Wikimedia\Rdbms\IReadableDatabase
*/
protected function getDB() {
return $this->mDbSource->getDB();

View file

@ -26,7 +26,7 @@
use MediaWiki\Revision\RevisionStore;
use MediaWiki\Title\Title;
use Wikimedia\ParamValidator\ParamValidator;
use Wikimedia\Rdbms\ILoadBalancer;
use Wikimedia\Rdbms\IConnectionProvider;
/**
* API interface for setting the wl_notificationtimestamp field
@ -39,8 +39,8 @@ class ApiSetNotificationTimestamp extends ApiBase {
/** @var RevisionStore */
private $revisionStore;
/** @var ILoadBalancer */
private $loadBalancer;
/** @var IConnectionProvider */
private $dbProvider;
/** @var WatchedItemStoreInterface */
private $watchedItemStore;
@ -48,20 +48,20 @@ class ApiSetNotificationTimestamp extends ApiBase {
/**
* @param ApiMain $main
* @param string $action
* @param ILoadBalancer $loadBalancer
* @param IConnectionProvider $dbProvider
* @param RevisionStore $revisionStore
* @param WatchedItemStoreInterface $watchedItemStore
*/
public function __construct(
ApiMain $main,
$action,
ILoadBalancer $loadBalancer,
IConnectionProvider $dbProvider,
RevisionStore $revisionStore,
WatchedItemStoreInterface $watchedItemStore
) {
parent::__construct( $main, $action );
$this->loadBalancer = $loadBalancer;
$this->dbProvider = $dbProvider;
$this->revisionStore = $revisionStore;
$this->watchedItemStore = $watchedItemStore;
}
@ -92,7 +92,7 @@ class ApiSetNotificationTimestamp extends ApiBase {
);
}
$dbw = $this->loadBalancer->getConnectionRef( DB_PRIMARY );
$dbw = $this->dbProvider->getPrimaryDatabase();
$timestamp = null;
if ( isset( $params['timestamp'] ) ) {

View file

@ -23,7 +23,7 @@
use MediaWiki\Languages\LanguageNameUtils;
use MediaWiki\MainConfigNames;
use Wikimedia\ParamValidator\ParamValidator;
use Wikimedia\Rdbms\ILoadBalancer;
use Wikimedia\Rdbms\IConnectionProvider;
/**
* API module that facilitates changing the language of a page.
@ -34,8 +34,8 @@ use Wikimedia\Rdbms\ILoadBalancer;
*/
class ApiSetPageLanguage extends ApiBase {
/** @var ILoadBalancer */
private $loadBalancer;
/** @var IConnectionProvider */
private $dbProvider;
/** @var LanguageNameUtils */
private $languageNameUtils;
@ -43,17 +43,17 @@ class ApiSetPageLanguage extends ApiBase {
/**
* @param ApiMain $mainModule
* @param string $moduleName
* @param ILoadBalancer $loadBalancer
* @param IConnectionProvider $dbProvider
* @param LanguageNameUtils $languageNameUtils
*/
public function __construct(
ApiMain $mainModule,
$moduleName,
ILoadBalancer $loadBalancer,
IConnectionProvider $dbProvider,
LanguageNameUtils $languageNameUtils
) {
parent::__construct( $mainModule, $moduleName );
$this->loadBalancer = $loadBalancer;
$this->dbProvider = $dbProvider;
$this->languageNameUtils = $languageNameUtils;
}
@ -110,7 +110,7 @@ class ApiSetPageLanguage extends ApiBase {
$params['lang'],
$params['reason'] ?? '',
$params['tags'] ?: [],
$this->loadBalancer->getConnectionRef( ILoadBalancer::DB_PRIMARY )
$this->dbProvider->getPrimaryDatabase()
);
if ( !$status->isOK() ) {

View file

@ -21,8 +21,8 @@
use MediaWiki\Revision\RevisionStore;
use Wikimedia\ParamValidator\ParamValidator;
use Wikimedia\Rdbms\IConnectionProvider;
use Wikimedia\Rdbms\IDatabase;
use Wikimedia\Rdbms\ILoadBalancer;
/**
* @ingroup API
@ -41,17 +41,17 @@ class ApiTag extends ApiBase {
/**
* @param ApiMain $main
* @param string $action
* @param ILoadBalancer $loadBalancer
* @param IConnectionProvider $dbProvider
* @param RevisionStore $revisionStore
*/
public function __construct(
ApiMain $main,
$action,
ILoadBalancer $loadBalancer,
IConnectionProvider $dbProvider,
RevisionStore $revisionStore
) {
parent::__construct( $main, $action );
$this->dbr = $loadBalancer->getConnectionRef( DB_REPLICA );
$this->dbr = $dbProvider->getReplicaDatabase();
$this->revisionStore = $revisionStore;
}

View file

@ -2,7 +2,7 @@
namespace MediaWiki\Hook;
use Wikimedia\Rdbms\IDatabase;
use Wikimedia\Rdbms\IReadableDatabase;
/**
* This is a hook handler interface, see docs/Hooks.md.
@ -17,15 +17,15 @@ interface ModifyExportQueryHook {
*
* @since 1.35
*
* @param IDatabase $db Database object to be queried
* @param IReadableDatabase $db Database object to be queried
* @param array &$tables Tables in the query
* @param string $cond An SQL fragment included in the WHERE clause which is used to filter
* the results, for example to a specific page. Since 1.31, modification of this
* parameter has no effect. Since 1.35, you can use $conds instead to modify the
* array of conditions passed to IDatabase::select().
* array of conditions passed to IReadableDatabase::select().
* @param array &$opts Options for the query
* @param array &$join_conds Join conditions for the query
* @param array &$conds The array of conditions to be passed to IDatabase::select(). Can be
* @param array &$conds The array of conditions to be passed to IReadableDatabase::select(). Can be
* modified. Includes the value of $cond.
* @return bool|void True or no return value to continue or false to abort
*/

View file

@ -36,7 +36,7 @@ use MediaWiki\Page\PageIdentity;
use MediaWiki\Revision\RevisionAccessException;
use MediaWiki\Revision\RevisionRecord;
use MediaWiki\Revision\RevisionStore;
use Wikimedia\Rdbms\IDatabase;
use Wikimedia\Rdbms\IReadableDatabase;
use Wikimedia\Rdbms\IResultWrapper;
/**
@ -75,7 +75,7 @@ class WikiExporter {
/** @var XmlDumpWriter */
private $writer;
/** @var IDatabase */
/** @var IReadableDatabase */
protected $db;
/** @var array|int */
@ -106,7 +106,7 @@ class WikiExporter {
}
/**
* @param IDatabase $db
* @param IReadableDatabase $db
* @param CommentStore $commentStore
* @param HookContainer $hookContainer
* @param RevisionStore $revisionStore

View file

@ -25,7 +25,7 @@ use MediaWiki\HookContainer\HookContainer;
use MediaWiki\Revision\RevisionStore;
use TitleParser;
use WikiExporter;
use Wikimedia\Rdbms\IDatabase;
use Wikimedia\Rdbms\IReadableDatabase;
/**
* Factory service for WikiExporter instances.
@ -65,7 +65,7 @@ class WikiExporterFactory {
}
/**
* @param IDatabase $db
* @param IReadableDatabase $db
* @param int|array $history
* @param int $text
* @param null|array $limitNamespaces
@ -73,7 +73,7 @@ class WikiExporterFactory {
* @return WikiExporter
*/
public function getWikiExporter(
IDatabase $db,
IReadableDatabase $db,
$history = WikiExporter::CURRENT,
$text = WikiExporter::TEXT,
$limitNamespaces = null

View file

@ -31,7 +31,6 @@ use MediaWiki\MainConfigNames;
use MediaWiki\MediaWikiServices;
use MediaWiki\Page\PageReference;
use MediaWiki\Permissions\Authority;
use Wikimedia\Rdbms\IDatabase;
class LogEventsList extends ContextSource {
public const NO_ACTION_LINK = 1;
@ -807,7 +806,7 @@ class LogEventsList extends ContextSource {
/**
* SQL clause to skip forbidden log types for this user
*
* @param IDatabase $db
* @param \Wikimedia\Rdbms\IReadableDatabase $db
* @param string $audience Public/user
* @param Authority|null $performer User to check, required when audience isn't public
* @return string|false String on success, false on failure.