diff options
author | Sean Molenaar <sean@seanmolenaar.eu> | 2020-11-09 23:29:25 +0100 |
---|---|---|
committer | Benjamin Brahmer <info@b-brahmer.de> | 2020-11-10 16:47:42 +0100 |
commit | 5bdc2df7f484f6618919a63247045027d43b78f7 (patch) | |
tree | 25a5f6a834d736e7c985bfa30c50099185a8f3b1 /lib/Db | |
parent | 3a1b406b193a395cb459b9e513168726d82e7c93 (diff) |
Fix unread count and related issues
Issue GH-924
Signed-off-by: Sean Molenaar <sean@seanmolenaar.eu>
Diffstat (limited to 'lib/Db')
-rw-r--r-- | lib/Db/FeedMapperV2.php | 17 | ||||
-rw-r--r-- | lib/Db/ItemMapperV2.php | 2 |
2 files changed, 15 insertions, 4 deletions
diff --git a/lib/Db/FeedMapperV2.php b/lib/Db/FeedMapperV2.php index 05b272112..366ece141 100644 --- a/lib/Db/FeedMapperV2.php +++ b/lib/Db/FeedMapperV2.php @@ -16,6 +16,7 @@ namespace OCA\News\Db; use OCA\News\Utility\Time; use OCP\AppFramework\Db\DoesNotExistException; use OCP\AppFramework\Db\MultipleObjectsReturnedException; +use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IDBConnection; use OCP\AppFramework\Db\Entity; @@ -50,10 +51,18 @@ class FeedMapperV2 extends NewsMapperV2 public function findAllFromUser(string $userId, array $params = []): array { $builder = $this->db->getQueryBuilder(); - $builder->addSelect('*') - ->from($this->tableName) - ->where('user_id = :user_id') - ->andWhere('deleted_at = 0') + $builder->select('feeds.*', $builder->func()->count('items.id', 'unreadCount')) + ->from($this->tableName, 'feeds') + ->leftJoin( + 'feeds', + ItemMapperV2::TABLE_NAME, + 'items', + 'items.feed_id = feeds.id AND items.unread = :unread' + ) + ->where('feeds.user_id = :user_id') + ->andWhere('feeds.deleted_at = 0') + ->groupBy('feeds.id') + ->setParameter(':unread', true, IQueryBuilder::PARAM_BOOL) ->setParameter(':user_id', $userId); return $this->findEntities($builder); diff --git a/lib/Db/ItemMapperV2.php b/lib/Db/ItemMapperV2.php index 8bd939e71..4f6f82413 100644 --- a/lib/Db/ItemMapperV2.php +++ b/lib/Db/ItemMapperV2.php @@ -134,6 +134,8 @@ class ItemMapperV2 extends NewsMapperV2 /** * Delete items from feed that are over the max item threshold * + * TODO: Implement + * * @param int $threshold Deletion threshold */ public function deleteOverThreshold(int $threshold) |