From 139c6651bfd624b87caac3b93d8e7535ac031c21 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Mon, 7 Oct 2019 00:40:03 -0600 Subject: [PATCH] Update ApiController, fixes #1705 --- app/Http/Controllers/ApiController.php | 28 +++++++++++++++----------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/app/Http/Controllers/ApiController.php b/app/Http/Controllers/ApiController.php index d71da8ce8..38e888644 100644 --- a/app/Http/Controllers/ApiController.php +++ b/app/Http/Controllers/ApiController.php @@ -83,20 +83,24 @@ class ApiController extends BaseApiController { abort_if(!Auth::check(), 403); $this->validate($request, [ - 'q' => 'required|string' + 'q' => 'required|string|max:100' ]); $q = filter_var($request->input('q'), FILTER_SANITIZE_STRING); - $q = '%' . $q . '%'; - $places = Place::where('name', 'like', $q) - ->take(25) - ->get() - ->map(function($r) { - return [ - 'id' => $r->id, - 'name' => $r->name, - 'country' => $r->country, - 'url' => $r->url() - ]; + $hash = hash('sha256', $q); + $key = 'search:location:id:' . $hash; + $places = Cache::remember($key, now()->addMinutes(15), function() use($q) { + $q = '%' . $q . '%'; + return Place::where('name', 'like', $q) + ->take(80) + ->get() + ->map(function($r) { + return [ + 'id' => $r->id, + 'name' => $r->name, + 'country' => $r->country, + 'url' => $r->url() + ]; + }); }); return $places; }