From c15bf759b92cc0ced78b197f78a15ad1b915dc2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=80=A1=E6=A0=8B?= Date: Fri, 26 Nov 2021 10:40:54 +0800 Subject: [PATCH] * code for task #44937. --- api/v1/entries/builds.php | 5 +--- api/v1/entries/executionbuilds.php | 41 ++++++++++++++++++++++++++++++ config/routes.php | 7 ++--- module/build/model.php | 5 ++-- module/execution/control.php | 5 ++-- 5 files changed, 52 insertions(+), 11 deletions(-) create mode 100644 api/v1/entries/executionbuilds.php diff --git a/api/v1/entries/builds.php b/api/v1/entries/builds.php index 4ffa3eb258..456bdfe179 100644 --- a/api/v1/entries/builds.php +++ b/api/v1/entries/builds.php @@ -33,10 +33,7 @@ class buildsEntry extends entry $result = array(); foreach($data->data->projectBuilds as $productID => $builds) { - foreach($builds as $build) - { - $result[] = $this->format($build, 'bugs:idList,stories:idList,deleted:bool'); - } + foreach($builds as $build) $result[] = $this->format($build, 'bugs:idList,stories:idList,deleted:bool'); } return $this->send(200, array('total' => count($result), 'builds' => $result)); diff --git a/api/v1/entries/executionbuilds.php b/api/v1/entries/executionbuilds.php new file mode 100644 index 0000000000..baa7de8e6a --- /dev/null +++ b/api/v1/entries/executionbuilds.php @@ -0,0 +1,41 @@ + + * @package entries + * @version 1 + * @link http://www.zentao.net + */ +class executionBuildsEntry extends entry +{ + /** + * GET method. + * + * @param int $executionID + * @access public + * @return void + */ + public function get($executionID = 0) + { + if(empty($executionID)) $executionID = $this->param('execution', 0); + if(empty($executionID)) return $this->sendError(400, "Need execution id."); + + $control = $this->loadController('execution', 'build'); + $control->build($executionID, $this->param('status', 'all'), $this->param('param', 0), $this->param('order', 't1.date_desc,t1.id_desc')); + $data = $this->getData(); + + if(!isset($data->status)) return $this->sendError(400, 'error'); + if(isset($data->status) and $data->status == 'fail') return $this->sendError(400, $data->message); + + $result = array(); + foreach($data->data->executionBuilds as $builds) + { + foreach($builds as $build) $result[] = $this->format($build, 'bugs:idList,stories:idList,deleted:bool'); + } + + return $this->send(200, array('total' => count($result), 'builds' => $result)); + } +} diff --git a/config/routes.php b/config/routes.php index 3384a81bf9..c804a94cf3 100644 --- a/config/routes.php +++ b/config/routes.php @@ -80,9 +80,10 @@ $routes['/todos/:id'] = 'todo'; $routes['/todos/:id/finish'] = 'todoFinish'; $routes['/todos/:id/activate'] = 'todoActivate'; -$routes['/projects/:projectID/builds'] = 'builds'; -$routes['/builds'] = 'builds'; -$routes['/builds/:id'] = 'build'; +$routes['/projects/:id/builds'] = 'builds'; +$routes['/executions/:id/builds'] = 'executionBuilds'; +$routes['/builds'] = 'builds'; +$routes['/builds/:id'] = 'build'; $routes['/products/:id/testcases'] = 'testcases'; $routes['/projects/:id/testcases'] = 'projectCases'; diff --git a/module/build/model.php b/module/build/model.php index 260bbbf0c0..b5176147c5 100644 --- a/module/build/model.php +++ b/module/build/model.php @@ -160,10 +160,11 @@ class buildModel extends model * @param int $executionID * @param string $type all|product|bysearch * @param int|string $param productID|buildQuery + * @param string $orderBy * @access public * @return array */ - public function getExecutionBuilds($executionID, $type = '', $param = '') + public function getExecutionBuilds($executionID, $type = '', $param = '', $orderBy = 't1.date_desc,t1.id_desc') { return $this->dao->select('t1.*, t2.name as executionName, t3.name as productName, t4.name as branchName') ->from(TABLE_BUILD)->alias('t1') @@ -174,7 +175,7 @@ class buildModel extends model ->andWhere('t1.deleted')->eq(0) ->beginIF($type == 'product' and $param)->andWhere('t1.product')->eq($param)->fi() ->beginIF($type == 'bysearch')->andWhere($param)->fi() - ->orderBy('t1.date DESC, t1.id desc') + ->orderBy($orderBy) ->fetchAll('id'); } diff --git a/module/execution/control.php b/module/execution/control.php index 1dce3dc299..ad7086de69 100644 --- a/module/execution/control.php +++ b/module/execution/control.php @@ -986,10 +986,11 @@ class execution extends control * @param int $executionID * @param string $type all|product|bysearch * @param int $param + * @param string $orderBy * @access public * @return void */ - public function build($executionID = 0, $type = 'all', $param = 0) + public function build($executionID = 0, $type = 'all', $param = 0, $orderBy = 't1.date_desc,t1.id_desc') { /* Load module and set session. */ $this->loadModel('testtask'); @@ -1015,7 +1016,7 @@ class execution extends control } else { - $builds = $this->loadModel('build')->getExecutionBuilds((int)$executionID, $type, $param); + $builds = $this->loadModel('build')->getExecutionBuilds((int)$executionID, $type, $param, $orderBy); } /* Set execution builds. */