summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean Molenaar <sean@seanmolenaar.eu>2021-01-02 17:57:17 +0100
committerSean Molenaar <SMillerDev@users.noreply.github.com>2021-02-13 13:22:57 +0100
commitb4fa772bc5f23f84fc292f5d6bf884543d2bfe51 (patch)
tree8576ad3ea145f3644804e2fd93de462cfc2c2578
parentceba81060303e49b2617397397f2804516052ec9 (diff)
Remove V1 item API
Signed-off-by: Sean Molenaar <sean@seanmolenaar.eu>
-rw-r--r--CHANGELOG.md2
-rw-r--r--lib/AppInfo/Application.php8
-rw-r--r--lib/Command/Config/FolderDelete.php4
-rw-r--r--lib/Controller/ApiController.php2
-rw-r--r--lib/Controller/FeedApiController.php27
-rw-r--r--lib/Controller/FeedController.php18
-rw-r--r--lib/Controller/FolderApiController.php25
-rw-r--r--lib/Controller/FolderController.php35
-rw-r--r--lib/Controller/ItemApiController.php157
-rw-r--r--lib/Controller/ItemController.php164
-rw-r--r--lib/Controller/PageController.php2
-rw-r--r--lib/Db/FeedMapperV2.php24
-rw-r--r--lib/Db/FeedType.php5
-rw-r--r--lib/Db/FolderMapperV2.php26
-rw-r--r--lib/Db/ItemMapper.php586
-rw-r--r--lib/Db/ItemMapperV2.php366
-rw-r--r--lib/Db/MapperFactory.php54
-rw-r--r--lib/Db/Mysql/ItemMapper.php98
-rw-r--r--lib/DependencyInjection/IFactory.php25
-rw-r--r--lib/Explore/Exceptions/RecommendedSiteNotFoundException.php (renamed from lib/Explore/RecommendedSiteNotFoundException.php)2
-rw-r--r--lib/Explore/RecommendedSites.php2
-rw-r--r--lib/Fetcher/FetcherException.php28
-rw-r--r--lib/Service/Exceptions/ServiceConflictException.php16
-rw-r--r--lib/Service/Exceptions/ServiceException.php25
-rw-r--r--lib/Service/Exceptions/ServiceNotFoundException.php17
-rw-r--r--lib/Service/Exceptions/ServiceValidationException.php16
-rw-r--r--lib/Service/FeedServiceV2.php20
-rw-r--r--lib/Service/FolderServiceV2.php17
-rw-r--r--lib/Service/ItemService.php352
-rw-r--r--lib/Service/ItemServiceV2.php267
-rw-r--r--lib/Service/Service.php12
-rw-r--r--phpunit.xml6
-rw-r--r--tests/Unit/Command/FolderDeleteTest.php2
-rw-r--r--tests/Unit/Controller/FeedApiControllerTest.php46
-rw-r--r--tests/Unit/Controller/FeedControllerTest.php73
-rw-r--r--tests/Unit/Controller/FolderApiControllerTest.php50
-rw-r--r--tests/Unit/Controller/FolderControllerTest.php74
-rw-r--r--tests/Unit/Controller/ItemApiControllerTest.php288
-rw-r--r--tests/Unit/Controller/ItemControllerTest.php246
-rw-r--r--tests/Unit/Controller/PageControllerTest.php22
-rw-r--r--tests/Unit/Db/FeedMapperTest.php92
-rw-r--r--tests/Unit/Db/FolderMapperTest.php90
-rw-r--r--tests/Unit/Db/ItemMapperTest.php2360
-rw-r--r--tests/Unit/Db/MapperFactoryTest.php59
-rw-r--r--tests/Unit/Db/MapperTestUtility.php2
-rw-r--r--tests/Unit/Service/FeedServiceTest.php21
-rw-r--r--tests/Unit/Service/FolderServiceTest.php17
-rw-r--r--tests/Unit/Service/ItemServiceTest.php640
-rw-r--r--tests/Unit/Service/ServiceTest.php4
-rw-r--r--tests/psalm-baseline.xml42
50 files changed, 4565 insertions, 1971 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0ba171dd2..05d8cd52d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,8 @@ The format is almost based on [Keep a Changelog](https://keepachangelog.com/en/1
## [Unreleased]
### Changed
+- Remove outdated item DB code.
+- Stop returning all feeds after marking folder as read.
### Fixed
diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php
index a262e2a03..079b32fe8 100644
--- a/lib/AppInfo/Application.php
+++ b/lib/AppInfo/Application.php
@@ -31,9 +31,6 @@ use OCP\AppFramework\App;
use OCP\Files\IRootFolder;
use OCP\Files\Node;
-
-use OCA\News\Db\MapperFactory;
-use OCA\News\Db\ItemMapper;
use OCA\News\Fetcher\FeedFetcher;
use OCA\News\Fetcher\Fetcher;
use OCP\User\Events\BeforeUserDeletedEvent;
@@ -90,11 +87,6 @@ class Application extends App implements IBootstrap
$context->registerParameter('exploreDir', __DIR__ . '/../Explore/feeds');
$context->registerParameter('configFile', 'config.ini');
- // factories
- $context->registerService(ItemMapper::class, function (ContainerInterface $c): ItemMapper {
- return $c->get(MapperFactory::class)->build();
- });
-
$context->registerService(HTMLPurifier::class, function (ContainerInterface $c): HTMLPurifier {
$directory = $c->get(ITempManager::class)->getTempBaseDir() . '/news/cache/purifier';
diff --git a/lib/Command/Config/FolderDelete.php b/lib/Command/Config/FolderDelete.php
index a80875682..8d7722b3b 100644
--- a/lib/Command/Config/FolderDelete.php
+++ b/lib/Command/Config/FolderDelete.php
@@ -2,7 +2,7 @@
namespace OCA\News\Command\Config;
-use OCA\News\Service\Exceptions\ServiceException;
+use OCA\News\Service\Exceptions\ServiceValidationException;
use OCA\News\Service\FolderServiceV2;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
@@ -50,7 +50,7 @@ class FolderDelete extends Command
$id = $input->getArgument('folder-id');
if ($id === null) {
- throw new ServiceException('Can not remove root folder!');
+ throw new ServiceValidationException('Can not remove root folder!');
}
$this->folderService->delete($user, intval($id));
diff --git a/lib/Controller/ApiController.php b/lib/Controller/ApiController.php
index a434f8de7..e6a83b21a 100644
--- a/lib/Controller/ApiController.php
+++ b/lib/Controller/ApiController.php
@@ -77,7 +77,7 @@ class ApiController extends BaseApiController
*
* @return array
*/
- public function index()
+ public function index(): array
{
return [
'apiLevels' => ['v1-2']
diff --git a/lib/Controller/FeedApiController.php b/lib/Controller/FeedApiController.php
index f247a4e66..43d92b7ca 100644
--- a/lib/Controller/FeedApiController.php
+++ b/lib/Controller/FeedApiController.php
@@ -19,12 +19,12 @@ use Exception;
use OCA\News\Service\Exceptions\ServiceConflictException;
use OCA\News\Service\Exceptions\ServiceNotFoundException;
use OCA\News\Service\FeedServiceV2;
+use OCA\News\Service\ItemServiceV2;
use OCP\AppFramework\Http\JSONResponse;
use \OCP\IRequest;
use \OCP\IUserSession;
use \OCP\AppFramework\Http;
-use \OCA\News\Service\ItemService;
use Psr\Log\LoggerInterface;
class FeedApiController extends ApiController
@@ -32,10 +32,9 @@ class FeedApiController extends ApiController
use JSONHttpErrorTrait, ApiPayloadTrait;
/**
- * TODO: Remove
- * @var ItemService
+ * @var ItemServiceV2
*/
- private $oldItemService;
+ private $itemService;
/**
* @var FeedServiceV2
@@ -51,12 +50,12 @@ class FeedApiController extends ApiController
IRequest $request,
?IUserSession $userSession,
FeedServiceV2 $feedService,
- ItemService $oldItemService,
+ ItemServiceV2 $itemService,
LoggerInterface $logger
) {
parent::__construct($request, $userSession);
$this->feedService = $feedService;
- $this->oldItemService = $oldItemService;
+ $this->itemService = $itemService;
$this->logger = $logger;
}
@@ -70,12 +69,12 @@ class FeedApiController extends ApiController
{
$result = [
- 'starredCount' => $this->oldItemService->starredCount($this->getUserId()),
+ 'starredCount' => count($this->itemService->starred($this->getUserId())),
'feeds' => $this->serialize($this->feedService->findAllForUser($this->getUserId()))
];
try {
- $result['newestItemId'] = $this->oldItemService->getNewestItemId($this->getUserId());
+ $result['newestItemId'] = $this->itemService->newest($this->getUserId())->getId();
} catch (ServiceNotFoundException $ex) {
// in case there are no items, ignore
}
@@ -96,9 +95,7 @@ class FeedApiController extends ApiController
*/
public function create(string $url, ?int $folderId = null)
{
- if ($folderId === 0) {
- $folderId = null;
- }
+ $folderId = $folderId === 0 ? null : $folderId;
try {
$this->feedService->purgeDeleted($this->getUserId(), time() - 600);
@@ -109,7 +106,7 @@ class FeedApiController extends ApiController
$this->feedService->fetch($feed);
try {
- $result['newestItemId'] = $this->oldItemService->getNewestItemId($this->getUserId());
+ $result['newestItemId'] = $this->itemService->newest($this->getUserId())->getId();
} catch (ServiceNotFoundException $ex) {
// in case there are no items, ignore
}
@@ -154,7 +151,7 @@ class FeedApiController extends ApiController
*/
public function read(int $feedId, int $newestItemId): void
{
- $this->oldItemService->readFeed($feedId, $newestItemId, $this->getUserId());
+ $this->itemService->read($this->getUserId(), $feedId, $newestItemId);
}
@@ -170,9 +167,7 @@ class FeedApiController extends ApiController
*/
public function move(int $feedId, ?int $folderId)
{
- if ($folderId === 0) {
- $folderId = null;
- }
+ $folderId = $folderId === 0 ? null : $folderId;
try {
$feed = $this->feedService->find($this->getUserId(), $feedId);
diff --git a/lib/Controller/FeedController.php b/lib/Controller/FeedController.php
index 9f7c9b0d6..681dda4bc 100644
--- a/lib/Controller/FeedController.php
+++ b/lib/Controller/FeedController.php
@@ -18,12 +18,12 @@ use OCA\News\Service\Exceptions\ServiceNotFoundException;
use OCA\News\Service\FeedServiceV2;
use OCA\News\Service\FolderServiceV2;
use OCA\News\Service\ImportService;
+use OCA\News\Service\ItemServiceV2;
use OCP\AppFramework\Http\JSONResponse;
use OCP\IRequest;
use OCP\IConfig;
use OCP\AppFramework\Http;
-use OCA\News\Service\ItemService;
use OCA\News\Db\FeedType;
use OCP\IUserSession;
@@ -35,7 +35,9 @@ class FeedController extends Controller
* @var FeedServiceV2
*/
private $feedService;
- //TODO: Remove
+ /**
+ * @var ItemServiceV2
+ */
private $itemService;
/**
* @var FolderServiceV2
@@ -54,7 +56,7 @@ class FeedController extends Controller
IRequest $request,
FolderServiceV2 $folderService,
FeedServiceV2 $feedService,
- ItemService $itemService,
+ ItemServiceV2 $itemService,
ImportService $importService,
IConfig $settings,
?IUserSession $userSession
@@ -79,11 +81,11 @@ class FeedController extends Controller
// item id which will be used for marking feeds read
$params = [
'feeds' => $this->feedService->findAllForUser($this->getUserId()),
- 'starred' => $this->itemService->starredCount($this->getUserId())
+ 'starred' => count($this->itemService->starred($this->getUserId()))
];
try {
- $id = $this->itemService->getNewestItemId($this->getUserId());
+ $id = $this->itemService->newest($this->getUserId())->getId();
// An exception occurs if there is a newest item. If there is none,
// simply ignore it and do not add the newestItemId
@@ -183,7 +185,7 @@ class FeedController extends Controller
$this->feedService->fetch($feed);
try {
- $id = $this->itemService->getNewestItemId($this->getUserId());
+ $id = $this->itemService->newest($this->getUserId())->getId();
// An exception occurs if there is a newest item. If there is none,
// simply ignore it and do not add the newestItemId
$params['newestItemId'] = $id;
@@ -261,7 +263,7 @@ class FeedController extends Controller
$feed = $this->importService->importArticles($this->getUserId(), $json);
$params = [
- 'starred' => $this->itemService->starredCount($this->getUserId())
+ 'starred' => count($this->itemService->starred($this->getUserId()))
];
if ($feed) {
@@ -281,7 +283,7 @@ class FeedController extends Controller
*/
public function read(int $feedId, int $highestItemId): array
{
- $this->itemService->readFeed($feedId, $highestItemId, $this->getUserId());
+ $this->feedService->read($this->getUserId(), $feedId, $highestItemId);
return [
'feeds' => [
diff --git a/lib/Controller/FolderApiController.php b/lib/Controller/FolderApiController.php
index 8de4b9e69..71fc503e2 100644
--- a/lib/Controller/FolderApiController.php
+++ b/lib/Controller/FolderApiController.php
@@ -20,7 +20,6 @@ use \OCP\IRequest;
use \OCP\IUserSession;
use \OCP\AppFramework\Http;
-use \OCA\News\Service\ItemService;
use \OCA\News\Service\FolderServiceV2;
use \OCA\News\Service\Exceptions\ServiceNotFoundException;
use \OCA\News\Service\Exceptions\ServiceConflictException;
@@ -30,20 +29,19 @@ class FolderApiController extends ApiController
{
use JSONHttpErrorTrait, ApiPayloadTrait;
+ /**
+ * @var FolderServiceV2
+ */
private $folderService;
- //TODO: Remove
- private $itemService;
public function __construct(
IRequest $request,
?IUserSession $userSession,
- FolderServiceV2 $folderService,
- ItemService $itemService
+ FolderServiceV2 $folderService
) {
parent::__construct($request, $userSession);
$this->folderService = $folderService;
- $this->itemService = $itemService;
}
@@ -52,7 +50,7 @@ class FolderApiController extends ApiController
* @NoCSRFRequired
* @CORS
*/
- public function index()
+ public function index(): array
{
$folders = $this->folderService->findAllForUser($this->getUserId());
return ['folders' => $this->serialize($folders)];
@@ -142,14 +140,13 @@ class FolderApiController extends ApiController
* @NoCSRFRequired
* @CORS
*
- * @param int|null $folderId
- * @param int $newestItemId
+ * @param int|null $folderId ID of the folder
+ * @param int $maxItemId The newest read item
*/
- public function read(?int $folderId, int $newestItemId): void
+ public function read(?int $folderId, int $maxItemId): void
{
- if ($folderId === 0) {
- $folderId = null;
- }
- $this->itemService->readFolder($folderId, $newestItemId, $this->getUserId());
+ $folderId = $folderId === 0 ? null : $folderId;
+
+ $this-