From 6af375c67d8688bfa46b2ca2e111019e3680d7f1 Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Tue, 9 Feb 2021 20:09:11 +0100 Subject: [PATCH] MongoDB: Handle errors --- adminer/drivers/mongo.inc.php | 25 +++++++++++++++---------- changes.txt | 1 + 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/adminer/drivers/mongo.inc.php b/adminer/drivers/mongo.inc.php index 2f86539b..db43a67d 100644 --- a/adminer/drivers/mongo.inc.php +++ b/adminer/drivers/mongo.inc.php @@ -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'); } } diff --git a/changes.txt b/changes.txt index f1c43217..f561c7b8 100644 --- a/changes.txt +++ b/changes.txt @@ -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):