mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Echo
synced 2024-09-23 10:22:05 +00:00
Migrate to IDatabase::newDeleteQueryBuilder
Change-Id: I516c179df464be68352809873dbff44dc3c642f1
This commit is contained in:
parent
ae71de9eff
commit
d2eb46e7b9
|
@ -310,10 +310,14 @@ class EmailBatch {
|
|||
foreach ( $batch as $row ) {
|
||||
$eventIds[] = $row->eeb_event_id;
|
||||
}
|
||||
$dbw->delete( 'echo_email_batch', [
|
||||
'eeb_user_id' => $this->mUser->getId(),
|
||||
'eeb_event_id' => $eventIds
|
||||
], __METHOD__ );
|
||||
$dbw->newDeleteQueryBuilder()
|
||||
->deleteFrom( 'echo_email_batch' )
|
||||
->where( [
|
||||
'eeb_user_id' => $this->mUser->getId(),
|
||||
'eeb_event_id' => $eventIds
|
||||
] )
|
||||
->caller( __METHOD__ )
|
||||
->execute();
|
||||
|
||||
// Find out which events are now orphaned, i.e. no longer referenced in echo_email_batch
|
||||
// (besides the rows we just deleted) or in echo_notification, and delete them
|
||||
|
|
|
@ -232,8 +232,16 @@ class EventMapper extends AbstractMapper {
|
|||
]
|
||||
);
|
||||
if ( $orphanedEventIds ) {
|
||||
$dbw->delete( 'echo_event', [ 'event_id' => $orphanedEventIds ], __METHOD__ );
|
||||
$dbw->delete( 'echo_target_page', [ 'etp_event' => $orphanedEventIds ], __METHOD__ );
|
||||
$dbw->newDeleteQueryBuilder()
|
||||
->deleteFrom( 'echo_event' )
|
||||
->where( [ 'event_id' => $orphanedEventIds ] )
|
||||
->caller( __METHOD__ )
|
||||
->execute();
|
||||
$dbw->newDeleteQueryBuilder()
|
||||
->deleteFrom( 'echo_target_page' )
|
||||
->where( [ 'etp_event' => $orphanedEventIds ] )
|
||||
->caller( __METHOD__ )
|
||||
->execute();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -391,14 +391,14 @@ class NotificationMapper extends AbstractMapper {
|
|||
foreach ( $batch as $row ) {
|
||||
$eventIds[] = $row->notification_event;
|
||||
}
|
||||
$dbw->delete(
|
||||
'echo_notification',
|
||||
[
|
||||
$dbw->newDeleteQueryBuilder()
|
||||
->deleteFrom( 'echo_notification' )
|
||||
->where( [
|
||||
'notification_user' => $userId,
|
||||
'notification_event' => $eventIds,
|
||||
],
|
||||
__METHOD__
|
||||
);
|
||||
] )
|
||||
->caller( __METHOD__ )
|
||||
->execute();
|
||||
|
||||
// Find out which events are now orphaned, i.e. no longer referenced in echo_notifications
|
||||
// (besides the rows we just deleted) or in echo_email_batch, and delete them
|
||||
|
|
|
@ -123,11 +123,11 @@ class SubscriptionManager extends AbstractMapper {
|
|||
if ( $centralId ) {
|
||||
$cond['eps_user'] = $centralId;
|
||||
}
|
||||
$this->dbw->delete(
|
||||
'echo_push_subscription',
|
||||
$cond,
|
||||
__METHOD__
|
||||
);
|
||||
$this->dbw->newDeleteQueryBuilder()
|
||||
->deleteFrom( 'echo_push_subscription' )
|
||||
->where( $cond )
|
||||
->caller( __METHOD__ )
|
||||
->execute();
|
||||
return $this->dbw->affectedRows();
|
||||
}
|
||||
|
||||
|
|
|
@ -150,11 +150,11 @@ class UnreadWikis {
|
|||
->execute();
|
||||
} else {
|
||||
// No unread notifications, delete the row
|
||||
$dbw->delete(
|
||||
'echo_unread_wikis',
|
||||
$conditions,
|
||||
__METHOD__
|
||||
);
|
||||
$dbw->newDeleteQueryBuilder()
|
||||
->deleteFrom( 'echo_unread_wikis' )
|
||||
->where( $conditions )
|
||||
->caller( __METHOD__ )
|
||||
->execute();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -92,14 +92,14 @@ class UserMergeHooks implements
|
|||
// Delete notifications
|
||||
$ids = array_merge( $selfIds, $welcomeIds, $thankYouIds );
|
||||
if ( $ids !== [] ) {
|
||||
$dbw->delete(
|
||||
'echo_notification',
|
||||
[
|
||||
$dbw->newDeleteQueryBuilder()
|
||||
->deleteFrom( 'echo_notification' )
|
||||
->where( [
|
||||
'notification_user' => $newUser->getId(),
|
||||
'notification_event' => $ids
|
||||
],
|
||||
$method
|
||||
);
|
||||
] )
|
||||
->caller( $method )
|
||||
->execute();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -67,16 +67,16 @@ class RemoveInvalidNotification extends Maintenance {
|
|||
if ( $event ) {
|
||||
$this->beginTransaction( $dbw, __METHOD__ );
|
||||
|
||||
$dbw->delete(
|
||||
'echo_event',
|
||||
[ 'event_id' => $event ],
|
||||
__METHOD__
|
||||
);
|
||||
$dbw->delete(
|
||||
'echo_notification',
|
||||
[ 'notification_event' => $event ],
|
||||
__METHOD__
|
||||
);
|
||||
$dbw->newDeleteQueryBuilder()
|
||||
->deleteFrom( 'echo_event' )
|
||||
->where( [ 'event_id' => $event ] )
|
||||
->caller( __METHOD__ )
|
||||
->execute();
|
||||
$dbw->newDeleteQueryBuilder()
|
||||
->deleteFrom( 'echo_notification' )
|
||||
->where( [ 'notification_event' => $event ] )
|
||||
->caller( __METHOD__ )
|
||||
->execute();
|
||||
|
||||
$this->commitTransaction( $dbw, __METHOD__ );
|
||||
|
||||
|
|
|
@ -85,9 +85,17 @@ class RemoveOrphanedEvents extends LoggedUpdateMaintenance {
|
|||
foreach ( $batch as $row ) {
|
||||
$ids[] = $row->event_id;
|
||||
}
|
||||
$dbw->delete( 'echo_event', [ 'event_id' => $ids ], __METHOD__ );
|
||||
$dbw->newDeleteQueryBuilder()
|
||||
->deleteFrom( 'echo_event' )
|
||||
->where( [ 'event_id' => $ids ] )
|
||||
->caller( __METHOD__ )
|
||||
->execute();
|
||||
$eventsProcessed += $dbw->affectedRows();
|
||||
$dbw->delete( 'echo_target_page', [ 'etp_event' => $ids ], __METHOD__ );
|
||||
$dbw->newDeleteQueryBuilder()
|
||||
->deleteFrom( 'echo_target_page' )
|
||||
->where( [ 'etp_event' => $ids ] )
|
||||
->caller( __METHOD__ )
|
||||
->execute();
|
||||
$targetsProcessed += $dbw->affectedRows();
|
||||
$this->output( "Deleted $eventsProcessed orphaned events and $targetsProcessed target_page rows.\n" );
|
||||
$this->waitForReplication();
|
||||
|
@ -116,7 +124,11 @@ class RemoveOrphanedEvents extends LoggedUpdateMaintenance {
|
|||
foreach ( $batch as $row ) {
|
||||
$ids[] = $row->etp_event;
|
||||
}
|
||||
$dbw->delete( 'echo_target_page', [ 'etp_event' => $ids ], __METHOD__ );
|
||||
$dbw->newDeleteQueryBuilder()
|
||||
->deleteFrom( 'echo_target_page' )
|
||||
->where( [ 'etp_event' => $ids ] )
|
||||
->caller( __METHOD__ )
|
||||
->execute();
|
||||
$processed += $dbw->affectedRows();
|
||||
$this->output( "Deleted $processed orphaned target_page rows.\n" );
|
||||
$this->waitForReplication();
|
||||
|
|
|
@ -4,6 +4,7 @@ use MediaWiki\Extension\Notifications\DbFactory;
|
|||
use MediaWiki\Extension\Notifications\Mapper\NotificationMapper;
|
||||
use MediaWiki\Extension\Notifications\Model\Notification;
|
||||
use MediaWiki\User\User;
|
||||
use Wikimedia\Rdbms\DeleteQueryBuilder;
|
||||
use Wikimedia\Rdbms\IDatabase;
|
||||
|
||||
/**
|
||||
|
@ -181,6 +182,10 @@ class NotificationMapperTest extends MediaWikiIntegrationTestCase {
|
|||
$this->assertSame( array_shift( $expectedArgs ), [ $table, $conds ] );
|
||||
return true;
|
||||
} );
|
||||
$mockDb->method( 'newDeleteQueryBuilder' )
|
||||
->willReturnCallback( static function () use ( $mockDb ) {
|
||||
return new DeleteQueryBuilder( $mockDb );
|
||||
} );
|
||||
|
||||
$notifMapper = new NotificationMapper( $this->mockDbFactory( $mockDb ) );
|
||||
$this->assertTrue( $notifMapper->deleteByUserEventOffset( User::newFromId( 1 ), 500 ) );
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
use MediaWiki\Extension\Notifications\DbFactory;
|
||||
use MediaWiki\Extension\Notifications\Mapper\NotificationMapper;
|
||||
use MediaWiki\Title\Title;
|
||||
use Wikimedia\Rdbms\Platform\ISQLPlatform;
|
||||
|
||||
/**
|
||||
* @group Echo
|
||||
|
@ -12,8 +13,16 @@ class ThankYouEditTest extends MediaWikiIntegrationTestCase {
|
|||
|
||||
private function deleteEchoData() {
|
||||
$db = DbFactory::newFromDefault()->getEchoDb( DB_PRIMARY );
|
||||
$db->delete( 'echo_event', '*', __METHOD__ );
|
||||
$db->delete( 'echo_notification', '*', __METHOD__ );
|
||||
$db->newDeleteQueryBuilder()
|
||||
->deleteFrom( 'echo_event' )
|
||||
->where( ISQLPlatform::ALL_ROWS )
|
||||
->caller( __METHOD__ )
|
||||
->execute();
|
||||
$db->newDeleteQueryBuilder()
|
||||
->deleteFrom( 'echo_notification' )
|
||||
->where( ISQLPlatform::ALL_ROWS )
|
||||
->caller( __METHOD__ )
|
||||
->execute();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue