unique key violation exception is thrown as \Exception thus we need to check the reason
This commit is contained in:
parent
bb38c41b2f
commit
b09210655e
@ -4,7 +4,6 @@ declare(strict_types=1);
|
|||||||
namespace OCA\GPodderSync\Controller;
|
namespace OCA\GPodderSync\Controller;
|
||||||
|
|
||||||
use DateTime;
|
use DateTime;
|
||||||
use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
|
|
||||||
use GuzzleHttp\Psr7\Response;
|
use GuzzleHttp\Psr7\Response;
|
||||||
use OCA\GPodderSync\Core\EpisodeAction\EpisodeActionReader;
|
use OCA\GPodderSync\Core\EpisodeAction\EpisodeActionReader;
|
||||||
use OCA\GPodderSync\Db\EpisodeAction\EpisodeActionEntity;
|
use OCA\GPodderSync\Db\EpisodeAction\EpisodeActionEntity;
|
||||||
@ -12,6 +11,7 @@ use OCA\GPodderSync\Db\EpisodeAction\EpisodeActionRepository;
|
|||||||
use OCA\GPodderSync\Db\EpisodeAction\EpisodeActionWriter;
|
use OCA\GPodderSync\Db\EpisodeAction\EpisodeActionWriter;
|
||||||
use OCP\AppFramework\Controller;
|
use OCP\AppFramework\Controller;
|
||||||
use OCP\AppFramework\Http\JSONResponse;
|
use OCP\AppFramework\Http\JSONResponse;
|
||||||
|
use OCP\DB\Exception;
|
||||||
use OCP\IRequest;
|
use OCP\IRequest;
|
||||||
|
|
||||||
class EpisodeActionController extends Controller {
|
class EpisodeActionController extends Controller {
|
||||||
@ -66,10 +66,12 @@ class EpisodeActionController extends Controller {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
return $this->episodeActionWriter->save($episodeActionEntity);
|
return $this->episodeActionWriter->save($episodeActionEntity);
|
||||||
} catch (UniqueConstraintViolationException $ex) {
|
} catch (\Exception $exception) {
|
||||||
$IdEpisodeActionEntityToUpdate = $this->episodeActionRepository->findByEpisode($episodeAction->getEpisode(), $this->userId)->getId();
|
if ($exception->getReason() === Exception::REASON_UNIQUE_CONSTRAINT_VIOLATION) {
|
||||||
$episodeActionEntity->setId($IdEpisodeActionEntityToUpdate);
|
$idEpisodeActionEntityToUpdate = $this->episodeActionRepository->findByEpisode($episodeAction->getEpisode(), $this->userId)->getId();
|
||||||
return $this->episodeActionWriter->update($episodeActionEntity);
|
$episodeActionEntity->setId($idEpisodeActionEntityToUpdate);
|
||||||
|
return $this->episodeActionWriter->update($episodeActionEntity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,7 +83,7 @@ class EpisodeActionController extends Controller {
|
|||||||
* @param int $since
|
* @param int $since
|
||||||
* @return JSONResponse
|
* @return JSONResponse
|
||||||
*/
|
*/
|
||||||
public function list(int $since): JSONResponse {
|
public function list(int $since): JSONResponse {
|
||||||
$sinceDatetime = $this->createDateTimeFromTimestamp($since);
|
$sinceDatetime = $this->createDateTimeFromTimestamp($since);
|
||||||
return new JSONResponse([
|
return new JSONResponse([
|
||||||
"actions" => $this->episodeActionRepository->findAll($sinceDatetime, $this->userId),
|
"actions" => $this->episodeActionRepository->findAll($sinceDatetime, $this->userId),
|
||||||
|
@ -3,10 +3,10 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace OCA\GPodderSync\Core\SubscriptionChange;
|
namespace OCA\GPodderSync\Core\SubscriptionChange;
|
||||||
|
|
||||||
use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
|
|
||||||
use OCA\GPodderSync\Db\SubscriptionChange\SubscriptionChangeEntity;
|
use OCA\GPodderSync\Db\SubscriptionChange\SubscriptionChangeEntity;
|
||||||
use OCA\GPodderSync\Db\SubscriptionChange\SubscriptionChangeRepository;
|
use OCA\GPodderSync\Db\SubscriptionChange\SubscriptionChangeRepository;
|
||||||
use OCA\GPodderSync\Db\SubscriptionChange\SubscriptionChangeWriter;
|
use OCA\GPodderSync\Db\SubscriptionChange\SubscriptionChangeWriter;
|
||||||
|
use OCP\DB\Exception;
|
||||||
|
|
||||||
class SubscriptionChangeSaver {
|
class SubscriptionChangeSaver {
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ class SubscriptionChangeSaver {
|
|||||||
$this->subscriptionChangeRequestParser = $subscriptionChangeRequestParser;
|
$this->subscriptionChangeRequestParser = $subscriptionChangeRequestParser;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function saveSubscriptionChanges(string $urlsSubscribed, string $urlsUnsubscribed, string $userId) : void {
|
public function saveSubscriptionChanges(string $urlsSubscribed, string $urlsUnsubscribed, string $userId): void {
|
||||||
$subscriptionChanges = $this->subscriptionChangeRequestParser->createSubscriptionChangeList($urlsSubscribed, $urlsUnsubscribed);
|
$subscriptionChanges = $this->subscriptionChangeRequestParser->createSubscriptionChangeList($urlsSubscribed, $urlsUnsubscribed);
|
||||||
foreach ($subscriptionChanges as $urlChangedSubscriptionStatus) {
|
foreach ($subscriptionChanges as $urlChangedSubscriptionStatus) {
|
||||||
$subscriptionChangeEntity = new SubscriptionChangeEntity();
|
$subscriptionChangeEntity = new SubscriptionChangeEntity();
|
||||||
@ -48,10 +48,12 @@ class SubscriptionChangeSaver {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
$this->subscriptionChangeWriter->create($subscriptionChangeEntity);
|
$this->subscriptionChangeWriter->create($subscriptionChangeEntity);
|
||||||
} catch (UniqueConstraintViolationException $ex) {
|
} catch (\Exception $exception) {
|
||||||
$idEpisodeActionEntityToUpdate = $this->subscriptionChangeRepository->findByUrl($subscriptionChangeEntity->getUrl(), $userId)->getId();
|
if ($exception->getReason() === Exception::REASON_UNIQUE_CONSTRAINT_VIOLATION) {
|
||||||
$subscriptionChangeEntity->setId($idEpisodeActionEntityToUpdate);
|
$idEpisodeActionEntityToUpdate = $this->subscriptionChangeRepository->findByUrl($subscriptionChangeEntity->getUrl(), $userId)->getId();
|
||||||
$this->subscriptionChangeWriter->update($subscriptionChangeEntity);
|
$subscriptionChangeEntity->setId($idEpisodeActionEntityToUpdate);
|
||||||
|
$this->subscriptionChangeWriter->update($subscriptionChangeEntity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user