From 8fe42c1d9f98af79ed7a9d4fee9d91b7e5bd495e Mon Sep 17 00:00:00 2001 From: Afiq Hamzah Date: Tue, 20 Jan 2026 11:36:41 +0800 Subject: [PATCH] Refactor tenant database configuration to use dynamic config values MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace hardcoded database names (online_arrahn, master_krk, kaunterpkb) with configurable values across the codebase - Rename tennant_master.php to tennant_database.php for clearer naming - Update config keys: 'database' → 'master_db', add 'kaunter_db' - Update env variables: TENNANT_MASTER_DB and TENNANT_KAUNTER_DB - Modify Helper.php to use dynamic database references in getOnlineArrahnConnection(), getActiveCawanganDbConnection(), and getInactiveCawanganDbConnection() methods - Update database JOIN queries in CustomerController and MarhunController to use config values instead of hardcoded database names - Simplify migration logic by removing redundant hardcoded database checks - Update debug messages in CawanganDebugConnections to show actual configured database name - Update bootstrap/app.php to load tennant_database config This change improves multi-environment flexibility and eliminates environment-specific hardcoded values, making the application more configurable for different deployment scenarios (KRK, KGMK, etc). --- app/Console/Commands/CawanganDebugConnections.php | 2 +- app/Helper.php | 6 +++--- app/Http/Controllers/CustomerController.php | 2 +- app/Http/Controllers/MarhunController.php | 4 ++-- bootstrap/app.php | 2 +- config/tennant_database.php | 6 ++++++ config/tennant_master.php | 5 ----- .../2023_11_14_121109_add_columns_to_komuditi_transaksi.php | 4 ++-- tinker/getActiveCawanganDbConnection.php | 2 +- 9 files changed, 17 insertions(+), 16 deletions(-) create mode 100644 config/tennant_database.php delete mode 100644 config/tennant_master.php diff --git a/app/Console/Commands/CawanganDebugConnections.php b/app/Console/Commands/CawanganDebugConnections.php index d4372f8..ec15539 100644 --- a/app/Console/Commands/CawanganDebugConnections.php +++ b/app/Console/Commands/CawanganDebugConnections.php @@ -80,7 +80,7 @@ class CawanganDebugConnections extends Command return $idToNameMap[$item['mysql']] !== $item['database']; }); } catch (\Throwable $th) { - dump(sprintf('Connection %s not found in table online_arrahn.arrahn_master_db but present in config. Make sure both of connection exist in both app/config and arrahn_master_db', $tested_connection)); + dump(sprintf('Connection %s not found in table %s.arrahn_master_db but present in config. Make sure both of connection exist in both app/config and arrahn_master_db', $tested_connection, config('tennant_database.master_db'))); return; } diff --git a/app/Helper.php b/app/Helper.php index 63fb7b7..ceccf4f 100644 --- a/app/Helper.php +++ b/app/Helper.php @@ -12,7 +12,7 @@ class Helper { $online_arrahn_connection = array_filter(config('database.connections'), function ($connection) { - if ($connection['database'] === 'online_arrahn') { + if ($connection['database'] === config('tennant_database.master_db')) { return $connection; } }); @@ -43,7 +43,7 @@ class Helper } }); - $non_cawangan_database = ['lelong', 'online_arrahn', 'kaunterpkb']; + $non_cawangan_database = ['lelong', config('tennant_database.master_db'), config('tennant_database.kaunter_db')]; $all_cawangan_db = array_filter($all_active_db_keys, function ($db_key) use ($non_cawangan_database) { $isNotCawangan = in_array(config('database.connections.' . $db_key . '.database'), $non_cawangan_database); @@ -74,7 +74,7 @@ class Helper } }); - $non_cawangan_database = ['lelong', 'online_arrahn', 'kaunterpkb']; + $non_cawangan_database = ['lelong', config('tennant_database.master_db'), config('tennant_database.kaunter_db')]; $all_cawangan_db = array_filter($all_inactive_db_keys, function ($db_key) use ($non_cawangan_database) { $isNotCawangan = in_array(config('database.connections.' . $db_key . '.database'), $non_cawangan_database); diff --git a/app/Http/Controllers/CustomerController.php b/app/Http/Controllers/CustomerController.php index c19232b..06fc48f 100644 --- a/app/Http/Controllers/CustomerController.php +++ b/app/Http/Controllers/CustomerController.php @@ -720,7 +720,7 @@ class CustomerController extends Controller $customer = Customer::on($cawangan['mysql']) ->where('kplama','=',$nokp) ->orWhere('kpbaru','=',$nokp) - ->rightJoin('online_arrahn.bank', 'bank.id', '=', 'customer.kodbank') + ->rightJoin(config('tennant_database.master_db') . '.bank', 'bank.id', '=', 'customer.kodbank') ->first(); if(!empty($customer)) diff --git a/app/Http/Controllers/MarhunController.php b/app/Http/Controllers/MarhunController.php index 1ae633e..2153483 100644 --- a/app/Http/Controllers/MarhunController.php +++ b/app/Http/Controllers/MarhunController.php @@ -203,7 +203,7 @@ class MarhunController extends Controller $marhun = Marhun::on($cawangan['mysql']) ->select('marhun.norujukan','gadai.nokp','customer.nama','marhun.marhun','marhun.nota','marhun.berat','marhun.karat','marhun.harga','marhun.n_marhun','marhun.t_gadai','marhun.tag_permata', 'marhun.berat_batu_permata') ->rightJoin('gadai', 'gadai.norujukan', '=', 'marhun.norujukan') - ->rightJoin('master_krk.customer as customer', 'customer.kpbaru','=','gadai.nokp') + ->rightJoin(config('tennant_database.master_db') . '.customer as customer', 'customer.kpbaru','=','gadai.nokp') ->where('marhun.t_gadai','=',$tarikh) ->orderBy('marhun.t_gadai') ->get(); @@ -221,7 +221,7 @@ class MarhunController extends Controller $marhun = Marhun::on($cawangan['mysql']) ->select('marhun.norujukan','gadai.sttebus','gadai.pinjaman','gadai.nokp','customer.nama','marhun.marhun','marhun.nota','marhun.berat','marhun.karat','marhun.harga','marhun.n_marhun','marhun.t_gadai') ->rightJoin('gadai', 'gadai.norujukan', '=', 'marhun.norujukan') - ->rightJoin('master_krk.customer as customer', 'customer.kpbaru','=','gadai.nokp') + ->rightJoin(config('tennant_database.master_db') . '.customer as customer', 'customer.kpbaru','=','gadai.nokp') ->where('marhun.t_gadai','<=',$tarikh) ->whereYear('marhun.t_gadai','=',$current->year) ->where('gadai.sttebus','=','') diff --git a/bootstrap/app.php b/bootstrap/app.php index bf393b1..16b5e30 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -61,7 +61,7 @@ $app->singleton( $app->configure('app'); $app->configure('tinker'); -$app->configure('tennant_master'); +$app->configure('tennant_database'); $app->configure('report'); $app->configure('app_parameter'); diff --git a/config/tennant_database.php b/config/tennant_database.php new file mode 100644 index 0000000..09d92cb --- /dev/null +++ b/config/tennant_database.php @@ -0,0 +1,6 @@ + env('TENNANT_MASTER_DB','online_arrahn'), + 'kaunter_db' => env('TENNANT_KAUNTER_DB','kaunterpkb') +]; diff --git a/config/tennant_master.php b/config/tennant_master.php deleted file mode 100644 index 6e88ed0..0000000 --- a/config/tennant_master.php +++ /dev/null @@ -1,5 +0,0 @@ - env('TENNANT_MASTER_DB','master_krk') -]; diff --git a/database/migrations/2023_11_14_121109_add_columns_to_komuditi_transaksi.php b/database/migrations/2023_11_14_121109_add_columns_to_komuditi_transaksi.php index e564eb6..897302e 100644 --- a/database/migrations/2023_11_14_121109_add_columns_to_komuditi_transaksi.php +++ b/database/migrations/2023_11_14_121109_add_columns_to_komuditi_transaksi.php @@ -42,7 +42,7 @@ class AddColumnsToKomuditiTransaksi extends Migration { $online_arrahn_connection_array = array_filter(config('database.connections'), function($connection) { - if($connection['database'] === 'online_arrahn' || $connection['database'] === 'master_krk' || $connection['database'] === config('tennant_master.database')){ + if($connection['database'] === config('tennant_database.master_db')){ return true; } @@ -53,7 +53,7 @@ class AddColumnsToKomuditiTransaksi extends Migration if(empty($online_arrahn_connection_array)){ - throw new Exception("online_arrahn or master_krk doesn't exist in config.database.connections array"); + throw new Exception("Tennant master database (" . config('tennant_database.master_db') . ") doesn't exist in config.database.connections array"); } return array_keys($online_arrahn_connection_array)[0]; diff --git a/tinker/getActiveCawanganDbConnection.php b/tinker/getActiveCawanganDbConnection.php index a9fd113..96df402 100644 --- a/tinker/getActiveCawanganDbConnection.php +++ b/tinker/getActiveCawanganDbConnection.php @@ -11,7 +11,7 @@ $all_active_db_keys = array_filter(array_keys(config('database.connections')), f } }); -$non_cawangan_database = ['lelong', 'online_arrahn', 'kaunterpkb']; +$non_cawangan_database = ['lelong', config('tennant_database.master_db'), config('tennant_database.kaunter_db')]; $all_cawangan_db = array_filter($all_active_db_keys, function($db_key) use($non_cawangan_database){ $isNotCawangan = in_array(config('database.connections.' . $db_key . '.database'), $non_cawangan_database);