From: Joas Schilling Date: Wed, 21 Oct 2020 07:08:48 +0000 (+0200) Subject: Include an option to also include the lastKnownCommentId object X-Git-Tag: v21.0.0beta1~327^2~9 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=2cc35cc65d251ac52e1e09fe52381ccbf64eb89f;p=nextcloud-server.git Include an option to also include the lastKnownCommentId object Signed-off-by: Joas Schilling --- diff --git a/lib/private/Comments/Manager.php b/lib/private/Comments/Manager.php index 3c9be9828d1..dc449cc4d4b 100644 --- a/lib/private/Comments/Manager.php +++ b/lib/private/Comments/Manager.php @@ -395,6 +395,7 @@ class Manager implements ICommentsManager { * @param string $sortDirection direction of the comments (`asc` or `desc`) * @param int $limit optional, number of maximum comments to be returned. if * set to 0, all comments are returned. + * @param bool $includeLastKnown * @return IComment[] * @return array */ @@ -403,7 +404,8 @@ class Manager implements ICommentsManager { string $objectId, int $lastKnownCommentId, string $sortDirection = 'asc', - int $limit = 30 + int $limit = 30, + bool $includeLastKnown = false ): array { $comments = []; @@ -427,6 +429,7 @@ class Manager implements ICommentsManager { if ($lastKnownComment instanceof IComment) { $lastKnownCommentDateTime = $lastKnownComment->getCreationDateTime(); if ($sortDirection === 'desc') { + $idComparison = $includeLastKnown ? 'lte' : 'lt'; $query->andWhere( $query->expr()->orX( $query->expr()->lt( @@ -440,11 +443,12 @@ class Manager implements ICommentsManager { $query->createNamedParameter($lastKnownCommentDateTime, IQueryBuilder::PARAM_DATE), IQueryBuilder::PARAM_DATE ), - $query->expr()->lt('id', $query->createNamedParameter($lastKnownCommentId)) + $query->expr()->$idComparison('id', $query->createNamedParameter($lastKnownCommentId)) ) ) ); } else { + $idComparison = $includeLastKnown ? 'gte' : 'gt'; $query->andWhere( $query->expr()->orX( $query->expr()->gt( @@ -458,7 +462,7 @@ class Manager implements ICommentsManager { $query->createNamedParameter($lastKnownCommentDateTime, IQueryBuilder::PARAM_DATE), IQueryBuilder::PARAM_DATE ), - $query->expr()->gt('id', $query->createNamedParameter($lastKnownCommentId)) + $query->expr()->$idComparison('id', $query->createNamedParameter($lastKnownCommentId)) ) ) ); diff --git a/lib/public/Comments/ICommentsManager.php b/lib/public/Comments/ICommentsManager.php index 95f0d2ce300..718391f7145 100644 --- a/lib/public/Comments/ICommentsManager.php +++ b/lib/public/Comments/ICommentsManager.php @@ -128,6 +128,7 @@ interface ICommentsManager { * @param string $sortDirection direction of the comments (`asc` or `desc`) * @param int $limit optional, number of maximum comments to be returned. if * set to 0, all comments are returned. + * @param bool $includeLastKnown * @return IComment[] * @since 14.0.0 */ @@ -136,7 +137,8 @@ interface ICommentsManager { string $objectId, int $lastKnownCommentId, string $sortDirection = 'asc', - int $limit = 30 + int $limit = 30, + bool $includeLastKnown = false ): array; /**