Files
api_arrahn/app/Console/Commands/CloneDatabase.php
T
2025-04-07 15:05:43 +08:00

83 lines
3.0 KiB
PHP

<?php
namespace App\Console\Commands;
use Exception;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
class CloneDatabase extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'migrate:clone';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Generate Laravel migrations from an existing database';
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$tables = DB::connection('mysql7')->select("SHOW TABLES");
$namedatabase = DB::connection('mysql7')->getDatabaseName();
if (empty($tables)) {
$this->error("No tables found in database");
return;
}
$boolreject = false;
$list_of_rejected = ($boolreject) ? $this->rejected_table() : [];
// Get table names
$tableNames = array_map(fn($table) => is_array($table) ? array_values($table) : $table, $tables);
$tableString = collect($tables)->pluck('Tables_in_' .$namedatabase)->reject(fn($table) => in_array($table, $list_of_rejected))->implode(',');
// Run migration generator
Artisan::call("migrate:generate --path=database/migrations --tables=" .$tableString);
// Artisan::call("migrate:status");
$this->info("Migrations generated successfully for database");
}
protected function rejected_table() : Array{
return [
'alert','auditbarcode','auditdaftar',
'auditrekodsemakan','audtrail','bakipelanggan',
'bandar','batchlel_xtra','bayaranpenebusan','belian',
'brand','checker','configkaunter','gadaisimulasi','gadaitemp',
'gadaixtra','hapusgadaionline','hargaemasbeli',
'hargaemasjual','imbangan','inoutmarxtra',
'jemas00', 'jemasbeli','jemasxtra',
'jenisakaun','jualan','jualemas','jumlahtebus',
'karat','karatbeli','karatjual','karatxtra',
'ku_nm', 'ku_nmbaru', 'ku_nmxtra', 'kumpulan',
'kurangxtra', 'lapringkasan', 'laptebus', 'lapterkumpul',
'lapterkumpulharian','lelkarat','lelmarhun_xtra', 'marhunbeli',
'marhunjual', 'marhunsimulasi', 'marhunxtra', 'model',
'outmarhun', 'outmarhunxtra', 'palsu', 'pemeriksaan',
'pengesahangadai', ' peratusan', 'percentonline',
'polisxtra','product','ramalan', 'rekodtangguh', 'sahabat',
'simpanan', 'simulasi_batchlel', 'simulasi_batchlelxtra',
'simulasi_lelmarhun', 'simulasi_lelong', 'simulasi_lelongxtra',
'tagpelanggan', 'tangguhlelong', 'taraf',
'tebus_xtra', 'tebuslelong', 'temp_ic', 'tempimbang',
'tempnosiri', 'tempnosirixtra', 'temppwd', 'temptarikhaging',
'tunaigadteb', 'tuntutbakixtra', 'ubs_code', 'ugama',
'updateserver', 'zparameter', 'zparameterxtra','ZPARAMETER1'];
}
}