*/
class JobManager extends APIModule {
- public function getJobs($criteria = array(), $limit_val = null, $sort_col = 'JobId', $sort_order = 'ASC') {
+ public function getJobs($criteria = array(), $limit_val = null, $offset_val = 0, $sort_col = 'JobId', $sort_order = 'ASC') {
$db_params = $this->getModule('api_config')->getConfig('db');
if ($db_params['type'] === Database::PGSQL_TYPE) {
$sort_col = strtolower($sort_col);
if(is_int($limit_val) && $limit_val > 0) {
$limit = ' LIMIT ' . $limit_val;
}
+ $offset = '';
+ if (is_int($offset_val) && $offset_val > 0) {
+ $offset = ' OFFSET ' . $offset_val;
+ }
$where = Database::getWhere($criteria);
LEFT JOIN Client USING (ClientId)
LEFT JOIN Pool USING (PoolId)
LEFT JOIN FileSet USING (FilesetId)'
-. $where['where'] . $order . $limit;
+. $where['where'] . $order . $limit . $offset;
return JobRecord::finder()->findAllBySql($sql, $where['params']);
}
*
* @param array $criteria criteria in nested array format (@see Databaes::getWhere)
* @param integer $limit_val maximum number of elements to return
+ * @param integer $offset_val query offset number
* @param string $sort_col column to sort
* @param string $sort_order sort order (asc - ascending, desc - descending)
* @param string $group_by column to group
* @param integer $group_limit maximum number of elements in one group
* @return array object list
*/
- public function getObjects($criteria = array(), $limit_val = null, $sort_col = 'ObjectId', $sort_order = 'DESC', $group_by = null, $group_limit = 0) {
+ public function getObjects($criteria = array(), $limit_val = null, $offset_val = 0, $sort_col = 'ObjectId', $sort_order = 'DESC', $group_by = null, $group_limit = 0) {
$db_params = $this->getModule('api_config')->getConfig('db');
if ($db_params['type'] === Database::PGSQL_TYPE) {
$sort_col = strtolower($sort_col);
$limit = '';
if(is_int($limit_val) && $limit_val > 0) {
$limit = sprintf(
- ' LIMIT %s',
+ ' LIMIT %d',
$limit_val
);
}
+ $offset = '';
+ if (is_int($offset_val) && $offset_val > 0) {
+ $offset = sprintf(
+ ' OFFSET %d',
+ $offset_val
+ );
+ }
$where = Database::getWhere($criteria);
Job.Name as jobname
FROM Object
LEFT JOIN Job USING (JobId) '
-. $where['where'] . $order . $limit;
+. $where['where'] . $order . $limit . $offset;
$result = ObjectRecord::finder()->findAllBySql($sql, $where['params']);
Database::groupBy($group_by, $result, $group_limit);
*/
class VolumeManager extends APIModule {
- public function getVolumes($criteria = array(), $limit_val = 0) {
+ public function getVolumes($criteria = array(), $limit_val = 0, $offset_val = 0) {
$order_pool_id = 'PoolId';
$order_volume = 'VolumeName';
$db_params = $this->getModule('api_config')->getConfig('db');
if(is_int($limit_val) && $limit_val > 0) {
$limit = " LIMIT $limit_val ";
}
+ $offset = '';
+ if (is_int($offset_val) && $offset_val > 0) {
+ $offset = ' OFFSET ' . $offset_val;
+ }
$where = Database::getWhere($criteria);
LEFT JOIN Pool AS pool2 ON Media.ScratchPoolId = pool2.PoolId
LEFT JOIN Pool AS pool3 ON Media.RecyclePoolId = pool3.PoolId
LEFT JOIN Storage USING (StorageId)
-' . $where['where'] . $order . $limit;
+' . $where['where'] . $order . $limit . $offset;
$volumes = VolumeRecord::finder()->findAllBySql($sql, $where['params']);
$this->setExtraVariables($volumes);
return $volumes;
public function get() {
$misc = $this->getModule('misc');
- $limit = $this->Request->contains('limit') ? intval($this->Request['limit']) : 0;
+ $limit = $this->Request->contains('limit') && $misc->isValidInteger($this->Request['limit']) ? (int)$this->Request['limit'] : 0;
+ $offset = $this->Request->contains('offset') && $misc->isValidInteger($this->Request['offset']) ? (int)$this->Request['offset'] : 0;
$jobstatus = $this->Request->contains('jobstatus') ? $this->Request['jobstatus'] : '';
$level = $this->Request->contains('level') && $misc->isValidJobLevel($this->Request['level']) ? $this->Request['level'] : '';
$type = $this->Request->contains('type') && $misc->isValidJobType($this->Request['type']) ? $this->Request['type'] : '';
$result = $this->getModule('job')->getJobs(
$params,
$limit,
+ $offset,
$order_by,
$order_direction
);
public function get() {
$misc = $this->getModule('misc');
- $limit = $this->Request->contains('limit') ? intval($this->Request['limit']) : 0;
+ $limit = $this->Request->contains('limit') && $misc->isValidInteger($this->Request['limit']) ? (int)$this->Request['limit'] : 0;
+ $offset = $this->Request->contains('offset') && $misc->isValidInteger($this->Request['offset']) ? (int)$this->Request['offset'] : 0;
$objecttype = $this->Request->contains('objecttype') && $misc->isValidName($this->Request['objecttype']) ? $this->Request['objecttype'] : null;
$objectname = $this->Request->contains('objectname') && $misc->isValidName($this->Request['objectname']) ? $this->Request['objectname'] : null;
$objectcategory = $this->Request->contains('objectcategory') && $misc->isValidName($this->Request['objectcategory']) ? $this->Request['objectcategory'] : null;
$objects = $this->getModule('object')->getObjects(
$params,
$limit,
+ $offset,
$order_by_lc,
$order_direction,
$group_by,
*/
class Volumes extends BaculumAPIServer {
public function get() {
- $limit = $this->Request->contains('limit') ? intval($this->Request['limit']) : 0;
- $result = $this->getModule('volume')->getVolumes(array(), $limit);
+ $misc = $this->getModule('misc');
+ $limit = $this->Request->contains('limit') && $misc->isValidInteger($this->Request['limit']) ? (int)$this->Request['limit'] : 0;
+ $offset = $this->Request->contains('offset') && $misc->isValidInteger($this->Request['offset']) ? (int)$this->Request['offset'] : 0;
+ $result = $this->getModule('volume')->getVolumes(array(), $limit, $offset);
$this->output = $result;
$this->error = VolumeError::ERROR_NO_ERRORS;
}
"type": "integer"
}
},
+ "Offset": {
+ "name": "offset",
+ "in": "query",
+ "description": "Items offset",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ }
+ },
"ClientId": {
"name": "clientid",
"in": "path",
{
"$ref": "#/components/parameters/Limit"
},
+ {
+ "$ref": "#/components/parameters/Offset"
+ },
{
"name": "name",
"in": "query",
}
}
},
- "parameters": [{
- "$ref": "#/components/parameters/Limit"
- }]
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/Limit"
+ },
+ {
+ "$ref": "#/components/parameters/Offset"
+ }
+ ]
}
},
"/api/v2/volumes/{mediaid}": {
{
"$ref": "#/components/parameters/Limit"
},
+ {
+ "$ref": "#/components/parameters/Offset"
+ },
{
"name": "objecttype",
"in": "query",