]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
baculum: Add method to execute SQL queries
authorMarcin Haba <marcin.haba@bacula.pl>
Tue, 21 Mar 2023 09:42:39 +0000 (10:42 +0100)
committerMarcin Haba <marcin.haba@bacula.pl>
Thu, 20 Apr 2023 10:00:25 +0000 (12:00 +0200)
gui/baculum/protected/API/Modules/Database.php

index 5826be2533942bb5455cdaf515a80f8513aa4721..35edac7cf0b0dd249fd011938019242be6ddfbd4 100644 (file)
@@ -280,7 +280,6 @@ class Database extends APIModule {
         * @return PDO statement.
         */
        public static function runQuery($sql, $params = []) {
-               $builder = self::getQueryBuilder();
                if (count($params) == 0) {
                        /**
                         * Please note that in case no params the TDbCommandBuilder::applyCriterias()
@@ -293,11 +292,40 @@ class Database extends APIModule {
                        $statement = $pdo->query($sql);
 
                } else {
+                       $builder = self::getQueryBuilder();
                        $command = $builder->applyCriterias($sql, $params);
                        $statement = $command->getPdoStatement();
                        $command->query();
                }
                return $statement;
        }
+
+       /**
+        * Execute SQL query.
+        *
+        * @param string $sql SQL query
+        * @param array $params SQL query params
+        * @return PDO statement.
+        */
+       public static function execute($sql, $params = []) {
+               if (count($params) == 0) {
+                       /**
+                        * Please note that in case no params the TDbCommandBuilder::applyCriterias()
+                        * returns empty the PDO statement handler. From this reason here
+                        * the query is called directly by PDO.
+                        */
+                       $connection = JobRecord::finder()->getDbConnection();
+                       $connection->setActive(true);
+                       $pdo = $connection->getPdoInstance();
+                       $statement = $pdo->exec($sql);
+
+               } else {
+                       $builder = self::getQueryBuilder();
+                       $command = $builder->applyCriterias($sql, $params);
+                       $statement = $command->getPdoStatement();
+                       $command->execute();
+               }
+               return $statement;
+       }
 }
 ?>