edit this page Storage Drivers
Database (default)
The database table to use is specified in the config file in the drivers section under database
.
'driver' => 'database',
Laravel Filesystem
By using Laravel's built in Filesystem we have the ability to store the currency data in the cloud. Which file to used is specified in the config file in the drivers section under filesystem
, along with which disk to use null
will use the system default disk.
'driver' => 'filesystem',
Custom Driver
Drivers are stored in the Currency's config file config/currency.php
. Simply update the driver
with the name of your custom driver and add it to the drivers
specific configuration section with the class
value as the custom classname.
Example driver
<?php
namespace App\Currency\Drivers;
use DateTime;
use Illuminate\Support\Arr;
use Torann\Currency\Drivers\AbstractDriver;
class Local extends AbstractDriver
{
/**
* {@inheritdoc}
*/
public function create(array $params)
{
// Get blacklist path
$path = $this->getConfig('path');
// Get all as an array
$currencies = $this->all();
// Created at stamp
$created = new DateTime('now');
$currencies[$params['code']] = array_merge([
'name' => '',
'code' => '',
'symbol' => '',
'format' => '',
'exchange_rate' => 1,
'active' => 0,
'created_at' => $created->format('Y-m-d H:i:s'),
'updated_at' => $created->format('Y-m-d H:i:s'),
], $params);
return file_put_contents($path, json_encode($currencies));
}
/**
* {@inheritdoc}
*/
public function all()
{
$path = $this->getConfig('path');
return json_decode(file_get_contents($path), true);
}
/**
* {@inheritdoc}
*/
public function find($code)
{
return Arr::get($this->all(), $code);
}
/**
* {@inheritdoc}
*/
public function update($code, $value, DateTime $timestamp = null)
{
$path = $this->getConfig('path');
$currencies = json_decode(file_get_contents($path), true);
// Update given code
if (isset($currencies[$code])) {
$currencies[$code]['exchange_rate'] = $value;
$currencies[$code]['updated_at'] = new DateTime('now');
return file_put_contents($path, json_encode($currencies));
}
return false;
}
/**
* {@inheritdoc}
*/
public function delete($code)
{
// Get blacklist path
$path = $this->getConfig('path');
// Get all as an array
$currencies = $this->all();
if (isset($currencies[$code])) {
unset($currencies[$code]);
return file_put_contents($path, json_encode($currencies));
}
return false;
}
}
In the config file
'driver' => 'local',
'drivers' => [
...
'local' => [
'class' => \App\Currency\Drivers\Local::class,
'path' => base_path('currencies.json'),
],
],