Add column migration checker

This commit is contained in:
Afiq Hamzah
2023-12-14 17:44:15 +08:00
parent 370b620bd7
commit f6110cfb9b
5 changed files with 99 additions and 49 deletions
@@ -14,14 +14,14 @@ class AddOnepercentToGadaiTable extends Migration
*/ */
/** /**
* *
* @var object $db_connection * @var object $db_connection
*/ */
public function getActiveDB(){ public function getActiveDB(){
$config_db = array_keys(config("database.connections")); $config_db = array_keys(config("database.connections"));
$db_connection = array_filter($config_db,function($connection){ $db_connection = array_filter($config_db,function($connection){
try{ try{
if($connection == 'mysql7') if($connection == 'mysql7')
@@ -39,17 +39,23 @@ class AddOnepercentToGadaiTable extends Migration
public function up() public function up()
{ {
$db_connection = $this->getActiveDB(); $db_connection = $this->getActiveDB();
foreach($db_connection as $dbase){ foreach($db_connection as $dbase){
Schema::connection($dbase)->table('gadai', function (Blueprint $table) { Schema::connection($dbase)->table('gadai', function (Blueprint $table) use($dbase) {
$table->decimal('kadarujrah', 5, 2);
$isKadarUjrahExist = Schema::connection($dbase)->hasColumn('gadai', 'kadarujrah');
if(! $isKadarUjrahExist){
$table->decimal('kadarujrah', 5, 2);
}
$table->decimal('ujrah', 9, 2); $table->decimal('ujrah', 9, 2);
$table->decimal('onepercent', 9, 2); $table->decimal('onepercent', 9, 2);
$table->decimal('margin_semasa', 5, 2); $table->decimal('margin_semasa', 5, 2);
$table->tinyInteger('tagbaru')->default(0); $table->tinyInteger('tagbaru')->default(0);
}); });
} }
} }
/** /**
@@ -62,11 +68,18 @@ class AddOnepercentToGadaiTable extends Migration
$db_connection = $this->getActiveDB(); $db_connection = $this->getActiveDB();
foreach($db_connection as $dbase){ foreach($db_connection as $dbase){
if (Schema::connection('mysql7')->hasColumn('kadarujrah', 'ujrah', 'onepercent','margin_semasa','tagbaru')){ $columns = ['kadarujrah', 'ujrah', 'onepercent','margin_semasa','tagbaru'];
Schema::connection($dbase)->table('gadai', function (Blueprint $table) {
$table->dropColumn(['kadarujrah', 'ujrah', 'onepercent','margin_semasa','tagbaru']);
}); $columns_exist = array_filter($columns,function($column) use($dbase){
} return Schema::connection($dbase)->hasColumn('gadai', $column);
});
Schema::connection($dbase)->table('gadai', function(Blueprint $table) use($columns_exist){
foreach($columns_exist as $column){
$table->dropColumn($column);
}
});
} }
} }
} }
@@ -14,8 +14,17 @@ class AddOnepercentToKadarupahTable extends Migration
public function up() public function up()
{ {
Schema::connection('mysql7')->table('kadarupah', function (Blueprint $table) { Schema::connection('mysql7')->table('kadarupah', function (Blueprint $table) {
$table->decimal('kadarujrah', 5, 2);
$table->decimal('kadaronepercent', 5, 2); $isKadarUjrahExist = Schema::connection('mysql7')->hasColumn('kadarupah', 'kadarujrah');
$isKadarOnePercentExist = Schema::connection('mysql7')->hasColumn('kadarupah', 'kadaronepercent');
if (!$isKadarUjrahExist) {
$table->decimal('kadarujrah', 5, 2);
}
if (!$isKadarOnePercentExist) {
$table->decimal('kadaronepercent', 5, 2);
}
}); });
} }
@@ -26,8 +35,14 @@ class AddOnepercentToKadarupahTable extends Migration
*/ */
public function down() public function down()
{ {
Schema::connection('mysql7')->table('kadarupah', function (Blueprint $table) { $columns = ['kadarujrah', 'kadaronepercent'];
$table->dropColumn(['kadarujrah','kadaronepercent']);
$columns_exist = array_filter($columns, function ($column) {
return Schema::connection('mysql7')->hasColumn('kadarupah', $column);
});
Schema::connection('mysql7')->table('kadarupah', function (Blueprint $table) use($columns_exist) {
$table->dropColumn($columns_exist);
}); });
} }
@@ -13,15 +13,16 @@ class AddOnepercentToTransactionKeuntunganTable extends Migration
*/ */
public function up() public function up()
{ {
Schema::connection('mysql7')->table('transaksi_keuntungan', function (Blueprint $table) { $columns = ['ujrah', 'ujrah_rebet', 'onepercent', 'onepercent_rebet', 'tempoh', 'beza_tempoh', 'margin_semasa'];
$table->decimal('ujrah', 5, 2);
$table->decimal('ujrah_rebet', 5, 2); $columns_not_exist = array_filter($columns, function ($column) {
$table->decimal('onepercent', 5, 2); return !Schema::connection('mysql7')->hasColumn('transaksi_keuntungan', $column);
$table->decimal('onepercent_rebet', 5, 2); });
$table->decimal('tempoh', 5, 2);
$table->decimal('beza_tempoh', 5, 2); Schema::connection('mysql7')->table('transaksi_keuntungan', function (Blueprint $table) use ($columns_not_exist) {
$table->decimal('margin_semasa', 5, 2); array_walk($columns_not_exist, function ($column) use ($table) {
$table->decimal('rounded', 5, 2); $table->decimal($column, 5, 2);
});
}); });
} }
@@ -32,10 +33,14 @@ class AddOnepercentToTransactionKeuntunganTable extends Migration
*/ */
public function down() public function down()
{ {
if (Schema::connection('mysql7')->hasColumn('ujrah', 'onepercent')){ $columns = ['ujrah', 'ujrah_rebet', 'onepercent', 'onepercent_rebet', 'tempoh', 'beza_tempoh', 'margin_semasa'];
Schema::connection('mysql7')->table('transaksi_keuntungan', function (Blueprint $table) {
$table->dropColumn(['ujrah', 'ujrah_rebet', 'onepercent', 'onepercent_rebet', 'tempoh', 'beza_tempoh', 'margin_semasa','rounded']); $columns_exist = array_filter($columns, function ($column) {
}); return Schema::connection('mysql7')->hasColumn('transaksi_keuntungan', $column);
} });
Schema::connection('mysql7')->table('transaksi_keuntungan', function (Blueprint $table) use($columns_exist) {
$table->dropColumn($columns_exist);
});
} }
} }
@@ -14,35 +14,47 @@ class AddOnepercentToTebusTable extends Migration
*/ */
/** /**
* *
* @var object $db_connection * @var object $db_connection
*/ */
public function getActiveDB(){ public function getActiveDB()
{
$config_db = array_keys(config("database.connections")); $config_db = array_keys(config("database.connections"));
$db_connection = array_filter($config_db,function($connection){ $db_connection = array_filter($config_db, function ($connection) {
try{ try {
if($connection == 'mysql7') if ($connection == 'mysql7') {
return false; return false;
}
$db = DB::connection($connection)->getPdo(); $db = DB::connection($connection)->getPdo();
return true; return true;
} catch(\Exception $e){ } catch (\Exception $e) {
return false; return false;
} }
}); });
return $db_connection; return $db_connection;
} }
public function up() public function up()
{ {
$db_connection = $this->getActiveDB(); $db_connection = $this->getActiveDB();
foreach($db_connection as $dbase){ foreach ($db_connection as $dbase) {
Schema::connection($dbase)->table('tebus', function (Blueprint $table) {
$table->decimal('ujrah', 9, 2); $columns = ['ujrah', 'onepercent'];
$table->decimal('onepercent', 9, 2);
$columns_not_exist = array_filter($columns, function ($column) use ($dbase) {
return !Schema::connection($dbase)->hasColumn('tebus', $column);
});
Schema::connection($dbase)->table('tebus', function (Blueprint $table) use ($columns_not_exist) {
array_walk($columns_not_exist, function ($column) use ($table) {
$table->decimal($column, 9, 2);
});
}); });
}; };
} }
@@ -56,12 +68,17 @@ class AddOnepercentToTebusTable extends Migration
{ {
$db_connection = $this->getActiveDB(); $db_connection = $this->getActiveDB();
foreach($db_connection as $dbase){ foreach ($db_connection as $dbase) {
if (Schema::connection($dbase)->hasColumn('ujrah', 'onepercent')){
Schema::connection($dbase)->table('tebus', function (Blueprint $table) { $columns = ['ujrah', 'onepercent'];
$table->dropColumn(['ujrah', 'onepercent']);
}); $columns_exist = array_filter($columns, function ($column) use($dbase) {
} return Schema::connection($dbase)->hasColumn('tebus', $column);
});
Schema::connection($dbase)->table('tebus', function (Blueprint $table) use ($columns_exist) {
$table->dropColumn($columns_exist);
});
} }
} }
} }
@@ -42,7 +42,7 @@ class AddColumnsToKomuditiTransaksi extends Migration
{ {
$online_arrahn_connection_array = array_filter(config('database.connections'), function($connection) { $online_arrahn_connection_array = array_filter(config('database.connections'), function($connection) {
if($connection['database'] === 'online_arrahn2' || $connection['database'] === 'master_krk'){ if($connection['database'] === 'online_arrahn' || $connection['database'] === 'master_krk'){
return true; return true;
} }