fix: DockerSecretsResolver - don't normalize absolute paths like /var/www/html/...
Some checks failed
Deploy Application / deploy (push) Has been cancelled
Some checks failed
Deploy Application / deploy (push) Has been cancelled
This commit is contained in:
77
src/Framework/Database/Seed/SeedCommand.php
Normal file
77
src/Framework/Database/Seed/SeedCommand.php
Normal file
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Framework\Database\Seed;
|
||||
|
||||
use App\Framework\Console\ConsoleCommand;
|
||||
use App\Framework\Console\ConsoleInput;
|
||||
use App\Framework\Console\ExitCode;
|
||||
|
||||
final readonly class SeedCommand
|
||||
{
|
||||
public function __construct(
|
||||
private SeedLoader $seedLoader,
|
||||
private SeedRunner $seedRunner,
|
||||
private SeedRepository $seedRepository
|
||||
) {
|
||||
}
|
||||
|
||||
#[ConsoleCommand('db:seed', 'Run database seeders')]
|
||||
public function seed(ConsoleInput $input): ExitCode
|
||||
{
|
||||
$className = $input->getOption('class');
|
||||
$fresh = $input->hasOption('fresh');
|
||||
|
||||
try {
|
||||
// Clear seeds table if --fresh option is provided
|
||||
if ($fresh) {
|
||||
echo "⚠️ Clearing seeds table (--fresh option)...\n";
|
||||
$this->seedRepository->clearAll();
|
||||
echo "✅ Seeds table cleared.\n\n";
|
||||
}
|
||||
|
||||
if ($className !== null) {
|
||||
// Run specific seeder
|
||||
echo "Running seeder: {$className}\n";
|
||||
$seeder = $this->seedLoader->load($className);
|
||||
|
||||
if ($seeder === null) {
|
||||
echo "❌ Seeder '{$className}' not found or cannot be instantiated.\n";
|
||||
return ExitCode::SOFTWARE_ERROR;
|
||||
}
|
||||
|
||||
$this->seedRunner->run($seeder);
|
||||
echo "✅ Seeder '{$className}' completed.\n";
|
||||
} else {
|
||||
// Run all seeders
|
||||
echo "Running all seeders...\n\n";
|
||||
$seeders = $this->seedLoader->loadAll();
|
||||
|
||||
if (empty($seeders)) {
|
||||
echo "No seeders found.\n";
|
||||
return ExitCode::SUCCESS;
|
||||
}
|
||||
|
||||
echo sprintf("Found %d seeder(s):\n", count($seeders));
|
||||
foreach ($seeders as $seeder) {
|
||||
echo " - {$seeder->getName()}: {$seeder->getDescription()}\n";
|
||||
}
|
||||
echo "\n";
|
||||
|
||||
$this->seedRunner->runAll($seeders);
|
||||
echo "\n✅ All seeders completed.\n";
|
||||
}
|
||||
|
||||
return ExitCode::SUCCESS;
|
||||
} catch (\Throwable $e) {
|
||||
echo "❌ Seeding failed: " . $e->getMessage() . "\n";
|
||||
echo "Error details: " . get_class($e) . "\n";
|
||||
echo "File: " . $e->getFile() . ":" . $e->getLine() . "\n";
|
||||
echo "Stack trace:\n" . $e->getTraceAsString() . "\n";
|
||||
|
||||
return ExitCode::SOFTWARE_ERROR;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user