diff options
Diffstat (limited to 'lib/Album/AlbumMapper.php')
-rw-r--r-- | lib/Album/AlbumMapper.php | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/lib/Album/AlbumMapper.php b/lib/Album/AlbumMapper.php index 6d119322..1084b550 100644 --- a/lib/Album/AlbumMapper.php +++ b/lib/Album/AlbumMapper.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace OCA\Photos\Album; +use Doctrine\DBAL\Exception\UniqueConstraintViolationException; +use OCA\Photos\Exception\AlreadyInAlbumException; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\Files\IMimeTypeLoader; use OCP\IDBConnection; @@ -138,13 +140,17 @@ class AlbumMapper { } public function addFile(int $albumId, int $fileId): void { - $query = $this->connection->getQueryBuilder(); - $query->insert("photos_albums_files") - ->values([ - "album_id" => $query->createNamedParameter($albumId, IQueryBuilder::PARAM_INT), - "file_id" => $query->createNamedParameter($fileId, IQueryBuilder::PARAM_INT) - ]); - $query->executeStatement(); + try { + $query = $this->connection->getQueryBuilder(); + $query->insert("photos_albums_files") + ->values([ + "album_id" => $query->createNamedParameter($albumId, IQueryBuilder::PARAM_INT), + "file_id" => $query->createNamedParameter($fileId, IQueryBuilder::PARAM_INT) + ]); + $query->executeStatement(); + } catch (UniqueConstraintViolationException $e) { + throw new AlreadyInAlbumException("File already in album", 0, $e); + } } public function removeFile(int $albumId, int $fileId): void { |