summaryrefslogtreecommitdiffstats
path: root/lib
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
parent3a1b406b193a395cb459b9e513168726d82e7c93 (diff)
Fix unread count and related issues
Issue GH-924 Signed-off-by: Sean Molenaar <sean@seanmolenaar.eu>
Diffstat (limited to 'lib')
-rw-r--r--lib/Command/Updater/UpdateFeed.php7
-rw-r--r--lib/Db/FeedMapperV2.php17
-rw-r--r--lib/Db/ItemMapperV2.php2
-rw-r--r--lib/Service/FeedServiceV2.php3
-rw-r--r--lib/Service/ItemServiceV2.php5
5 files changed, 28 insertions, 6 deletions
diff --git a/lib/Command/Updater/UpdateFeed.php b/lib/Command/Updater/UpdateFeed.php
index 71e88a15f..93fa2a8d3 100644
--- a/lib/Command/Updater/UpdateFeed.php
+++ b/lib/Command/Updater/UpdateFeed.php
@@ -52,7 +52,7 @@ class UpdateFeed extends Command
$userId = $input->getArgument('user-id');
try {
$feed = $this->feedService->findForUser($userId, $feedId);
- $this->feedService->fetch($feed);
+ $updated_feed = $this->feedService->fetch($feed);
} catch (\Exception $e) {
$output->writeln(
'<error>Could not update feed with id ' . $feedId .
@@ -62,6 +62,11 @@ class UpdateFeed extends Command
return 1;
}
+ if ($updated_feed->getUpdateErrorCount() !== 0) {
+ $output->writeln($updated_feed->getLastUpdateError());
+ return 255;
+ }
+
return 0;
}
}
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)
diff --git a/lib/Service/FeedServiceV2.php b/lib/Service/FeedServiceV2.php
index 0d1b45600..94878d5fe 100644
--- a/lib/Service/FeedServiceV2.php
+++ b/lib/Service/FeedServiceV2.php
@@ -228,6 +228,7 @@ class FeedServiceV2 extends Service
$feed->setFolderId($folderId)
->setUserId($userId)
+ ->setHttpLastModified(null)
->setArticlesPerUpdate(count($items));
if (!is_null($title)) {
@@ -236,7 +237,7 @@ class FeedServiceV2 extends Service
if (!is_null($user)) {
$feed->setBasicAuthUser($user)
- ->setBasicAuthUser($password);
+ ->setBasicAuthPassword($password);
}
return $this->mapper->insert($feed);
diff --git a/lib/Service/ItemServiceV2.php b/lib/Service/ItemServiceV2.php
index b4cb16e22..d0093a07e 100644
--- a/lib/Service/ItemServiceV2.php
+++ b/lib/Service/ItemServiceV2.php
@@ -72,6 +72,11 @@ class ItemServiceV2 extends Service
return $this->mapper->findAll();
}
+ /**
+ * Insert an item or update.
+ *
+ * @param Item $item
+ */
public function insertOrUpdate(Item $item)
{
try {