]> git.joonet.de Git - adminer.git/commitdiff
MongoDB: Handle errors
authorJakub Vrana <jakub@vrana.cz>
Tue, 9 Feb 2021 19:09:11 +0000 (20:09 +0100)
committerJakub Vrana <jakub@vrana.cz>
Tue, 9 Feb 2021 19:09:11 +0000 (20:09 +0100)
adminer/drivers/mongo.inc.php
changes.txt

index 2f86539b302ce004b50085dacb510a1cef93f644..db43a67da30fee06a1f02e3de340f45b1eecea29 100644 (file)
@@ -6,7 +6,7 @@ if (isset($_GET["mongo"])) {
 
        if (class_exists('MongoDB\Driver\Manager')) {
                class Min_DB {
-                       var $extension = "MongoDB", $server_info = MONGODB_VERSION, $error, $last_id;
+                       var $extension = "MongoDB", $server_info = MONGODB_VERSION, $affected_rows, $error, $last_id;
                        /** @var MongoDB\Driver\Manager */
                        var $_link;
                        var $_db, $_db_name;
@@ -26,6 +26,17 @@ if (isset($_GET["mongo"])) {
                                        return array();
                                }
                        }
+                       
+                       function executeBulkWrite($namespace, $bulk, $counter) {
+                               try {
+                                       $results = $this->_link->executeBulkWrite($namespace, $bulk);
+                                       $this->affected_rows = $results->$counter();
+                                       return true;
+                               } catch (Exception $e) {
+                                       $this->error = $e->getMessage();
+                                       return false;
+                               }
+                       }
 
                        function query($query) {
                                return false;
@@ -156,9 +167,7 @@ if (isset($_GET["mongo"])) {
                                        $update['$unset'] = $removeFields;
                                }
                                $bulk->update($where, $update, array('upsert' => false));
-                               $results = $connection->_link->executeBulkWrite("$db.$table", $bulk);
-                               $connection->affected_rows = $results->getModifiedCount();
-                               return true;
+                               return $connection->executeBulkWrite("$db.$table", $bulk, 'getModifiedCount');
                        }
 
                        function delete($table, $queryWhere, $limit = 0) {
@@ -168,9 +177,7 @@ if (isset($_GET["mongo"])) {
                                $class = 'MongoDB\Driver\BulkWrite';
                                $bulk = new $class(array());
                                $bulk->delete($where, array('limit' => $limit));
-                               $results = $connection->_link->executeBulkWrite("$db.$table", $bulk);
-                               $connection->affected_rows = $results->getDeletedCount();
-                               return true;
+                               return $connection->executeBulkWrite("$db.$table", $bulk, 'getDeletedCount');
                        }
 
                        function insert($table, $set) {
@@ -182,9 +189,7 @@ if (isset($_GET["mongo"])) {
                                        unset($set['_id']);
                                }
                                $bulk->insert($set);
-                               $results = $connection->_link->executeBulkWrite("$db.$table", $bulk);
-                               $connection->affected_rows = $results->getInsertedCount();
-                               return true;
+                               return $connection->executeBulkWrite("$db.$table", $bulk, 'getInsertedCount');
                        }
                }
 
index f1c43217aa88aba92c45a022449b60c742d7aa66..f561c7b8165d28b5c0d9f451bb01533f1b200c3d 100644 (file)
@@ -15,6 +15,7 @@ Oracle: Alter indexes
 Oracle: Count tables
 Oracle: Import from CSV
 Oracle: Fix column size with string type
+MongoDB: Handle errors
 SimpleDB, Firebird, ClickHouse: Move to plugin
 
 Adminer 4.7.9 (released 2021-02-07):