2525
2626namespace OCA \Files_External \Service ;
2727
28+ use Doctrine \DBAL \Exception \UniqueConstraintViolationException ;
2829use OCP \DB \QueryBuilder \IQueryBuilder ;
2930use OCP \IDBConnection ;
3031use OCP \Security \ICrypto ;
@@ -300,12 +301,15 @@ public function setConfig($mountId, $key, $value) {
300301 if ($ key === 'password ' ) {
301302 $ value = $ this ->encryptValue ($ value );
302303 }
303- $ count = $ this ->connection ->insertIfNotExist ('*PREFIX*external_config ' , [
304- 'mount_id ' => $ mountId ,
305- 'key ' => $ key ,
306- 'value ' => $ value
307- ], ['mount_id ' , 'key ' ]);
308- if ($ count === 0 ) {
304+
305+ try {
306+ $ builder = $ this ->connection ->getQueryBuilder ();
307+ $ builder ->insert ('external_config ' )
308+ ->setValue ('mount_id ' , $ builder ->createNamedParameter ($ mountId , IQueryBuilder::PARAM_INT ))
309+ ->setValue ('key ' , $ builder ->createNamedParameter ($ key , IQueryBuilder::PARAM_STR ))
310+ ->setValue ('value ' , $ builder ->createNamedParameter ($ value , IQueryBuilder::PARAM_STR ))
311+ ->execute ();
312+ } catch (UniqueConstraintViolationException $ e ) {
309313 $ builder = $ this ->connection ->getQueryBuilder ();
310314 $ query = $ builder ->update ('external_config ' )
311315 ->set ('value ' , $ builder ->createNamedParameter ($ value , IQueryBuilder::PARAM_STR ))
@@ -321,13 +325,14 @@ public function setConfig($mountId, $key, $value) {
321325 * @param string $value
322326 */
323327 public function setOption ($ mountId , $ key , $ value ) {
324-
325- $ count = $ this ->connection ->insertIfNotExist ('*PREFIX*external_options ' , [
326- 'mount_id ' => $ mountId ,
327- 'key ' => $ key ,
328- 'value ' => json_encode ($ value )
329- ], ['mount_id ' , 'key ' ]);
330- if ($ count === 0 ) {
328+ try {
329+ $ builder = $ this ->connection ->getQueryBuilder ();
330+ $ builder ->insert ('external_options ' )
331+ ->setValue ('mount_id ' , $ builder ->createNamedParameter (\OCP \Share::SHARE_TYPE_REMOTE , IQueryBuilder::PARAM_INT ))
332+ ->setValue ('key ' , $ builder ->createNamedParameter ($ key , IQueryBuilder::PARAM_STR ))
333+ ->setValue ('value ' , $ builder ->createNamedParameter (json_encode ($ value ), IQueryBuilder::PARAM_STR ))
334+ ->execute ();
335+ } catch (UniqueConstraintViolationException $ e ) {
331336 $ builder = $ this ->connection ->getQueryBuilder ();
332337 $ query = $ builder ->update ('external_options ' )
333338 ->set ('value ' , $ builder ->createNamedParameter (json_encode ($ value ), IQueryBuilder::PARAM_STR ))
@@ -338,11 +343,16 @@ public function setOption($mountId, $key, $value) {
338343 }
339344
340345 public function addApplicable ($ mountId , $ type , $ value ) {
341- $ this ->connection ->insertIfNotExist ('*PREFIX*external_applicable ' , [
342- 'mount_id ' => $ mountId ,
343- 'type ' => $ type ,
344- 'value ' => $ value
345- ], ['mount_id ' , 'type ' , 'value ' ]);
346+ try {
347+ $ builder = $ this ->connection ->getQueryBuilder ();
348+ $ builder ->insert ('external_applicable ' )
349+ ->setValue ('mount_id ' , $ builder ->createNamedParameter ($ mountId ))
350+ ->setValue ('type ' , $ builder ->createNamedParameter ($ type ))
351+ ->setValue ('value ' , $ builder ->createNamedParameter ($ value ))
352+ ->execute ();
353+ } catch (UniqueConstraintViolationException $ e ) {
354+ // applicable exists already
355+ }
346356 }
347357
348358 public function removeApplicable ($ mountId , $ type , $ value ) {
0 commit comments