Rapport-Laravel/vendor/baopham/dynamodb/src/DynamoDbClientService.php

85 lines
1.8 KiB
PHP

<?php
namespace BaoPham\DynamoDb;
use Aws\DynamoDb\DynamoDbClient;
use Aws\DynamoDb\Marshaler;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Log;
class DynamoDbClientService implements DynamoDbClientInterface
{
/**
* @var array
*/
protected $clients;
/**
* @var \Aws\DynamoDb\Marshaler
*/
protected $marshaler;
/**
* @var \BaoPham\DynamoDb\EmptyAttributeFilter
*/
protected $attributeFilter;
public function __construct(Marshaler $marshaler, EmptyAttributeFilter $filter)
{
$this->marshaler = $marshaler;
$this->attributeFilter = $filter;
$this->clients = [];
}
/**
* @return \Aws\DynamoDb\DynamoDbClient
*/
public function getClient($connection = null)
{
$connection = $connection ?: config('dynamodb.default');
if (isset($this->clients[$connection])) {
return $this->clients[$connection];
}
$config = config("dynamodb.connections.$connection", []);
$config['version'] = '2012-08-10';
$config['debug'] = $this->getDebugOptions(Arr::get($config, 'debug'));
$client = new DynamoDbClient($config);
$this->clients[$connection] = $client;
return $client;
}
/**
* @return \Aws\DynamoDb\Marshaler
*/
public function getMarshaler()
{
return $this->marshaler;
}
/**
* @return \BaoPham\DynamoDb\EmptyAttributeFilter
*/
public function getAttributeFilter()
{
return $this->attributeFilter;
}
protected function getDebugOptions($debug = false)
{
if ($debug === true) {
$logfn = function ($msg) {
Log::info($msg);
};
return ['logfn' => $logfn];
}
return $debug;
}
}