mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-07-01 15:32:48 +08:00
54 lines
1.7 KiB
PHP
54 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace base\common\command\scheme;
|
|
|
|
use think\console\Command;
|
|
use think\console\Input;
|
|
use think\console\input\Option;
|
|
use think\console\Output;
|
|
use think\facade\App;
|
|
use app\common\service\scheme\SchemeToDbService;
|
|
|
|
class Sync extends Command
|
|
{
|
|
protected function configure()
|
|
{
|
|
$this->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("<error>Scheme directory not found: $schemeDir</error>");
|
|
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("<info>Success!</info>");
|
|
if ($backup) {
|
|
$output->writeln("Backup created: $backup");
|
|
}
|
|
} catch (\Exception $e) {
|
|
$output->writeln("<error>Failed: " . $e->getMessage() . "</error>");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|