diff options
author | Ole Ostergaard <ole.ostergaard@knime.com> | 2019-01-21 17:54:16 +0100 |
---|---|---|
committer | Ole Ostergaard <ole.c.ostergaard@gmail.com> | 2019-03-21 11:42:00 +0100 |
commit | a48ea8cffa68540b704bead86456008d6978a91b (patch) | |
tree | ae136c49e1a8c24744a1d21c65b777a0ea9b53c7 /lib | |
parent | 0155edc195ed278a2a4d06c15295433ae0ae8445 (diff) | |
download | nextcloud-server-a48ea8cffa68540b704bead86456008d6978a91b.tar.gz nextcloud-server-a48ea8cffa68540b704bead86456008d6978a91b.zip |
Add insertIgnoreConflict to Adapter and use it for for executing the file locking.
Signed-off-by: Ole Ostergaard <ole.c.ostergaard@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/DB/Adapter.php | 13 | ||||
-rw-r--r-- | lib/private/DB/Connection.php | 4 | ||||
-rw-r--r-- | lib/private/Lock/DBLockingProvider.php | 12 |
3 files changed, 18 insertions, 11 deletions
diff --git a/lib/private/DB/Adapter.php b/lib/private/DB/Adapter.php index b9a5f272c57..139b7828596 100644 --- a/lib/private/DB/Adapter.php +++ b/lib/private/DB/Adapter.php @@ -126,4 +126,17 @@ class Adapter { return 0; } } + + public function insertIgnoreConflict($table, $input) : int { + try { + $builder = $this->conn->getQueryBuilder(); + $builder->insert($table); + foreach($input as $key => $value) { + $builder->setValue($key, $builder->createNamedParameter($value)); + } + return $builder->execute(); + } catch(UniqueConstraintViolationException $e) { + return 0; + } + } } diff --git a/lib/private/DB/Connection.php b/lib/private/DB/Connection.php index c63ef0067c1..12a0af6121e 100644 --- a/lib/private/DB/Connection.php +++ b/lib/private/DB/Connection.php @@ -257,6 +257,10 @@ class Connection extends ReconnectWrapper implements IDBConnection { return $this->adapter->insertIfNotExist($table, $input, $compare); } + public function insertIgnoreConflict($table, $input) : int { + return $this->adapter->insertIgnoreConflict($table, $input); + } + private function getType($value) { if (is_bool($value)) { return IQueryBuilder::PARAM_BOOL; diff --git a/lib/private/Lock/DBLockingProvider.php b/lib/private/Lock/DBLockingProvider.php index 6d9c8f1b3d1..a1859047fe6 100644 --- a/lib/private/Lock/DBLockingProvider.php +++ b/lib/private/Lock/DBLockingProvider.php @@ -134,17 +134,7 @@ class DBLockingProvider extends AbstractLockingProvider { protected function initLockField(string $path, int $lock = 0): int { $expire = $this->getExpireTime(); - - try { - $builder = $this->connection->getQueryBuilder(); - return $builder->insert('file_locks') - ->setValue('key', $builder->createNamedParameter($path)) - ->setValue('lock', $builder->createNamedParameter($lock)) - ->setValue('ttl', $builder->createNamedParameter($expire)) - ->execute(); - } catch(UniqueConstraintViolationException $e) { - return 0; - } + return $this->connection->insertIgnoreConflict('file_locks', ['key' => $path, 'lock' => $lock, 'ttl' => $expire]); } /** |