Skip to content

Commit

Permalink
Merge pull request #5 from hendrikbl/multi-connection
Browse files Browse the repository at this point in the history
Added support for multiple database connections
  • Loading branch information
shalvah authored May 8, 2020
2 parents 2c730e0 + f3e2c47 commit 6b20e8c
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 27 deletions.
20 changes: 14 additions & 6 deletions src/Extracting/DatabaseTransactionHelpers.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,13 @@ trait DatabaseTransactionHelpers
*/
private function startDbTransaction()
{
try {
app('db')->beginTransaction();
} catch (Exception $e) {
$connections = array_keys(config('database.connections', []));

foreach ($connections as $conn) {
try {
app('db')->connection($conn)->beginTransaction();
} catch (Exception $e) {
}
}
}

Expand All @@ -22,9 +26,13 @@ private function startDbTransaction()
*/
private function endDbTransaction()
{
try {
app('db')->rollBack();
} catch (Exception $e) {
$connections = array_keys(config('database.connections', []));

foreach ($connections as $conn) {
try {
app('db')->connection($conn)->rollBack();
} catch (Exception $e) {
}
}
}
}
2 changes: 1 addition & 1 deletion src/Extracting/Strategies/Responses/ResponseCalls.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
namespace Knuckles\Scribe\Extracting\Strategies\Responses;

use Dingo\Api\Dispatcher;
use Dingo\Api\Routing\Route as DingoRoute;
use Exception;
use Illuminate\Contracts\Http\Kernel;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Route;
use Dingo\Api\Routing\Route as DingoRoute;
use Illuminate\Support\Str;
use Knuckles\Scribe\Extracting\DatabaseTransactionHelpers;
use Knuckles\Scribe\Extracting\ParamHelpers;
Expand Down
7 changes: 3 additions & 4 deletions src/Extracting/Strategies/Responses/UseApiResourceTags.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@
use Illuminate\Routing\Route;
use Illuminate\Support\Arr;
use Knuckles\Scribe\Extracting\DatabaseTransactionHelpers;
use Knuckles\Scribe\Tools\AnnotationParser;
use League\Fractal\Resource\Collection;
use Knuckles\Scribe\Extracting\RouteDocBlocker;
use Knuckles\Scribe\Extracting\Strategies\Strategy;
use Knuckles\Scribe\Tools\AnnotationParser;
use Knuckles\Scribe\Tools\Flags;
use Knuckles\Scribe\Tools\Utils;
use League\Fractal\Resource\Collection;
use Mpociot\Reflection\DocBlock;
use Mpociot\Reflection\DocBlock\Tag;
use ReflectionClass;
Expand Down Expand Up @@ -50,7 +50,6 @@ public function __invoke(Route $route, ReflectionClass $controller, ReflectionFu

try {
return $this->getApiResourceResponse($methodDocBlock->getTags());

} catch (Exception $e) {
clara('knuckleswtf/scribe')->warn('Exception thrown when fetching Eloquent API resource response for [' . implode(',', $route->methods) . "] {$route->uri}.");
if (Flags::$shouldBeVerbose) {
Expand Down Expand Up @@ -101,7 +100,7 @@ public function getApiResourceResponse(array $tags)
$perPage
);
$list = $paginator;
} else if (count($pagination) == 2 && $pagination[0] == 'simple') {
} elseif (count($pagination) == 2 && $pagination[0] == 'simple') {
$perPage = $pagination[1];
$paginator = new Paginator($models, $perPage);
$list = $paginator;
Expand Down
32 changes: 16 additions & 16 deletions src/Extracting/Strategies/Responses/UseTransformerTags.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@
use Illuminate\Routing\Route;
use Illuminate\Support\Arr;
use Knuckles\Scribe\Extracting\DatabaseTransactionHelpers;
use Knuckles\Scribe\Tools\AnnotationParser;
use League\Fractal\Manager;
use League\Fractal\Resource\Collection;
use League\Fractal\Resource\Item;
use Knuckles\Scribe\Extracting\RouteDocBlocker;
use Knuckles\Scribe\Extracting\Strategies\Strategy;
use Knuckles\Scribe\Tools\AnnotationParser;
use Knuckles\Scribe\Tools\Flags;
use Knuckles\Scribe\Tools\Utils;
use League\Fractal\Manager;
use League\Fractal\Resource\Collection;
use League\Fractal\Resource\Item;
use Mpociot\Reflection\DocBlock;
use Mpociot\Reflection\DocBlock\Tag;
use ReflectionClass;
Expand Down Expand Up @@ -68,19 +68,19 @@ public function __invoke(Route $route, ReflectionClass $controller, ReflectionFu
*/
public function getTransformerResponse(array $tags)
{
if (empty($transformerTag = $this->getTransformerTag($tags))) {
return null;
}
if (empty($transformerTag = $this->getTransformerTag($tags))) {
return null;
}

[$statusCode, $transformer] = $this->getStatusCodeAndTransformerClass($transformerTag);
[$model, $factoryStates, $relations] = $this->getClassToBeTransformed($tags, (new ReflectionClass($transformer))->getMethod('transform'));
$modelInstance = $this->instantiateTransformerModel($model, $factoryStates, $relations);
[$statusCode, $transformer] = $this->getStatusCodeAndTransformerClass($transformerTag);
[$model, $factoryStates, $relations] = $this->getClassToBeTransformed($tags, (new ReflectionClass($transformer))->getMethod('transform'));
$modelInstance = $this->instantiateTransformerModel($model, $factoryStates, $relations);

$fractal = new Manager();
$fractal = new Manager();

if (! is_null($this->config->get('fractal.serializer'))) {
$fractal->setSerializer(app($this->config->get('fractal.serializer')));
}
if (! is_null($this->config->get('fractal.serializer'))) {
$fractal->setSerializer(app($this->config->get('fractal.serializer')));
}

if ((strtolower($transformerTag->getName()) == 'transformercollection')) {
$models = [$modelInstance, $this->instantiateTransformerModel($model, $factoryStates, $relations)];
Expand All @@ -99,9 +99,9 @@ public function getTransformerResponse(array $tags)
$resource = new Item($modelInstance, new $transformer());
}

$response = response($fractal->createData($resource)->toJson());
$response = response($fractal->createData($resource)->toJson());

return [
return [
[
'status' => $statusCode ?: 200,
'content' => $response->getContent(),
Expand Down

0 comments on commit 6b20e8c

Please sign in to comment.