浏览代码

Merge pull request #5 from hendrikbl/multi-connection

Added support for multiple database connections
Shalvah 5 年之前
父节点
当前提交
6b20e8c47f

+ 14 - 6
src/Extracting/DatabaseTransactionHelpers.php

@@ -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) {
+            }
         }
     }
 
@@ -22,9 +26,13 @@ trait DatabaseTransactionHelpers
      */
     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) {
+            }
         }
     }
 }

+ 1 - 1
src/Extracting/Strategies/Responses/ResponseCalls.php

@@ -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;

+ 3 - 4
src/Extracting/Strategies/Responses/UseApiResourceTags.php

@@ -13,12 +13,12 @@ use Illuminate\Pagination\Paginator;
 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;
@@ -50,7 +50,6 @@ class UseApiResourceTags extends Strategy
 
         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) {
@@ -101,7 +100,7 @@ class UseApiResourceTags extends Strategy
                     $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;

+ 16 - 16
src/Extracting/Strategies/Responses/UseTransformerTags.php

@@ -8,14 +8,14 @@ use Illuminate\Pagination\LengthAwarePaginator;
 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;
@@ -68,19 +68,19 @@ class UseTransformerTags extends Strategy
      */
     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)];
@@ -99,9 +99,9 @@ class UseTransformerTags extends Strategy
             $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(),