]> source.dussan.org Git - nextcloud-server.git/commitdiff
Include an option to also include the lastKnownCommentId object
authorJoas Schilling <coding@schilljs.com>
Wed, 21 Oct 2020 07:08:48 +0000 (09:08 +0200)
committerJoas Schilling <coding@schilljs.com>
Wed, 21 Oct 2020 07:08:48 +0000 (09:08 +0200)
Signed-off-by: Joas Schilling <coding@schilljs.com>
lib/private/Comments/Manager.php
lib/public/Comments/ICommentsManager.php

index 3c9be9828d14c729d327567998bf918a6832822e..dc449cc4d4bb4879efcb1185372614f006d4ae72 100644 (file)
@@ -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))
                                                )
                                        )
                                );
index 95f0d2ce300567eb242eb772d2a15afcd9765514..718391f7145e2711e8d6a979f0dc8392000ffc84 100644 (file)
@@ -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;
 
        /**