summaryrefslogtreecommitdiffstats
path: root/lib/Db/FeedMapperV2.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Db/FeedMapperV2.php')
-rw-r--r--lib/Db/FeedMapperV2.php17
1 files changed, 13 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);