*/
class ObjectManager extends APIModule
{
+
+ /**
+ * Allowed order columns for object overview.
+ */
+ public static $overview_order_columns = [
+ 'object' => ['objectname', 'endtime'],
+ 'general' => ['client', 'jobstatus', 'endtime']
+ ];
+
/**
* Object result in job and object endpoint can be displayed in on of the two views:
* - basic - display only base job and object properties
$limit = is_int($limit_val) && $limit_val > 0 ? ' LIMIT ' . $limit_val : '';
$offset = is_int($offset_val) && $offset_val > 0 ? ' OFFSET ' . $offset_val : '';
+ $sort_col_i = strtolower($sort_col);
$db_params = $this->getModule('api_config')->getConfig('db');
if ($db_params['type'] === Database::PGSQL_TYPE) {
- $sort_col = strtolower($sort_col);
+ $sort_col = $sort_col_i;
}
// default sorting for objects
if (empty($sort_col)) {
$sort_col = 'JobTDate';
+ } elseif (in_array($sort_col_i, ObjectManager::$overview_order_columns['object'])) {
+ $obj_order .= sprintf(',%s %s', $sort_col, $sort_order);
+ } elseif (in_array($sort_col_i, ObjectManager::$overview_order_columns['general'])) {
+ $file_order .= sprintf(',%s %s', $sort_col, $sort_order);
}
$order = sprintf(
'ORDER BY %s %s ',
Object.JobId AS jobid,
JobTDate AS jobtdate,
Job.StartTime AS starttime,
+ Job.EndTime AS endtime,
ObjectCategory AS objectcategory,
ObjectStatus AS objectstatus,
ObjectSource AS objectsource,
Job.Level AS level,
JobTDate AS jobtdate,
StartTime AS starttime,
+ EndTime AS endtime,
JobStatus AS jobstatus,
JobBytes AS jobbytes,
JobFiles AS jobfiles
Object.JobId AS jobid,
JobTDate AS jobtdate,
StartTime AS starttime,
+ EndTime AS endtime,
ObjectCategory AS objectcategory,
ObjectStatus AS objectstatus,
ObjectSource AS objectsource,
jobid,
AAA.jobtdate,
starttime,
+ endtime,
objectcategory,
objectstatus,
objectsource,
Job.Level AS level,
JobTDate AS jobtdate,
StartTime AS starttime,
+ EndTime AS endtime,
JobStatus AS jobstatus,
JobBytes AS jobbytes,
JobFiles AS jobfiles
level,
AAA.jobtdate,
starttime,
+ endtime,
jobstatus,
jobbytes,
jobfiles
*/
class ObjectsOverview extends BaculumAPIServer {
- /**
- * Allowed order columns for object overview.
- */
- private $overview_order_columns = [
- 'objectname',
- 'client',
- 'jobstatus'
- ];
-
public function get() {
$misc = $this->getModule('misc');
$limit = $this->Request->contains('limit') && $misc->isValidInteger($this->Request['limit']) ? (int)$this->Request['limit'] : 0;
if (!empty($order_by)) {
$order_by_lc = strtolower($order_by);
- if (!in_array($order_by_lc, $this->overview_order_columns)) {
+ if (!in_array($order_by_lc, ObjectManager::$overview_order_columns['object']) && !in_array($order_by_lc, ObjectManager::$overview_order_columns['general'])) {
$this->output = ObjectError::MSG_ERROR_INVALID_PROPERTY;
$this->error = ObjectError::ERROR_INVALID_PROPERTY;
return;
"type": "string",
"description": "Job start time"
},
+ "endtime": {
+ "type": "string",
+ "description": "Job end time"
+ },
"objectcategory": {
"type": "string",
"description": "Object category"
"type": "string",
"description": "Job start time"
},
+ "endtime": {
+ "type": "string",
+ "description": "Job end time"
+ },
"jobstatus": {
"type": "string",
"description": "Job status"
"name": "order_by",
"in": "query",
"required": false,
- "description": "Sort by selected object property (default jobtdate). There can be one from the following properties: objectname, client, jobstatus.",
+ "description": "Sort by selected object property (default jobtdate). There can be one from the following properties: objectname, client, jobstatus, endtime.",
"schema": {
"type": "string"
}