Merge pull request #10618 from nextcloud/mimetype-insert-if-not-exists

use insertIfNotExists to store new mimetypes.
This commit is contained in:
Roeland Jago Douma 2018-08-10 10:31:55 +02:00 committed by GitHub
commit a080c425cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 14 deletions

View File

@ -114,20 +114,9 @@ class Loader implements IMimeTypeLoader {
* @param int inserted ID * @param int inserted ID
*/ */
protected function store($mimetype) { protected function store($mimetype) {
try { $this->dbConnection->insertIfNotExist('*PREFIX*mimetypes', [
$qb = $this->dbConnection->getQueryBuilder(); 'mimetype' => $mimetype
$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
}
$fetch = $this->dbConnection->getQueryBuilder(); $fetch = $this->dbConnection->getQueryBuilder();
$fetch->select('id') $fetch->select('id')
@ -137,6 +126,10 @@ class Loader implements IMimeTypeLoader {
)); ));
$row = $fetch->execute()->fetch(); $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->mimetypes[$row['id']] = $mimetype;
$this->mimetypeIds[$mimetype] = $row['id']; $this->mimetypeIds[$mimetype] = $row['id'];
return $row['id']; return $row['id'];