diff options
author | Sean Molenaar <sean@seanmolenaar.eu> | 2020-08-29 23:39:35 +0200 |
---|---|---|
committer | Benjamin Brahmer <info@b-brahmer.de> | 2020-09-27 15:35:31 +0200 |
commit | d00d1ab2a28f428223e52b17052c072c64784016 (patch) | |
tree | c019f85fb7ac67147dd43ca64b4ac3cda99832f7 /lib/Service/ItemServiceV2.php | |
parent | 5687baca75d47dbdffd3de74e865ad2f71ef0cb7 (diff) |
Create V2 mapper, Service and management commands
Signed-off-by: Sean Molenaar <sean@seanmolenaar.eu>
Diffstat (limited to 'lib/Service/ItemServiceV2.php')
-rw-r--r-- | lib/Service/ItemServiceV2.php | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/lib/Service/ItemServiceV2.php b/lib/Service/ItemServiceV2.php new file mode 100644 index 000000000..879b2908f --- /dev/null +++ b/lib/Service/ItemServiceV2.php @@ -0,0 +1,104 @@ +<?php +/** + * Nextcloud - News + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Alessandro Cosentino <cosenal@gmail.com> + * @author Bernhard Posselt <dev@bernhard-posselt.com> + * @copyright 2020 Sean Molenaar + */ + +namespace OCA\News\Service; + +use OCA\News\AppInfo\Application; +use OCA\News\Db\Item; +use OCA\News\Db\ItemMapperV2; +use OCP\AppFramework\Db\DoesNotExistException; +use OCP\IConfig; +use Psr\Log\LoggerInterface; + +/** + * Class ItemService + * + * @package OCA\News\Service + */ +class ItemServiceV2 extends Service +{ + + /** + * @var IConfig + */ + protected $config; + + /** + * ItemService constructor. + * + * @param ItemMapperV2 $mapper + * @param IConfig $config + * @param LoggerInterface $logger + */ + public function __construct( + ItemMapperV2 $mapper, + IConfig $config, + LoggerInterface $logger + ) { + parent::__construct($mapper, $logger); + $this->config = $config; + } + + /** + * Finds all items of a user + * + * @param string $userId the name of the user + * + * @return Item[] + */ + public function findAllForUser($userId): array + { + return $this->mapper->findAllFromUser($userId); + } + + /** + * Find all items + * + * @return Item[] + */ + public function findAll(): array + { + return $this->mapper->findAll(); + } + + public function insertOrUpdate(Item $item) + { + try { + $db_item = $this->mapper->findByGuidHash($item->getGuidHash()); + $item->setId($db_item->getId()); + $this->mapper->update($item); + } catch (DoesNotExistException $exception) { + $this->mapper->insert($item); + } + } + + public function findAllForFeed(int $feedId): array + { + return $this->mapper->findAllForFeed($feedId); + } + + public function purgeOverThreshold($threshold = null) + { + + $threshold = (int) $threshold ?? $this->config->getAppValue( + Application::NAME, + 'autoPurgeCount', + Application::DEFAULT_SETTINGS['autoPurgeCount'] + ); + + if ($threshold === 0) { + return ''; + } + + return $this->mapper->deleteOverThreshold($threshold); + } +} |