From fba37171aebf67d62c368deaf1ac47bcf5aa9322 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Fri, 13 May 2016 12:08:41 +0300 Subject: [PATCH] Support query counter in webapp as well as API --- app/Http/Controllers/BaseAPIController.php | 38 ++++++++-------------- app/Http/Kernel.php | 1 + app/Http/Middleware/QueryLogging.php | 38 ++++++++++++++++++++++ 3 files changed, 53 insertions(+), 24 deletions(-) create mode 100644 app/Http/Middleware/QueryLogging.php diff --git a/app/Http/Controllers/BaseAPIController.php b/app/Http/Controllers/BaseAPIController.php index 0718e95b91e4..4660e9b25e4c 100644 --- a/app/Http/Controllers/BaseAPIController.php +++ b/app/Http/Controllers/BaseAPIController.php @@ -61,40 +61,36 @@ class BaseAPIController extends Controller } $this->serializer = Request::get('serializer') ?: API_SERIALIZER_ARRAY; - + if ($this->serializer === API_SERIALIZER_JSON) { $this->manager->setSerializer(new JsonApiSerializer()); } else { $this->manager->setSerializer(new ArraySerializer()); } - - if (Utils::isNinjaDev()) { - \DB::enableQueryLog(); - } } protected function handleAction($request) - { + { $entity = $request->entity(); $action = $request->action; - + $repo = Utils::toCamelCase($this->entityType) . 'Repo'; - + $this->$repo->$action($entity); - + return $this->itemResponse($entity); } protected function listResponse($query) { $transformerClass = EntityModel::getTransformerName($this->entityType); - $transformer = new $transformerClass(Auth::user()->account, Input::get('serializer')); + $transformer = new $transformerClass(Auth::user()->account, Input::get('serializer')); $includes = $transformer->getDefaultIncludes(); $includes = $this->getRequestIncludes($includes); $query->with($includes); - + if ($updatedAt = Input::get('updated_at')) { $updatedAt = date('Y-m-d H:i:s', $updatedAt); $query->where(function($query) use ($includes, $updatedAt) { @@ -106,14 +102,14 @@ class BaseAPIController extends Controller } }); } - + if ($clientPublicId = Input::get('client_id')) { $filter = function($query) use ($clientPublicId) { $query->where('public_id', '=', $clientPublicId); }; $query->whereHas('client', $filter); } - + if ( ! Utils::hasPermission('view_all')){ if ($this->entityType == ENTITY_USER) { $query->where('id', '=', Auth::user()->id); @@ -121,7 +117,7 @@ class BaseAPIController extends Controller $query->where('user_id', '=', Auth::user()->id); } } - + $data = $this->createCollection($query, $transformer, $this->entityType); return $this->response($data); @@ -130,10 +126,10 @@ class BaseAPIController extends Controller protected function itemResponse($item) { $transformerClass = EntityModel::getTransformerName($this->entityType); - $transformer = new $transformerClass(Auth::user()->account, Input::get('serializer')); + $transformer = new $transformerClass(Auth::user()->account, Input::get('serializer')); $data = $this->createItem($item, $transformer, $this->entityType); - + return $this->response($data); } @@ -160,18 +156,12 @@ class BaseAPIController extends Controller } else { $resource = new Collection($query, $transformer, $entityType); } - + return $this->manager->createData($resource)->toArray(); } protected function response($response) { - if (Utils::isNinjaDev()) { - $count = count(\DB::getQueryLog()); - Log::info(Request::method() . ' - ' . Request::url() . ": $count queries"); - Log::info(json_encode(\DB::getQueryLog())); - } - $index = Request::get('index') ?: 'data'; if ($index == 'none') { @@ -222,7 +212,7 @@ class BaseAPIController extends Controller $data[] = $include; } } - + return $data; } } diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 1142338b200e..8f7db1f0fabd 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -17,6 +17,7 @@ class Kernel extends HttpKernel { 'Illuminate\View\Middleware\ShareErrorsFromSession', 'App\Http\Middleware\VerifyCsrfToken', 'App\Http\Middleware\DuplicateSubmissionCheck', + 'App\Http\Middleware\QueryLogging', 'App\Http\Middleware\StartupCheck', ]; diff --git a/app/Http/Middleware/QueryLogging.php b/app/Http/Middleware/QueryLogging.php new file mode 100644 index 000000000000..da01a52b05fd --- /dev/null +++ b/app/Http/Middleware/QueryLogging.php @@ -0,0 +1,38 @@ +url(), '_debugbar') === false) { + $queries = DB::getQueryLog(); + $count = count($queries); + Log::info($request->method() . ' - ' . $request->url() . ": $count queries"); + //Log::info(json_encode($queries)); + } + } + + return $response; + } +}