From ade491243f8dca797e9af830d8ffec11b9ba8bb8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 3 Jan 2026 13:27:49 +0000 Subject: [PATCH 1/3] Initial plan From 75d54c5cb955fbfd6dcfabab8c308013e8ba98e4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 3 Jan 2026 13:40:39 +0000 Subject: [PATCH 2/3] Add full support for custom database connections in seeders and migrations Co-authored-by: qisthidev <34129273+qisthidev@users.noreply.github.com> --- README.md | 50 +++++++++++++++++++ README_en.md | 50 +++++++++++++++++++ ...16_08_03_072729_create_provinces_table.php | 2 +- .../2016_08_03_072750_create_cities_table.php | 2 +- ...16_08_03_072804_create_districts_table.php | 2 +- ...016_08_03_072819_create_villages_table.php | 2 +- src/Seeds/CitiesSeeder.php | 3 +- src/Seeds/DistrictsSeeder.php | 3 +- src/Seeds/ProvincesSeeder.php | 3 +- src/Seeds/VillagesSeeder.php | 3 +- tests/DatabaseConnectionTest.php | 41 +++++++++++++++ 11 files changed, 153 insertions(+), 8 deletions(-) create mode 100644 tests/DatabaseConnectionTest.php diff --git a/README.md b/README.md index 1b0576d..60d129b 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,56 @@ $app->configure('laravolt'); Untuk selanjutnya, konfigurasi bisa dipanggil dengan cara `config('laravolt.indonesia.table_prefix')`. +### Publish Configuration File (Opsional) + +```php +php artisan vendor:publish --provider="Laravolt\Indonesia\ServiceProvider" --tag="config" +``` + +### Konfigurasi Database Connection (Opsional) + +Jika Anda ingin menyimpan data wilayah Indonesia di database yang terpisah dari database utama aplikasi, Anda dapat mengatur koneksi database khusus: + +1. Definisikan koneksi database baru di `config/database.php`: + +```php +'connections' => [ + // ... koneksi lainnya + + 'indonesia' => [ + 'driver' => 'mysql', + 'host' => env('INDONESIA_DB_HOST', '127.0.0.1'), + 'database' => env('INDONESIA_DB_DATABASE', 'indonesia'), + 'username' => env('INDONESIA_DB_USERNAME', 'root'), + 'password' => env('INDONESIA_DB_PASSWORD', ''), + // ... konfigurasi lainnya + ], +] +``` + +2. Atur environment variable di file `.env`: + +``` +INDONESIA_DB_CONNECTION=indonesia +INDONESIA_DB_HOST=127.0.0.1 +INDONESIA_DB_DATABASE=indonesia_regions +INDONESIA_DB_USERNAME=root +INDONESIA_DB_PASSWORD= +``` + +3. Atau atur langsung di file `config/laravolt/indonesia.php`: + +```php +return [ + 'table_prefix' => 'indonesia_', + 'database' => [ + 'connection' => env('INDONESIA_DB_CONNECTION', null), + ], +]; +``` + +Jika tidak diatur, package akan menggunakan koneksi database default aplikasi. + ### Publish Migration (Hanya Untuk Laravel/Lumen 5.2) Jika Anda menggunakan Laravel/Lumen versi 5.3 ke atas, abaikan langkah di bawah ini. diff --git a/README_en.md b/README_en.md index 1c0c3a8..fea6b85 100644 --- a/README_en.md +++ b/README_en.md @@ -29,6 +29,56 @@ Add Facade and Service Provider in `config/app.php` ] ``` +### Publish Configuration File (Optional) + +``` +php artisan vendor:publish --provider="Laravolt\Indonesia\ServiceProvider" --tag="config" +``` + +### Database Connection Configuration (Optional) + +If you want to store Indonesian region data in a separate database from your main application database, you can configure a custom database connection: + +1. Define a new database connection in `config/database.php`: + +```php +'connections' => [ + // ... other connections + + 'indonesia' => [ + 'driver' => 'mysql', + 'host' => env('INDONESIA_DB_HOST', '127.0.0.1'), + 'database' => env('INDONESIA_DB_DATABASE', 'indonesia'), + 'username' => env('INDONESIA_DB_USERNAME', 'root'), + 'password' => env('INDONESIA_DB_PASSWORD', ''), + // ... other configuration + ], +] +``` + +2. Set environment variables in your `.env` file: + +``` +INDONESIA_DB_CONNECTION=indonesia +INDONESIA_DB_HOST=127.0.0.1 +INDONESIA_DB_DATABASE=indonesia_regions +INDONESIA_DB_USERNAME=root +INDONESIA_DB_PASSWORD= +``` + +3. Or configure directly in `config/laravolt/indonesia.php`: + +```php +return [ + 'table_prefix' => 'indonesia_', + 'database' => [ + 'connection' => env('INDONESIA_DB_CONNECTION', null), + ], +]; +``` + +If not configured, the package will use your application's default database connection. + ### Publish Migration (Only for Laravel 5.2) If you are using Laravel version 5.3+, you can ignore this step. ``` diff --git a/database/migrations/2016_08_03_072729_create_provinces_table.php b/database/migrations/2016_08_03_072729_create_provinces_table.php index d416d57..85eaa79 100644 --- a/database/migrations/2016_08_03_072729_create_provinces_table.php +++ b/database/migrations/2016_08_03_072729_create_provinces_table.php @@ -37,6 +37,6 @@ public function up() */ public function down() { - Schema::drop(config('laravolt.indonesia.table_prefix').'provinces'); + Schema::connection($this->connection())->drop(config('laravolt.indonesia.table_prefix').'provinces'); } } diff --git a/database/migrations/2016_08_03_072750_create_cities_table.php b/database/migrations/2016_08_03_072750_create_cities_table.php index 78c29e3..617e8a3 100644 --- a/database/migrations/2016_08_03_072750_create_cities_table.php +++ b/database/migrations/2016_08_03_072750_create_cities_table.php @@ -43,6 +43,6 @@ public function up() */ public function down() { - Schema::drop(config('laravolt.indonesia.table_prefix').'cities'); + Schema::connection($this->connection())->drop(config('laravolt.indonesia.table_prefix').'cities'); } } diff --git a/database/migrations/2016_08_03_072804_create_districts_table.php b/database/migrations/2016_08_03_072804_create_districts_table.php index 451478f..764ecbe 100644 --- a/database/migrations/2016_08_03_072804_create_districts_table.php +++ b/database/migrations/2016_08_03_072804_create_districts_table.php @@ -43,6 +43,6 @@ public function up() */ public function down() { - Schema::drop(config('laravolt.indonesia.table_prefix').'districts'); + Schema::connection($this->connection())->drop(config('laravolt.indonesia.table_prefix').'districts'); } } diff --git a/database/migrations/2016_08_03_072819_create_villages_table.php b/database/migrations/2016_08_03_072819_create_villages_table.php index 14eea55..68e5beb 100644 --- a/database/migrations/2016_08_03_072819_create_villages_table.php +++ b/database/migrations/2016_08_03_072819_create_villages_table.php @@ -43,6 +43,6 @@ public function up() */ public function down() { - Schema::drop(config('laravolt.indonesia.table_prefix').'villages'); + Schema::connection($this->connection())->drop(config('laravolt.indonesia.table_prefix').'villages'); } } diff --git a/src/Seeds/CitiesSeeder.php b/src/Seeds/CitiesSeeder.php index 9d2643c..d9b78cc 100644 --- a/src/Seeds/CitiesSeeder.php +++ b/src/Seeds/CitiesSeeder.php @@ -22,9 +22,10 @@ public function run() return $arr + ['created_at' => $now, 'updated_at' => $now]; }, $data); + $connection = config('indonesia.database.connection'); $collection = collect($data); foreach ($collection->chunk(50) as $chunk) { - DB::table(config('laravolt.indonesia.table_prefix').'cities')->insertOrIgnore($chunk->toArray()); + DB::connection($connection)->table(config('laravolt.indonesia.table_prefix').'cities')->insertOrIgnore($chunk->toArray()); } } } diff --git a/src/Seeds/DistrictsSeeder.php b/src/Seeds/DistrictsSeeder.php index 14d8f6f..09f979b 100644 --- a/src/Seeds/DistrictsSeeder.php +++ b/src/Seeds/DistrictsSeeder.php @@ -22,9 +22,10 @@ public function run() return $arr + ['created_at' => $now, 'updated_at' => $now]; }, $data); + $connection = config('indonesia.database.connection'); $collection = collect($data); foreach ($collection->chunk(50) as $chunk) { - DB::table(config('laravolt.indonesia.table_prefix').'districts')->insertOrIgnore($chunk->toArray()); + DB::connection($connection)->table(config('laravolt.indonesia.table_prefix').'districts')->insertOrIgnore($chunk->toArray()); } } } diff --git a/src/Seeds/ProvincesSeeder.php b/src/Seeds/ProvincesSeeder.php index e9d9f5b..fec930e 100644 --- a/src/Seeds/ProvincesSeeder.php +++ b/src/Seeds/ProvincesSeeder.php @@ -22,6 +22,7 @@ public function run() return $arr + ['created_at' => $now, 'updated_at' => $now]; }, $data); - DB::table(config('laravolt.indonesia.table_prefix').'provinces')->insertOrIgnore($data); + $connection = config('indonesia.database.connection'); + DB::connection($connection)->table(config('laravolt.indonesia.table_prefix').'provinces')->insertOrIgnore($data); } } diff --git a/src/Seeds/VillagesSeeder.php b/src/Seeds/VillagesSeeder.php index 06989b4..7f8bfb5 100644 --- a/src/Seeds/VillagesSeeder.php +++ b/src/Seeds/VillagesSeeder.php @@ -13,6 +13,7 @@ public function run() { $now = Carbon::now(); $csv = new CsvtoArray(); + $connection = config('indonesia.database.connection'); $resourceFiles = File::allFiles(__DIR__.'/../../resources/csv/villages'); foreach ($resourceFiles as $file) { $header = ['code', 'district_code', 'name', 'lat', 'long', 'pos']; @@ -27,7 +28,7 @@ public function run() $collection = collect($data); foreach ($collection->chunk(50) as $chunk) { - DB::table(config('laravolt.indonesia.table_prefix').'villages')->insertOrIgnore($chunk->toArray()); + DB::connection($connection)->table(config('laravolt.indonesia.table_prefix').'villages')->insertOrIgnore($chunk->toArray()); } } } diff --git a/tests/DatabaseConnectionTest.php b/tests/DatabaseConnectionTest.php new file mode 100644 index 0000000..d6f9a8b --- /dev/null +++ b/tests/DatabaseConnectionTest.php @@ -0,0 +1,41 @@ +set('indonesia.database.connection', null); + $province = new Province(); + $this->assertNull($province->getConnectionName()); + + // When config is set (just test the method, not actual connection) + config()->set('indonesia.database.connection', 'indonesia_db'); + $province = new Province(); + $this->assertEquals('indonesia_db', $province->getConnectionName()); + + $city = new City(); + $this->assertEquals('indonesia_db', $city->getConnectionName()); + + $district = new District(); + $this->assertEquals('indonesia_db', $district->getConnectionName()); + + $village = new Village(); + $this->assertEquals('indonesia_db', $village->getConnectionName()); + + // Reset config for other tests + config()->set('indonesia.database.connection', null); + } +} From 21b79f95a8202a79e2d8943170221be3ea72c34e Mon Sep 17 00:00:00 2001 From: StyleCI Bot Date: Sat, 3 Jan 2026 13:40:45 +0000 Subject: [PATCH 3/3] Apply fixes from StyleCI --- tests/DatabaseConnectionTest.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/DatabaseConnectionTest.php b/tests/DatabaseConnectionTest.php index d6f9a8b..0c27639 100644 --- a/tests/DatabaseConnectionTest.php +++ b/tests/DatabaseConnectionTest.php @@ -2,9 +2,9 @@ namespace Laravolt\Indonesia\Test; -use Laravolt\Indonesia\Models\Province; use Laravolt\Indonesia\Models\City; use Laravolt\Indonesia\Models\District; +use Laravolt\Indonesia\Models\Province; use Laravolt\Indonesia\Models\Village; class DatabaseConnectionTest extends TestCase @@ -15,26 +15,26 @@ public function models_use_configured_database_connection_when_set() // Test that models respect the configured connection // We can't actually connect to a non-existent connection in tests, // but we can verify that the getConnectionName() method returns the right value - + // When config is null config()->set('indonesia.database.connection', null); $province = new Province(); $this->assertNull($province->getConnectionName()); - + // When config is set (just test the method, not actual connection) config()->set('indonesia.database.connection', 'indonesia_db'); $province = new Province(); $this->assertEquals('indonesia_db', $province->getConnectionName()); - + $city = new City(); $this->assertEquals('indonesia_db', $city->getConnectionName()); - + $district = new District(); $this->assertEquals('indonesia_db', $district->getConnectionName()); - + $village = new Village(); $this->assertEquals('indonesia_db', $village->getConnectionName()); - + // Reset config for other tests config()->set('indonesia.database.connection', null); }