mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Echo
synced 2024-09-23 10:22:05 +00:00
Merge "Migrate to IDatabase::newInsertQueryBuilder/newUpdateQueryBuilder"
This commit is contained in:
commit
71ec391deb
|
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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 );
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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' )
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue