From 3f5ac242ff0a60083d9cc7ed27bd4b483ba8c72a Mon Sep 17 00:00:00 2001
From: "florian.azizian" <florian.azizian@maarch.org>
Date: Mon, 19 Oct 2020 13:44:20 +0200
Subject: [PATCH] FEAT #13271 TIME 0:05 use SearchModel for temporary table

---
 package.json                                  |  2 +-
 .../search/controllers/SearchController.php   | 19 ++++++-------------
 src/app/search/models/SearchModel.php         |  5 +++--
 3 files changed, 10 insertions(+), 16 deletions(-)

diff --git a/package.json b/package.json
index 3f3c3e90195..e3a4c09c7c6 100755
--- a/package.json
+++ b/package.json
@@ -27,7 +27,7 @@
     "flat-to-nested": "^1.1.0",
     "ngx-joyride": "^2.3.1",
     "ngx-papaparse": "^5.0.0",
-    "zone.js": "~0.11.1"
+    "zone.js": "^0.11.2"
   },
   "devDependencies": {
     "@angular-devkit/build-angular": "^0.1001.6",
diff --git a/src/app/search/controllers/SearchController.php b/src/app/search/controllers/SearchController.php
index dad79eee8ab..8d533fb3da3 100644
--- a/src/app/search/controllers/SearchController.php
+++ b/src/app/search/controllers/SearchController.php
@@ -44,7 +44,6 @@ use SrcCore\controllers\AutoCompleteController;
 use SrcCore\controllers\PreparedClauseController;
 use SrcCore\models\CoreConfigModel;
 use SrcCore\models\DatabaseModel;
-use SrcCore\models\DatabasePDO;
 use SrcCore\models\TextFormatModel;
 use SrcCore\models\ValidatorModel;
 use Status\models\StatusModel;
@@ -1462,9 +1461,8 @@ class SearchController
         }
 
         $priorities = [];
-        $rawPriorities = DatabaseModel::select([
+        $rawPriorities = SearchModel::getTemporarySearchData([
             'select'  => ['count(1)', 'priority'],
-            'table'   => ['search_tmp_' . $GLOBALS['id']],
             'where'   => $wherePriorities,
             'data'    => $dataPriorities,
             'groupBy' => ['priority']
@@ -1512,9 +1510,8 @@ class SearchController
         }
 
         $categories = [];
-        $rawCategories = DatabaseModel::select([
+        $rawCategories = SearchModel::getTemporarySearchData([
             'select'  => ['count(1)', 'category_id'],
-            'table'   => ['search_tmp_' . $GLOBALS['id']],
             'where'   => $whereCategories,
             'data'    => $dataCategories,
             'groupBy' => ['category_id']
@@ -1555,9 +1552,8 @@ class SearchController
         }
 
         $statuses = [];
-        $rawStatuses = DatabaseModel::select([
+        $rawStatuses = SearchModel::getTemporarySearchData([
             'select'  => ['count(1)', 'status'],
-            'table'   => ['search_tmp_' . $GLOBALS['id']],
             'where'   => $whereStatuses,
             'data'    => $dataStatuses,
             'groupBy' => ['status']
@@ -1605,9 +1601,8 @@ class SearchController
         }
 
         $docTypes = [];
-        $rawDocTypes = DatabaseModel::select([
+        $rawDocTypes = SearchModel::getTemporarySearchData([
             'select'  => ['count(1)', 'type_id'],
-            'table'   => ['search_tmp_' . $GLOBALS['id']],
             'where'   => $whereDocTypes,
             'data'    => $dataDocTypes,
             'groupBy' => ['type_id']
@@ -1652,9 +1647,8 @@ class SearchController
         }
 
         $entities = [];
-        $rawEntities = DatabaseModel::select([
+        $rawEntities = SearchModel::getTemporarySearchData([
             'select'  => ['count(1)', 'destination'],
-            'table'   => ['search_tmp_' . $GLOBALS['id']],
             'where'   => $whereEntities,
             'data'    => $dataEntities,
             'groupBy' => ['destination']
@@ -1701,9 +1695,8 @@ class SearchController
             ];
         }
 
-        $resources = DatabaseModel::select([
+        $resources = SearchModel::getTemporarySearchData([
             'select' => ['res_id'],
-            'table'  => ['search_tmp_' . $GLOBALS['id']],
             'where'  => $whereFolders,
             'data'   => $dataFolders
         ]);
diff --git a/src/app/search/models/SearchModel.php b/src/app/search/models/SearchModel.php
index cf209ef9c62..6ed163041c2 100644
--- a/src/app/search/models/SearchModel.php
+++ b/src/app/search/models/SearchModel.php
@@ -51,14 +51,15 @@ class SearchModel
 
     public static function getTemporarySearchData(array $args)
     {
-        ValidatorModel::arrayType($args, ['select', 'where', 'data', 'orderBy']);
+        ValidatorModel::arrayType($args, ['select', 'where', 'data', 'orderBy', 'groupBy']);
 
         $data = DatabaseModel::select([
             'select'   => $args['select'],
             'table'    => ['search_tmp_' . $GLOBALS['id']],
             'where'    => $args['where'],
             'data'     => $args['data'],
-            'order_by' => $args['orderBy']
+            'order_by' => $args['orderBy'],
+            'groupBy'  => $args['groupBy'],
         ]);
 
         return $data;
-- 
GitLab