mirror of
https://github.com/nextcloud/server.git
synced 2026-06-10 09:13:19 -04:00
Delete the user status without loading it first
Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
parent
c5d11abff9
commit
194338cca3
2 changed files with 25 additions and 9 deletions
|
|
@ -158,4 +158,23 @@ class UserStatusMapper extends QBMapper {
|
|||
|
||||
$qb->execute();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Deletes a user status so we can restore the backup
|
||||
*
|
||||
* @param string $userId
|
||||
* @param string $messageId
|
||||
* @param string $status
|
||||
* @return bool True if an entry was deleted
|
||||
*/
|
||||
public function deleteCurrentStatusToRestoreBackup(string $userId, string $messageId, string $status): bool {
|
||||
$qb = $this->db->getQueryBuilder();
|
||||
$qb->delete($this->tableName)
|
||||
->where($qb->expr()->eq('user_id', $qb->createNamedParameter($userId)))
|
||||
->andWhere($qb->expr()->eq('message_id', $qb->createNamedParameter($messageId)))
|
||||
->andWhere($qb->expr()->eq('status', $qb->createNamedParameter($status)))
|
||||
->andWhere($qb->expr()->eq('is_backup', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL)));
|
||||
return $qb->executeStatement() > 0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -468,16 +468,13 @@ class StatusService {
|
|||
// No user status to revert, do nothing
|
||||
return;
|
||||
}
|
||||
try {
|
||||
$userStatus = $this->mapper->findByUserId($userId);
|
||||
if ($userStatus->getMessageId() !== $messageId || $userStatus->getStatus() !== $status) {
|
||||
// Another status is set automatically, do nothing
|
||||
return;
|
||||
}
|
||||
$this->mapper->delete($userStatus);
|
||||
} catch (DoesNotExistException $ex) {
|
||||
// No current status => nothing to delete
|
||||
|
||||
$deleted = $this->mapper->deleteCurrentStatusToRestoreBackup($userId, $messageId ?? '', $status);
|
||||
if (!$deleted) {
|
||||
// Another status is set automatically or no status, do nothing
|
||||
return;
|
||||
}
|
||||
|
||||
$backupUserStatus->setIsBackup(false);
|
||||
// Remove the underscore prefix added when creating the backup
|
||||
$backupUserStatus->setUserId(substr($backupUserStatus->getUserId(), 1));
|
||||
|
|
|
|||
Loading…
Reference in a new issue