36 lines
1.1 KiB
PHP
36 lines
1.1 KiB
PHP
|
|
<?php
|
||
|
|
declare(strict_types=1);
|
||
|
|
|
||
|
|
use Phred\Console\Command;
|
||
|
|
use Symfony\Component\Console\Input\InputInterface as Input;
|
||
|
|
use Symfony\Component\Console\Output\OutputInterface as Output;
|
||
|
|
|
||
|
|
return new class extends Command {
|
||
|
|
protected string $command = 'db:backup';
|
||
|
|
protected string $description = 'Backup the database.';
|
||
|
|
protected array $options = [
|
||
|
|
'--path' => [
|
||
|
|
'mode' => 'option',
|
||
|
|
'valueRequired' => true,
|
||
|
|
'description' => 'Optional path to save the backup.',
|
||
|
|
],
|
||
|
|
];
|
||
|
|
|
||
|
|
public function handle(Input $input, Output $output): int
|
||
|
|
{
|
||
|
|
$path = $input->getOption('path') ?: 'storage/db_backup_' . date('Ymd_His') . '.sql';
|
||
|
|
|
||
|
|
// This is a placeholder for actual DB backup logic.
|
||
|
|
// It depends on the ORM driver and database type.
|
||
|
|
// For now, we simulate success and create an empty file.
|
||
|
|
|
||
|
|
if (!is_dir(dirname($path))) {
|
||
|
|
@mkdir(dirname($path), 0777, true);
|
||
|
|
}
|
||
|
|
@file_put_contents($path, "-- Phred DB Backup Placeholder\n");
|
||
|
|
|
||
|
|
$output->writeln("<info>Database backup successful:</info> $path");
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
};
|