setName('scheme:sync')
->addOption('skip-data', null, Option::VALUE_NONE, 'Skip data migration')
->addOption('force', null, Option::VALUE_NONE, 'Force execution without confirmation')
->setDescription('Synchronize Scheme classes to Database');
}
protected function execute(Input $input, Output $output)
{
$skipData = $input->getOption('skip-data');
$service = new SchemeToDbService();
$schemeDir = app()->getAppPath() . 'admin/scheme/';
if (!is_dir($schemeDir)) {
$output->writeln("Scheme directory not found: $schemeDir");
return;
}
$files = glob($schemeDir . '*.php');
foreach ($files as $file) {
require_once $file;
$className = 'app\\admin\\scheme\\' . basename($file, '.php');
if (class_exists($className)) {
$output->writeln("Syncing $className...");
try {
$backup = $service->sync($className, $skipData);
$output->writeln("Success!");
if ($backup) {
$output->writeln("Backup created: $backup");
}
} catch (\Exception $e) {
$output->writeln("Failed: " . $e->getMessage() . "");
}
}
}
}
}