Merge "Migrate to IDatabase::newInsertQueryBuilder/newUpdateQueryBuilder"

This commit is contained in:
jenkins-bot 2024-04-14 18:00:20 +00:00 committed by Gerrit Code Review
commit 71ec391deb
11 changed files with 90 additions and 55 deletions

View file

@ -396,12 +396,12 @@ class EmailBatch {
'eeb_event_hash' => $hash
];
$dbw->insert(
'echo_email_batch',
$row,
__METHOD__,
[ 'IGNORE' ]
);
$dbw->newInsertQueryBuilder()
->insertInto( 'echo_email_batch' )
->ignore()
->row( $row )
->caller( __METHOD__ )
->execute();
}
/**

View file

@ -78,16 +78,17 @@ class UserNotificationGateway {
foreach (
array_chunk( $eventIDs, $this->config->get( 'UpdateRowsPerQuery' ) ) as $batch
) {
$success = $dbw->update(
self::$notificationTable,
[ 'notification_read_timestamp' => $dbw->timestamp( wfTimestampNow() ) ],
[
$dbw->newUpdateQueryBuilder()
->update( self::$notificationTable )
->set( [ 'notification_read_timestamp' => $dbw->timestamp( wfTimestampNow() ) ] )
->where( [
'notification_user' => $this->user->getId(),
'notification_event' => $batch,
'notification_read_timestamp' => null,
],
__METHOD__
) && $success;
] )
->caller( __METHOD__ )
->execute();
$success = $dbw->affectedRows() && $success;
}
return $success;
@ -113,16 +114,17 @@ class UserNotificationGateway {
foreach (
array_chunk( $eventIDs, $this->config->get( 'UpdateRowsPerQuery' ) ) as $batch
) {
$success = $dbw->update(
self::$notificationTable,
[ 'notification_read_timestamp' => null ],
[
$dbw->newUpdateQueryBuilder()
->update( self::$notificationTable )
->set( [ 'notification_read_timestamp' => null ] )
->where( [
'notification_user' => $this->user->getId(),
'notification_event' => $batch,
'notification_read_timestamp IS NOT NULL'
],
__METHOD__
) && $success;
$dbw->expr( 'notification_read_timestamp', '!=', null ),
] )
->caller( __METHOD__ )
->execute();
$success = $dbw->affectedRows() && $success;
}
return $success;
}
@ -138,15 +140,15 @@ class UserNotificationGateway {
return false;
}
$dbw->update(
self::$notificationTable,
[ 'notification_read_timestamp' => $dbw->timestamp( wfTimestampNow() ) ],
[
$dbw->newUpdateQueryBuilder()
->update( self::$notificationTable )
->set( [ 'notification_read_timestamp' => $dbw->timestamp( wfTimestampNow() ) ] )
->where( [
'notification_user' => $this->user->getId(),
'notification_read_timestamp' => null,
],
__METHOD__
);
] )
->caller( __METHOD__ )
->execute();
return true;
}

View file

@ -23,7 +23,11 @@ class EventMapper extends AbstractMapper {
$row = $event->toDbArray();
$dbw->insert( 'echo_event', $row, __METHOD__ );
$dbw->newInsertQueryBuilder()
->insertInto( 'echo_event' )
->row( $row )
->caller( __METHOD__ )
->execute();
$id = $dbw->insertId();
@ -66,17 +70,17 @@ class EventMapper extends AbstractMapper {
$selectDeleted = $deleted ? 0 : 1;
$setDeleted = $deleted ? 1 : 0;
$dbw->update(
'echo_event',
[
$dbw->newUpdateQueryBuilder()
->update( 'echo_event' )
->set( [
'event_deleted' => $setDeleted,
],
[
] )
->where( [
'event_deleted' => $selectDeleted,
'event_id' => $eventIds,
],
__METHOD__
);
] )
->caller( __METHOD__ )
->execute();
}
/**

View file

@ -37,7 +37,11 @@ class NotificationMapper extends AbstractMapper {
$dbw->timestamp( $row['notification_timestamp'] );
$row['notification_read_timestamp'] =
$dbw->timestampOrNull( $row['notification_read_timestamp'] );
$dbw->insert( 'echo_notification', $row, $fname );
$dbw->newInsertQueryBuilder()
->insertInto( 'echo_notification' )
->row( $row )
->caller( $fname )
->execute();
foreach ( $listeners as $listener ) {
$dbw->onTransactionCommitOrIdle( $listener, $fname );
}

View file

@ -29,7 +29,11 @@ class TargetPageMapper extends AbstractMapper {
$row = $targetPage->toDbArray();
$dbw->insert( 'echo_target_page', $row, __METHOD__ );
$dbw->newInsertQueryBuilder()
->insertInto( 'echo_target_page' )
->row( $row )
->caller( __METHOD__ )
->execute();
return true;
}

View file

@ -69,9 +69,10 @@ class SubscriptionManager extends AbstractMapper {
$this->delete( [ $oldest->getToken() ], $centralId );
}
$topicId = $topic ? $this->pushTopicStore->acquireId( $topic ) : null;
$this->dbw->insert(
'echo_push_subscription',
[
$this->dbw->newInsertQueryBuilder()
->insertInto( 'echo_push_subscription' )
->ignore()
->row( [
'eps_user' => $centralId,
'eps_provider' => $this->pushProviderStore->acquireId( $provider ),
'eps_token' => $token,
@ -79,10 +80,9 @@ class SubscriptionManager extends AbstractMapper {
'eps_data' => null,
'eps_topic' => $topicId,
'eps_updated' => $this->dbw->timestamp()
],
__METHOD__,
[ 'IGNORE' ]
);
] )
->caller( __METHOD__ )
->execute();
return (bool)$this->dbw->affectedRows();
}

View file

@ -73,17 +73,17 @@ class EchoUpdatePerUserBlacklist extends LoggedUpdateMaintenance {
$user = User::newFromId( $row->up_user );
$ids = $centralIdLookup->centralIdsFromNames( $names, $user );
$dbw->update(
'user_properties',
[
$dbw->newUpdateQueryBuilder()
->update( 'user_properties' )
->set( [
'up_value' => implode( "\n", $ids ),
],
[
] )
->where( [
'up_user' => $row->up_user,
'up_property' => 'echo-notifications-blacklist',
],
__METHOD__
);
] )
->caller( __METHOD__ )
->execute();
$processed += $dbw->affectedRows();
$this->waitForReplication();
}

View file

@ -4,6 +4,7 @@ use MediaWiki\Extension\Notifications\DbFactory;
use MediaWiki\Extension\Notifications\Mapper\EventMapper;
use MediaWiki\Extension\Notifications\Model\Event;
use Wikimedia\Rdbms\IDatabase;
use Wikimedia\Rdbms\InsertQueryBuilder;
/**
* @group Database
@ -114,6 +115,10 @@ class EventMapperTest extends MediaWikiIntegrationTestCase {
->willReturn( $dbResult['select'] );
$db->method( 'selectRow' )
->willReturn( $dbResult['selectRow'] );
$db->method( 'newInsertQueryBuilder' )
->willReturnCallback( static function () use ( $db ) {
return new InsertQueryBuilder( $db );
} );
return $db;
}

View file

@ -28,7 +28,11 @@ class UserLocatorTest extends MediaWikiIntegrationTestCase {
];
}
$this->getDb()->insert( 'watchlist', $rows, __METHOD__ );
$this->getDb()->newInsertQueryBuilder()
->insertInto( 'watchlist' )
->rows( $rows )
->caller( __METHOD__ )
->execute();
$event = $this->createMock( Event::class );
$event->method( 'getTitle' )

View file

@ -5,6 +5,7 @@ use MediaWiki\Extension\Notifications\DbFactory;
use MediaWiki\Extension\Notifications\Gateway\UserNotificationGateway;
use MediaWiki\User\User;
use Wikimedia\Rdbms\IDatabase;
use Wikimedia\Rdbms\UpdateQueryBuilder;
/**
* @covers \MediaWiki\Extension\Notifications\Gateway\UserNotificationGateway
@ -155,6 +156,8 @@ class UserNotificationGatewayTest extends MediaWikiUnitTestCase {
'selectRowCount' => '',
];
$db = $this->createMock( IDatabase::class );
$db->method( 'affectedRows' )
->willReturn( $dbResult['update'] ? 1 : 0 );
$db->method( 'update' )
->willReturn( $dbResult['update'] );
$db->method( 'select' )
@ -163,6 +166,10 @@ class UserNotificationGatewayTest extends MediaWikiUnitTestCase {
->willReturn( $dbResult['selectRow'] );
$db->method( 'selectRowCount' )
->willReturn( $dbResult['selectRowCount'] );
$db->method( 'newUpdateQueryBuilder' )
->willReturnCallback( static function () use ( $db ) {
return new UpdateQueryBuilder( $db );
} );
return $db;
}

View file

@ -4,6 +4,7 @@ use MediaWiki\Extension\Notifications\DbFactory;
use MediaWiki\Extension\Notifications\Mapper\TargetPageMapper;
use MediaWiki\Extension\Notifications\Model\TargetPage;
use Wikimedia\Rdbms\IDatabase;
use Wikimedia\Rdbms\InsertQueryBuilder;
/**
* @covers \MediaWiki\Extension\Notifications\Mapper\TargetPageMapper
@ -84,6 +85,10 @@ class TargetPageMapperTest extends MediaWikiUnitTestCase {
->willReturn( $dbResult['select'] );
$db->method( 'delete' )
->willReturn( $dbResult['delete'] );
$db->method( 'newInsertQueryBuilder' )
->willReturnCallback( static function () use ( $db ) {
return new InsertQueryBuilder( $db );
} );
return $db;
}