Replace use of select or selectRow with QueryBuilder

* All database methods using old access methods converted to use
   queryBuilder except row counters

Bug: T312434
Change-Id: I8796adf63179c4505fbb76ab6fd71cf3775c9b89
This commit is contained in:
sbailey 2023-03-07 15:07:08 -08:00 committed by Ladsgroup
parent eea0d24d03
commit bef1042e69

View file

@ -26,6 +26,7 @@ use MediaWiki\MediaWikiServices;
use stdClass;
use WikiMap;
use Wikimedia\Rdbms\DBConnRef;
use Wikimedia\Rdbms\IReadableDatabase;
use Wikimedia\Rdbms\SelectQueryBuilder;
/**
@ -86,6 +87,13 @@ class Database {
return MediaWikiServices::getInstance()->getDBLoadBalancer()->getConnectionRef( $mode );
}
/**
* @return IReadableDatabase
*/
public static function getReplicaDBConnection(): IReadableDatabase {
return MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->getReplicaDatabase();
}
/**
* Get a specific LintError by id
*
@ -93,12 +101,12 @@ class Database {
* @return bool|LintError
*/
public function getFromId( $id ) {
$row = self::getDBConnectionRef( DB_REPLICA )->selectRow(
'linter',
[ 'linter_cat', 'linter_params', 'linter_start', 'linter_end' ],
[ 'linter_id' => $id, 'linter_page' => $this->pageId ],
__METHOD__
);
$row = self::getReplicaDBConnection()->newSelectQueryBuilder()
->select( [ 'linter_cat', 'linter_params', 'linter_start', 'linter_end' ] )
->from( 'linter' )
->where( [ 'linter_id' => $id, 'linter_page' => $this->pageId ] )
->caller( __METHOD__ )
->fetchRow();
if ( $row ) {
$row->linter_id = $id;
@ -139,15 +147,13 @@ class Database {
* @return LintError[]
*/
public function getForPage() {
$rows = self::getDBConnectionRef( DB_REPLICA )->select(
'linter',
[
'linter_id', 'linter_cat', 'linter_start',
'linter_end', 'linter_params'
],
[ 'linter_page' => $this->pageId ],
__METHOD__
);
$rows = self::getReplicaDBConnection()->newSelectQueryBuilder()
->select( [ 'linter_id', 'linter_cat', 'linter_start', 'linter_end', 'linter_params' ] )
->from( 'linter' )
->where( [ 'linter_page' => $this->pageId ] )
->caller( __METHOD__ )
->fetchResultSet();
$result = [];
foreach ( $rows as $row ) {
$error = self::makeLintError( $row );
@ -346,13 +352,13 @@ class Database {
* @return int[]
*/
private function getTotalsAccurate( $conds = [] ) {
$rows = self::getDBConnectionRef( DB_REPLICA )->select(
'linter',
[ 'linter_cat', 'COUNT(*) AS count' ],
$conds,
__METHOD__,
[ 'GROUP BY' => 'linter_cat' ]
);
$rows = self::getReplicaDBConnection()->newSelectQueryBuilder()
->select( [ 'linter_cat', 'COUNT(*) AS count' ] )
->from( 'linter' )
->where( $conds )
->caller( __METHOD__ )
->groupBy( 'linter_cat' )
->fetchResultSet();
// Initialize zero values
$ret = array_fill_keys( $this->categoryManager->getVisibleCategories(), 0 );