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
*/
protected function store($mimetype) {
try {
$qb = $this->dbConnection->getQueryBuilder();
$qb->insert('mimetypes')
->values([
'mimetype' => $qb->createNamedParameter($mimetype)
$this->dbConnection->insertIfNotExist('*PREFIX*mimetypes', [
'mimetype' => $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->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'];