Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
50 changes: 50 additions & 0 deletions README_en.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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');
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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');
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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');
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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');
}
}
3 changes: 2 additions & 1 deletion src/Seeds/CitiesSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}
}
}
3 changes: 2 additions & 1 deletion src/Seeds/DistrictsSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}
}
}
3 changes: 2 additions & 1 deletion src/Seeds/ProvincesSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
3 changes: 2 additions & 1 deletion src/Seeds/VillagesSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -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'];
Expand All @@ -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());
}
}
}
Expand Down
41 changes: 41 additions & 0 deletions tests/DatabaseConnectionTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?php

namespace Laravolt\Indonesia\Test;

use Laravolt\Indonesia\Models\City;
use Laravolt\Indonesia\Models\District;
use Laravolt\Indonesia\Models\Province;
use Laravolt\Indonesia\Models\Village;

class DatabaseConnectionTest extends TestCase
{
/** @test */
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);
}
}