/** * setting up listener * * @param Dispatcher $events * @param Repository $cache */ private function setupListener(Dispatcher $events, Repository $cache) { $enabled = config('query-analyzer.enabled', false); if (!$enabled) { return; } $queryRepository = new QueryRepository($cache); $events->listen(QueryExecuted::class, function (QueryExecuted $queryExecuted) use($queryRepository) { $sql = $queryExecuted->sql; $bindings = $queryExecuted->bindings; $time = $queryExecuted->time; try { $queryRepository->store($sql, $bindings, $time); } catch (\Exception $e) { // be quiet on error } }); }
/** * returns queries * * @param int $offset * @param int $limit * @return \Illuminate\Support\Collection */ private function getQueries($offset = 0, $limit = 0) { $filter = $this->option('filter'); if ($filter) { $queries = $this->repository->only($filter); } else { $queries = $this->repository->queries(); } if ($offset > 0) { $queries = $queries->splice($offset); } if ($limit > 0) { $queries = $queries->take($limit); } return $queries; }
/** * Execute the console command. * * @return mixed */ public function handle() { $this->repository->clear(); }