summaryrefslogtreecommitdiffstats
path: root/lib/Db
diff options
context:
space:
mode:
authorSean Molenaar <sean@seanmolenaar.eu>2020-11-09 23:29:25 +0100
committerBenjamin Brahmer <info@b-brahmer.de>2020-11-10 16:47:42 +0100
commit5bdc2df7f484f6618919a63247045027d43b78f7 (patch)
tree25a5f6a834d736e7c985bfa30c50099185a8f3b1 /lib/Db
parent3a1b406b193a395cb459b9e513168726d82e7c93 (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.php17
-rw-r--r--lib/Db/ItemMapperV2.php2
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)