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..0c27639 --- /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); + } +}