*/
class FileSetManager extends APIModule {
- public function getFileSets($criteria, $limit_val = 0, $offset_val = 0) {
+ public function getFileSets($criteria, $limit_val = 0, $offset_val = 0, $unique_vals = false) {
$limit = '';
if (is_int($limit_val) && $limit_val > 0) {
$limit = ' LIMIT ' . $limit_val;
$offset = ' OFFSET ' . $offset_val;
}
$where = Database::getWhere($criteria);
-
- $sql = 'SELECT FileSet.*
+ if ($unique_vals) {
+ $sql = '
+SELECT
+ fs.FileSetId AS filesetid,
+ fs.FileSet AS fileset,
+ fs.Md5 AS md5,
+ fs.CreateTime AS createtime,
+ fs.Content AS content
+FROM (
+ SELECT
+ FileSet.*,
+ ROW_NUMBER() OVER (PARTITION BY FileSet ORDER BY CreateTime DESC) AS pos
+ FROM FileSet
+ ' . $where['where'] . '
+) AS fs
+WHERE fs.pos=1 '
+ . $limit . $offset;
+ } else {
+ $sql = 'SELECT FileSet.*
FROM FileSet '
-. $where['where'] . $limit . $offset;
+ . $where['where'] . $limit . $offset;
+ }
$statement = Database::runQuery($sql, $where['params']);
return $statement->fetchAll(PDO::FETCH_OBJ);
$content = $this->Request->contains('content') && $misc->isValidNameList($this->Request['content']) ? $this->Request['content'] : '';
$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;
+ $unique_filesets = $this->Request->contains('unique_filesets') && $misc->isValidBooleanTrue($this->Request['unique_filesets']) ? true : false;
$result = $this->getModule('bconsole')->bconsoleCommand(
$this->director,
['.fileset']
];
}
- $filesets = $this->getModule('fileset')->getFileSets($params, $limit, $offset);
+ $filesets = $this->getModule('fileset')->getFileSets(
+ $params,
+ $limit,
+ $offset,
+ $unique_filesets
+ );
$this->output = $filesets;
$this->error = FileSetError::ERROR_NO_ERRORS;
} else {
"type": "string",
"pattern": "[a-zA-Z0-9:.-_ ]+"
}
+ },
+ {
+ "name": "unique_filesets",
+ "in": "query",
+ "required": false,
+ "description": "Display only latest unique filesets without taking into account fileset versions.",
+ "schema": {
+ "type": "boolean"
+ }
}
]
}