UpdatePipelineConfigUseCase.php

Code Hygiene Score: 100

Keine Issues gefunden.

Dependencies 3

Klassen 1

Funktionen 2

Verwendet von 2

Versionen 2

Code

<?php

declare(strict_types=1);

namespace UseCases\Pipeline;

// @responsibility: Aktualisiert Pipeline-Konfiguration (Pfad, Extensions)

use Domain\Repository\PipelineRepositoryInterface;
use Infrastructure\Config\PipelineStepConfig;

class UpdatePipelineConfigUseCase
{
    public function __construct(
        private PipelineRepositoryInterface $repository
    ) {
    }

    /**
     * Update pipeline configuration.
     *
     * @param int $pipelineId Pipeline ID
     * @param array{source_path?: string, extensions?: string} $input Input data
     * @return array{success: bool, error?: string}
     */
    public function execute(int $pipelineId, array $input): array
    {
        $pipeline = $this->repository->findById($pipelineId);

        if ($pipeline === null) {
            return ['success' => false, 'error' => 'Pipeline nicht gefunden'];
        }

        $updateData = [];

        if (isset($input['source_path'])) {
            $sourcePath = trim($input['source_path']);
            if ($sourcePath === '') {
                return ['success' => false, 'error' => 'Quellpfad darf nicht leer sein'];
            }
            $updateData['source_path'] = $sourcePath;
        }

        if (isset($input['extensions'])) {
            $extensions = PipelineStepConfig::parseExtensions($input['extensions']);
            if (empty($extensions)) {
                return ['success' => false, 'error' => 'Mindestens ein Dateityp erforderlich'];
            }
            $updateData['extensions'] = $extensions;
        }

        if (empty($updateData)) {
            return ['success' => false, 'error' => 'Keine Änderungen'];
        }

        $this->repository->update($pipelineId, $updateData);

        return ['success' => true];
    }
}
← Übersicht Graph