Sfoglia il codice sorgente

Update ApiController, fixes #1705

Daniel Supernault 5 anni fa
parent
commit
139c6651bf
1 ha cambiato i file con 16 aggiunte e 12 eliminazioni
  1. 16 12
      app/Http/Controllers/ApiController.php

+ 16 - 12
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;
     }