diff options
author | Robin Appelman <robin@icewind.nl> | 2018-08-09 15:19:23 +0200 |
---|---|---|
committer | Robin Appelman <robin@icewind.nl> | 2018-08-09 15:20:55 +0200 |
commit | 5e9d6b1585535baf1024d75ce26246b489140a7f (patch) | |
tree | e25aea9677bd65484d78f3f9b28e56527dc7e414 /lib | |
parent | 0757c5298035eebb1b304bff1f1bc2025aa2bf91 (diff) | |
download | nextcloud-server-5e9d6b1585535baf1024d75ce26246b489140a7f.tar.gz nextcloud-server-5e9d6b1585535baf1024d75ce26246b489140a7f.zip |
use insertIfNotExists to store new mimetypes.
Also throw an error if we can't find the mimetype after insert
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/Files/Type/Loader.php | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/lib/private/Files/Type/Loader.php b/lib/private/Files/Type/Loader.php index 2b15c9b6e13..41c561dcd22 100644 --- a/lib/private/Files/Type/Loader.php +++ b/lib/private/Files/Type/Loader.php @@ -114,20 +114,9 @@ class Loader implements IMimeTypeLoader { * @param int inserted ID */ protected function store($mimetype) { - try { - $qb = $this->dbConnection->getQueryBuilder(); - $qb->insert('mimetypes') - ->values([ - 'mimetype' => $qb->createNamedParameter($mimetype) - ]); - $qb->execute(); - } catch (UniqueConstraintViolationException $e) { - if ($this->dbConnection->inTransaction()) { - // if we're inside a transaction we can't recover safely - throw $e; - } - // something inserted it before us - } + $this->dbConnection->insertIfNotExist('*PREFIX*mimetypes', [ + 'mimetype' => $mimetype + ]); $fetch = $this->dbConnection->getQueryBuilder(); $fetch->select('id') @@ -137,6 +126,10 @@ class Loader implements IMimeTypeLoader { )); $row = $fetch->execute()->fetch(); + if (!$row) { + throw new \Exception("Failed to get mimetype id for $mimetype after trying to store it"); + } + $this->mimetypes[$row['id']] = $mimetype; $this->mimetypeIds[$mimetype] = $row['id']; return $row['id']; |