repository = $repository ?? new PipelineRepository(); } /** * 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]; } }