Skip to content

Commit f474212

Browse files
authored
Merge pull request #98 from kitloong/feature/connection
Generate connection name if --connection is specified
2 parents ae297c9 + 8f19e76 commit f474212

File tree

5 files changed

+44
-4
lines changed

5 files changed

+44
-4
lines changed

src/MigrateGenerateCommand.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public function handle(): void
8181
{
8282
$previousConnection = DB::getDefaultConnection();
8383
try {
84-
$this->setup();
84+
$this->setup($previousConnection);
8585

8686
$connection = $this->option('connection') ?: $previousConnection;
8787

@@ -116,10 +116,13 @@ public function handle(): void
116116
/**
117117
* Setup by setting configuration + command options into Setting.
118118
* Setting is a singleton and will be used as generator configuration.
119+
*
120+
* @param string $connection The default DB connection name.
119121
*/
120-
protected function setup(): void
122+
protected function setup(string $connection): void
121123
{
122124
$setting = app(Setting::class);
125+
$setting->setDefaultConnection($connection);
123126
$setting->setUseDBCollation($this->option('use-db-collation'));
124127
$setting->setIgnoreIndexNames($this->option('default-index-names'));
125128
$setting->setIgnoreForeignKeyNames($this->option('default-fk-names'));

src/Migration/Blueprint/SchemaBlueprint.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
namespace KitLoong\MigrationsGenerator\Migration\Blueprint;
44

5-
use Illuminate\Support\Facades\Config;
65
use KitLoong\MigrationsGenerator\Enum\Migrations\Method\SchemaBuilder;
76
use KitLoong\MigrationsGenerator\Migration\Enum\Space;
7+
use KitLoong\MigrationsGenerator\Setting;
88
use KitLoong\MigrationsGenerator\Support\TableName;
99

1010
class SchemaBlueprint implements WritableBlueprint
@@ -56,8 +56,10 @@ public function toString(): string
5656
*/
5757
private function getLines(): array
5858
{
59+
$setting = app(Setting::class);
60+
5961
$schema = "Schema::$this->schemaBuilder";
60-
if ($this->connection !== Config::get('database.default')) {
62+
if ($this->connection !== $setting->getDefaultConnection()) {
6163
$schema = "Schema::" . SchemaBuilder::CONNECTION() . "('$this->connection')->$this->schemaBuilder";
6264
}
6365

src/Setting.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@
66

77
class Setting
88
{
9+
/**
10+
* The default DB connection name, also known as "previous" connection name if migration is called
11+
* with `--connection=other` option.
12+
*
13+
* @var string
14+
*/
15+
private $defaultConnection;
16+
917
/** @var boolean */
1018
private $useDBCollation;
1119

@@ -36,6 +44,22 @@ class Setting
3644
/** @var string */
3745
private $fkFilename;
3846

47+
/**
48+
* @return string
49+
*/
50+
public function getDefaultConnection(): string
51+
{
52+
return $this->defaultConnection;
53+
}
54+
55+
/**
56+
* @param string $defaultConnection
57+
*/
58+
public function setDefaultConnection(string $defaultConnection): void
59+
{
60+
$this->defaultConnection = $defaultConnection;
61+
}
62+
3963
/**
4064
* @return bool
4165
*/

tests/Feature/MySQL57/DBConnectionTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace KitLoong\MigrationsGenerator\Tests\Feature\MySQL57;
44

55
use Illuminate\Support\Facades\DB;
6+
use Illuminate\Support\Facades\File;
67
use Illuminate\Support\Facades\Schema;
78
use PDO;
89

@@ -80,6 +81,11 @@ public function testDBConnection()
8081
};
8182

8283
$this->verify($migrateTemplates, $generateMigrations);
84+
85+
$this->assertStringContainsString(
86+
'Schema::connection',
87+
File::files($this->storageMigrations())[0]->getContents()
88+
);
8389
}
8490

8591
public function testLogMigrationToAnotherSource()

tests/MigrationWriterTest.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
namespace KitLoong\MigrationsGenerator\Tests;
44

5+
use Illuminate\Support\Facades\DB;
56
use KitLoong\MigrationsGenerator\Enum\Migrations\Method\SchemaBuilder;
67
use KitLoong\MigrationsGenerator\Migration\Blueprint\SchemaBlueprint;
78
use KitLoong\MigrationsGenerator\Migration\Blueprint\TableBlueprint;
89
use KitLoong\MigrationsGenerator\Migration\Enum\MigrationFileType;
910
use KitLoong\MigrationsGenerator\Migration\Writer\MigrationWriter;
11+
use KitLoong\MigrationsGenerator\Setting;
1012
use KitLoong\MigrationsGenerator\Support\TableName;
1113
use Mockery\MockInterface;
1214

@@ -17,6 +19,9 @@ class MigrationWriterTest extends TestCase
1719
*/
1820
public function testWrite()
1921
{
22+
$setting = app(Setting::class);
23+
$setting->setDefaultConnection(DB::getDefaultConnection());
24+
2025
$this->mock(TableName::class, function (MockInterface $mock) {
2126
$mock->shouldReceive('stripPrefix')
2227
->andReturn('test');

0 commit comments

Comments
 (0)