Skip to content

Commit 73f6f8b

Browse files
committed
Add caching functionality
1 parent 33e2254 commit 73f6f8b

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed

config/geocoder.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use Geocoder\Provider\MaxMindBinary;
1919

2020
return [
21+
'cache-duraction' => 999999999,
2122
'providers' => [
2223
Chain::class => [
2324
GoogleMaps::class => [

src/ProviderAndDumperAggregator.php

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,14 @@ public function dump($dumper)
7373
*/
7474
public function geocode($value)
7575
{
76-
$this->results = parent::geocode($value);
76+
$cacheId = str_slug($value);
77+
$this->results = cache()->remember(
78+
"geocoder-{$cacheId}",
79+
config('geocoder.cache-duraction', 0),
80+
function () use ($value) {
81+
return parent::geocode($value);
82+
}
83+
);
7784

7885
return $this;
7986
}
@@ -93,7 +100,14 @@ public function get()
93100
*/
94101
public function reverse($latitude, $longitude)
95102
{
96-
$this->results = parent::reverse($latitude, $longitude);
103+
$cacheId = str_slug("{$latitude}-{$longitude}");
104+
$this->results = cache()->remember(
105+
"geocoder-{$cacheId}",
106+
config('geocoder.cache-duraction', 0),
107+
function () use ($latitude, $longitude) {
108+
return parent::reverse($latitude, $longitude);
109+
}
110+
);
97111

98112
return $this;
99113
}

tests/Laravel5_3/Providers/GeocoderServiceTest.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,4 +173,14 @@ public function testGeocoder()
173173
{
174174
$this->assertInstanceOf(ProviderAndDumperAggregator::class, app('geocoder'));
175175
}
176+
177+
public function testCacheIsUsed()
178+
{
179+
$result = app('geocoder')->geocode('1600 Pennsylvania Ave., Washington, DC USA')
180+
->get();
181+
$cacheKey = 'geocoder-' . str_slug('1600 Pennsylvania Ave., Washington, DC USA');
182+
183+
$this->assertTrue(cache()->has($cacheKey));
184+
$this->assertEquals($result, cache($cacheKey));
185+
}
176186
}

0 commit comments

Comments
 (0)