*/
class ClientManager extends APIModule {
- /**
- * SQL query builder.
- *
- * @var TDbCommandBuilder command builder
- */
- private static $query_builder;
-
- /**
- * Get the SQL query builder instance.
- * Note: Singleton
- *
- * @return TDbCommandBuilder command builder
- */
- private function getQueryBuilder() {
- if (is_null(self::$query_builder)) {
- $record = ClientRecord::finder();
- $connection = $record->getDbConnection();
- $tableInfo = $record->getRecordGateway()->getRecordTableInfo($record);
- self::$query_builder = $tableInfo->createCommandBuilder($connection);
- }
- return self::$query_builder;
- }
-
/**
* Get client list.
*
FROM Client
' . $where['where'] . $offset . $limit;
- $builder = $this->getQueryBuilder();
- if (count($where['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->query($sql);
-
- } else {
- $command = $builder->applyCriterias($sql, $where['params']);
- $statement = $command->getPdoStatement();
- $command->query();
- }
+ $statement = Database::runQuery($sql, $where['params']);
return $statement->fetchAll(\PDO::FETCH_OBJ);
}
use Baculum\Common\Modules\Logging;
use Baculum\Common\Modules\Errors\DatabaseError;
+use Baculum\API\Modules\JobRecord;
use Prado\Data\TDbConnection;
use Prado\Exceptions\TDbException;
const MYSQL_TYPE = 'mysql';
const SQLITE_TYPE = 'sqlite';
+ /**
+ * SQL query builder.
+ *
+ * @var TDbCommandBuilder command builder
+ */
+ private static $query_builder;
+
/**
* Check/test connection to database.
*
$result = $new_result;
}
}
+
+ /**
+ * Get the SQL query builder instance.
+ * Note: Singleton
+ *
+ * @param object $record Active Record object
+ * @return TDbCommandBuilder command builder
+ */
+ private static function getQueryBuilder() {
+ if (is_null(self::$query_builder)) {
+ $record = JobRecord::finder();
+ $connection = $record->getDbConnection();
+ $tableInfo = $record->getRecordGateway()->getRecordTableInfo($record);
+ self::$query_builder = $tableInfo->createCommandBuilder($connection);
+ }
+ return self::$query_builder;
+ }
+
+ /**
+ * Run query and get SQL query statement.
+ *
+ * @param string $sql SQL query
+ * @param array $params SQL query params
+ * @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()
+ * 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->query($sql);
+
+ } else {
+ $command = $builder->applyCriterias($sql, $params);
+ $statement = $command->getPdoStatement();
+ $command->query();
+ }
+ return $statement;
+ }
}
?>
*/
class JobManager extends APIModule {
- /**
- * SQL query builder.
- *
- * @var TDbCommandBuilder command builder
- */
- private static $query_builder;
-
/**
* Job statuses in some parts are not compatible with rest of the API.
* NOTE: Used here are also internal job statuses that are not used in the Catalog
const JOB_RESULT_VIEW_BASIC = 'basic';
const JOB_RESULT_VIEW_FULL = 'full';
- /**
- * Get the SQL query builder instance.
- * Note: Singleton
- *
- * @return TDbCommandBuilder command builder
- */
- private function getQueryBuilder() {
- if (is_null(self::$query_builder)) {
- $record = JobRecord::finder();
- $connection = $record->getDbConnection();
- $tableInfo = $record->getRecordGateway()->getRecordTableInfo($record);
- self::$query_builder = $tableInfo->createCommandBuilder($connection);
- }
- return self::$query_builder;
- }
-
/**
* Get job status groups.
*
LEFT JOIN FileSet USING (FilesetId)'
. $where['where'] . $order . $limit . $offset;
- $builder = $this->getQueryBuilder();
- $command = $builder->applyCriterias($sql, $where['params']);
- $statement = $command->getPdoStatement();
- $command->query();
+ $statement = Database::runQuery($sql, $where['params']);
$result = [];
if ($mode == self::JOB_RESULT_MODE_OVERVIEW) {
// Overview mode.
(SELECT COUNT(1) FROM Job ' . (!empty($where['where']) ? ' WHERE ' . $where['where'] : '') . ') AS all
';
- $builder = $this->getQueryBuilder();
- if (count($where['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->query($sql);
-
- } else {
- $command = $builder->applyCriterias($sql, $where['params']);
- $statement = $command->getPdoStatement();
- $command->query();
- }
+ $statement = Database::runQuery($sql, $where['params']);
return $statement->fetch(\PDO::FETCH_ASSOC);
}
namespace Baculum\API\Modules;
+use Baculum\API\Modules\Database;
+
/**
* Object manager module.
*
'ObjectCount'
];
- /**
- * SQL query builder.
- *
- * @var TDbCommandBuilder command builder
- */
- private static $query_builder;
-
/**
* Object result record view.
* Views:
const OBJ_RESULT_VIEW_BASIC = 'basic';
const OBJ_RESULT_VIEW_FULL = 'full';
-
- /**
- * Get the SQL query builder instance.
- * Note: Singleton
- *
- * @return TDbCommandBuilder command builder
- */
- private static function getQueryBuilder() {
- if (is_null(self::$query_builder)) {
- $record = ObjectRecord::finder();
- $connection = $record->getDbConnection();
- $tableInfo = $record->getRecordGateway()->getRecordTableInfo($record);
- self::$query_builder = $tableInfo->createCommandBuilder($connection);
- }
- return self::$query_builder;
- }
-
/**
* Get objects.
*
FROM Object
LEFT JOIN Job USING (JobId) '
. $where['where'] . $order . $limit . $offset;
-
- $builder = $this->getQueryBuilder();
- $command = $builder->applyCriterias($sql, $where['params']);
- $statement = $command->getPdoStatement();
- $command->query();
+ $statement = Database::runQuery($sql, $where['params']);
$result = $statement->fetchAll(\PDO::FETCH_OBJ);
Database::groupBy($group_by, $result, $group_limit);
return $result;
FROM Object
JOIN Job USING (JobId) '
. $where['where'];
- $builder = $this->getQueryBuilder();
- $command = $builder->applyCriterias($sql, $where['params']);
- $statement = $command->getPdoStatement();
- $command->query();
+ $statement = Database::runQuery($sql, $where['params']);
return $statement->fetchAll(\PDO::FETCH_ASSOC);
}