From 5af0cb6e225468599da10e1c6fa7cd870f9c56ec Mon Sep 17 00:00:00 2001 From: Benjamin Brahmer Date: Sun, 20 Mar 2022 10:56:49 +0100 Subject: update last_modified when marking an item as read Signed-off-by: Benjamin Brahmer this way it works Signed-off-by: Benjamin Brahmer add changelog entry Signed-off-by: Benjamin Brahmer Partly fix test Signed-off-by: Benjamin Brahmer test passing Signed-off-by: Benjamin Brahmer --- CHANGELOG.md | 1 + lib/Db/FeedMapperV2.php | 6 ++++-- lib/Db/FolderMapperV2.php | 5 ++++- tests/Unit/Db/FeedMapperTest.php | 23 ++++++++++++----------- tests/Unit/Db/FolderMapperTest.php | 20 ++++++++++---------- 5 files changed, 31 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 641fd776d..99fc8477f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ The format is mostly based on [Keep a Changelog](https://keepachangelog.com/en/1 - Add routes for starring/unstarring items by id ### Fixed +- Fix updated api not returning any item after marking item as read (#1713) # Releases diff --git a/lib/Db/FeedMapperV2.php b/lib/Db/FeedMapperV2.php index bab170f79..c80bf118b 100644 --- a/lib/Db/FeedMapperV2.php +++ b/lib/Db/FeedMapperV2.php @@ -186,14 +186,16 @@ class FeedMapperV2 extends NewsMapperV2 }, $this->db->executeQuery($idBuilder->getSQL(), $idBuilder->getParameters())->fetchAll() ); - + $time = new Time(); $builder = $this->db->getQueryBuilder(); $builder->update(ItemMapperV2::TABLE_NAME) ->set('unread', $builder->createParameter('unread')) + ->set('last_modified', $builder->createParameter('last_modified')) ->andWhere('id IN (:idList)') ->andWhere('unread != :unread') ->setParameter('unread', false, IQueryBuilder::PARAM_BOOL) - ->setParameter('idList', $idList, IQueryBuilder::PARAM_INT_ARRAY); + ->setParameter('idList', $idList, IQueryBuilder::PARAM_INT_ARRAY) + ->setParameter('last_modified', $time->getMicroTime(), IQueryBuilder::PARAM_STR); return $this->db->executeStatement( $builder->getSQL(), diff --git a/lib/Db/FolderMapperV2.php b/lib/Db/FolderMapperV2.php index ea2edee91..9afda11c4 100644 --- a/lib/Db/FolderMapperV2.php +++ b/lib/Db/FolderMapperV2.php @@ -128,13 +128,16 @@ class FolderMapperV2 extends NewsMapperV2 return intval($value['id']); }, $this->db->executeQuery($idBuilder->getSQL(), $idBuilder->getParameters())->fetchAll()); + $time = new Time(); $builder = $this->db->getQueryBuilder(); $builder->update(ItemMapperV2::TABLE_NAME) ->set('unread', $builder->createParameter('unread')) + ->set('last_modified', $builder->createParameter('last_modified')) ->andWhere('id IN (:idList)') ->andWhere('unread != :unread') ->setParameter('unread', false, IQueryBuilder::PARAM_BOOL) - ->setParameter('idList', $idList, IQueryBuilder::PARAM_INT_ARRAY); + ->setParameter('idList', $idList, IQueryBuilder::PARAM_INT_ARRAY) + ->setParameter('last_modified', $time->getMicroTime(), IQueryBuilder::PARAM_STR); return $this->db->executeStatement( $builder->getSQL(), diff --git a/tests/Unit/Db/FeedMapperTest.php b/tests/Unit/Db/FeedMapperTest.php index 499989062..7830d266c 100644 --- a/tests/Unit/Db/FeedMapperTest.php +++ b/tests/Unit/Db/FeedMapperTest.php @@ -49,6 +49,7 @@ class FeedMapperTest extends MapperTestUtility $feed2->resetUpdatedFields(); $this->feeds = [$feed1, $feed2]; + } /** @@ -519,13 +520,13 @@ class FeedMapperTest extends MapperTestUtility ->with('news_items') ->will($this->returnSelf()); - $this->builder->expects($this->once()) + $this->builder->expects($this->exactly(2)) ->method('createParameter') ->will($this->returnArgument(0)); - $this->builder->expects($this->once()) + $this->builder->expects($this->exactly(2)) ->method('set') - ->with('unread', 'unread') + ->withConsecutive(['unread', 'unread'], ['last_modified', 'last_modified']) ->will($this->returnSelf()); $this->builder->expects($this->exactly(2)) @@ -533,11 +534,11 @@ class FeedMapperTest extends MapperTestUtility ->withConsecutive(['id IN (:idList)'], ['unread != :unread']) ->will($this->returnSelf()); - $this->builder->expects($this->exactly(2)) + $this->builder->expects($this->exactly(3)) ->method('setParameter') - ->withConsecutive(['unread', false], ['idList', [1, 2]]) + ->withConsecutive(['unread', false], ['idList', [1, 2]], ['last_modified']) ->will($this->returnSelf()); - + $this->builder->expects($this->exactly(1)) ->method('getSQL') ->will($this->returnValue('QUERY')); @@ -616,7 +617,7 @@ class FeedMapperTest extends MapperTestUtility ->with('SQL QUERY') ->willReturn($result); - $this->builder->expects($this->once()) + $this->builder->expects($this->exactly(2)) ->method('createParameter') ->will($this->returnArgument(0)); @@ -625,9 +626,9 @@ class FeedMapperTest extends MapperTestUtility ->with('news_items') ->will($this->returnSelf()); - $this->builder->expects($this->once()) + $this->builder->expects($this->exactly(2)) ->method('set') - ->with('unread', 'unread') + ->withConsecutive(['unread', 'unread'], ['last_modified', 'last_modified']) ->will($this->returnSelf()); $this->builder->expects($this->exactly(2)) @@ -635,9 +636,9 @@ class FeedMapperTest extends MapperTestUtility ->withConsecutive(['id IN (:idList)'], ['unread != :unread']) ->will($this->returnSelf()); - $this->builder->expects($this->exactly(2)) + $this->builder->expects($this->exactly(3)) ->method('setParameter') - ->withConsecutive(['unread', false], ['idList', [1, 2]]) + ->withConsecutive(['unread', false], ['idList', [1, 2]], ['last_modified']) ->will($this->returnSelf()); $this->builder->expects($this->exactly(1)) diff --git a/tests/Unit/Db/FolderMapperTest.php b/tests/Unit/Db/FolderMapperTest.php index a7f9f0c9d..db43f64e1 100644 --- a/tests/Unit/Db/FolderMapperTest.php +++ b/tests/Unit/Db/FolderMapperTest.php @@ -342,7 +342,7 @@ class FolderMapperTest extends MapperTestUtility ->with('SQL QUERY') ->willReturn($result); - $this->builder->expects($this->once()) + $this->builder->expects($this->exactly(2)) ->method('createParameter') ->will($this->returnArgument(0)); @@ -351,9 +351,9 @@ class FolderMapperTest extends MapperTestUtility ->with('news_items') ->will($this->returnSelf()); - $this->builder->expects($this->once()) + $this->builder->expects($this->exactly(2)) ->method('set') - ->with('unread', 'unread') + ->withConsecutive(['unread', 'unread'], ['last_modified', 'last_modified']) ->will($this->returnSelf()); $this->builder->expects($this->exactly(2)) @@ -361,9 +361,9 @@ class FolderMapperTest extends MapperTestUtility ->withConsecutive(['id IN (:idList)'], ['unread != :unread']) ->will($this->returnSelf()); - $this->builder->expects($this->exactly(2)) + $this->builder->expects($this->exactly(3)) ->method('setParameter') - ->withConsecutive(['unread', false], ['idList', [1, 2]]) + ->withConsecutive(['unread', false], ['idList', [1, 2]], ['last_modified']) ->will($this->returnSelf()); $this->builder->expects($this->exactly(1)) @@ -445,7 +445,7 @@ class FolderMapperTest extends MapperTestUtility ->with('SQL QUERY') ->willReturn($result); - $this->builder->expects($this->once()) + $this->builder->expects($this->exactly(2)) ->method('createParameter') ->will($this->returnArgument(0)); @@ -454,9 +454,9 @@ class FolderMapperTest extends MapperTestUtility ->with('news_items') ->will($this->returnSelf()); - $this->builder->expects($this->once()) + $this->builder->expects($this->exactly(2)) ->method('set') - ->with('unread', 'unread') + ->withConsecutive(['unread', 'unread'], ['last_modified', 'last_modified']) ->will($this->returnSelf()); $this->builder->expects($this->exactly(2)) @@ -464,9 +464,9 @@ class FolderMapperTest extends MapperTestUtility ->withConsecutive(['id IN (:idList)'], ['unread != :unread']) ->will($this->returnSelf()); - $this->builder->expects($this->exactly(2)) + $this->builder->expects($this->exactly(3)) ->method('setParameter') - ->withConsecutive(['unread', false], ['idList', [1, 2]]) + ->withConsecutive(['unread', false], ['idList', [1, 2]], ['last_modified']) ->will($this->returnSelf()); $this->builder->expects($this->exactly(1)) -- cgit v1.2.3