diff options
author | blizzz <blizzz@arthur-schiwon.de> | 2018-08-14 00:16:00 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-14 00:16:00 +0300 |
commit | c938ea656953cf5cd1107f134012c768c2b3ee9c (patch) | |
tree | 67b6e6018ded88983ce15e9c874a899f35a28e74 /lib | |
parent | 5327e3b4ce6b372c77f84d693c60ae560439652e (diff) | |
parent | 706813ab0805f1c40ad6f9f1d355f4b4d0412c68 (diff) |
Merge pull request #10620 from nextcloud/mimetype-insert-if-not-exists-13
[13] use insertIfNotExists to store new mimetypes.
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']; |