fix: DockerSecretsResolver - don't normalize absolute paths like /var/www/html/...
Some checks failed
Deploy Application / deploy (push) Has been cancelled

This commit is contained in:
2025-11-24 21:28:25 +01:00
parent 4eb7134853
commit 77abc65cd7
1327 changed files with 91915 additions and 9909 deletions

View File

@@ -0,0 +1,74 @@
<?php
declare(strict_types=1);
namespace App\Framework\Database\Seed;
use App\Framework\Logging\Logger;
final readonly class SeedRunner
{
public function __construct(
private SeedRepository $seedRepository,
private ?Logger $logger = null
) {
}
/**
* Run a seeder if it hasn't been executed yet
*
* @param Seeder $seeder The seeder to run
* @throws \Throwable If the seeder fails
*/
public function run(Seeder $seeder): void
{
$name = $seeder->getName();
// Check if already executed
if ($this->seedRepository->hasRun($name)) {
$this->log("Skipping seeder '{$name}' - already executed", 'info');
return;
}
$this->log("Running seeder '{$name}'...", 'info');
try {
$seeder->seed();
$this->seedRepository->markAsRun($name, $seeder->getDescription());
$this->log("Seeder '{$name}' completed successfully", 'info');
} catch (\Throwable $e) {
$this->log("Seeder '{$name}' failed: {$e->getMessage()}", 'error');
throw $e;
}
}
/**
* Run multiple seeders
*
* @param Seeder[] $seeders Array of seeders to run
*/
public function runAll(array $seeders): void
{
foreach ($seeders as $seeder) {
$this->run($seeder);
}
}
/**
* Log a message if logger is available
*/
private function log(string $message, string $level = 'info'): void
{
if ($this->logger !== null) {
match ($level) {
'error' => $this->logger->error($message),
'warning' => $this->logger->warning($message),
default => $this->logger->info($message),
};
} else {
// Fallback to echo if no logger available
echo "[{$level}] {$message}\n";
}
}
}