use insertifnotexists

This commit is contained in:
Robin Appelman 2016-01-20 12:40:57 +01:00
parent 483c6b68e2
commit 8a4c0829fb
1 changed files with 5 additions and 23 deletions

View File

@ -119,30 +119,12 @@ class UserMountCache implements IUserMountCache {
}
private function addToCache(ICachedMountInfo $mount) {
$builder = $this->connection->getQueryBuilder();
$query = $builder->insert('mounts')
->values([
'storage_id' => ':storage',
'root_id' => ':root',
'user_id' => ':user',
'mount_point' => ':mount'
]);
$query->setParameters([
':storage' => $mount->getStorageId(),
':root' => $mount->getRootId(),
':user' => $mount->getUser()->getUID(),
':mount' => $mount->getMountPoint()
$this->connection->insertIfNotExist('*PREFIX*mounts', [
'storage_id' => $mount->getStorageId(),
'root_id' => $mount->getRootId(),
'user_id' => $mount->getUser()->getUID(),
'mount_point' => $mount->getMountPoint()
]);
try {
$query->execute();
} catch (UniqueConstraintViolationException $e) {
// seems to mainly happen in tests
// can also happen during concurrent access but we can safely ignore it
// since inserting the same data twice will still result in the correct data being inserted
$this->logger->error('Duplicate entry while inserting mount');
$this->logger->logException($e);
}
}
private function setMountPoint(ICachedMountInfo $mount) {