Backup #841
| ID | 841 |
| Dateipfad | /var/www/dev.campus.systemische-tools.de/src/UseCases/Prompts/ManagePromptsUseCase.php |
| Version | 2 |
| Typ |
modified |
| Größe | 3.2 KB |
| Hash | e5839b1b89ae21cf69cb764e1208de1892f252e43aa5d236a30b3fa871889e1b |
| Datum | 2025-12-23 08:17:05 |
| Geändert von | claude-code-hook |
| Grund | Claude Code Pre-Hook Backup vor Edit-Operation |
| Datei existiert |
Ja
|
Dateiinhalt
<?php
declare(strict_types=1);
namespace UseCases\Prompts;
// @responsibility: Verwaltet Prompts (CRUD, Duplizieren)
use Infrastructure\Persistence\PromptsRepository;
final class ManagePromptsUseCase
{
private PromptsRepository $promptsRepo;
public function __construct(?PromptsRepository $promptsRepo = null)
{
$this->promptsRepo = $promptsRepo ?? new PromptsRepository();
}
public function getAll(): array
{
return array_map(
fn (array $row) => PromptDTO::fromArray($row),
$this->promptsRepo->findAll()
);
}
public function getById(int $id): ?PromptDTO
{
$data = $this->promptsRepo->findById($id);
return $data !== null ? PromptDTO::fromArray($data) : null;
}
public function getActivePrompts(): array
{
return $this->promptsRepo->findActivePrompts();
}
public function create(
string $name,
string $version,
string $content,
bool $isActive
): PromptResult {
$name = trim($name);
$content = trim($content);
if ($name === '' || $content === '') {
return PromptResult::error('Name und Inhalt sind erforderlich.');
}
$id = $this->promptsRepo->create($name, $version, $content, $isActive ? 1 : 0);
return PromptResult::success($id, 'Prompt erfolgreich erstellt.');
}
public function update(
int $id,
string $name,
string $version,
string $content,
bool $isActive
): PromptResult {
$name = trim($name);
$content = trim($content);
if ($name === '' || $content === '') {
return PromptResult::error('Name und Inhalt sind erforderlich.');
}
$existing = $this->promptsRepo->findById($id);
if ($existing === null) {
return PromptResult::error('Prompt nicht gefunden.');
}
$this->promptsRepo->update($id, $name, $version, $content, $isActive ? 1 : 0);
return PromptResult::success($id, 'Prompt aktualisiert.');
}
public function delete(int $id): PromptResult
{
$existing = $this->promptsRepo->findById($id);
if ($existing === null) {
return PromptResult::error('Prompt nicht gefunden.');
}
$criticCount = $this->promptsRepo->countLinkedCritics($id);
if ($criticCount > 0) {
return PromptResult::error("Kann nicht gelöscht werden: {$criticCount} Critics verknüpft.");
}
$this->promptsRepo->delete($id);
return PromptResult::success($id, 'Prompt gelöscht.');
}
public function duplicate(int $id): PromptResult
{
$existing = $this->promptsRepo->findById($id);
if ($existing === null) {
return PromptResult::error('Prompt nicht gefunden.');
}
$newName = $existing['name'] . ' (Kopie)';
$newId = $this->promptsRepo->duplicate($id, $newName, '1.0');
return PromptResult::success($newId, 'Prompt dupliziert.');
}
public function getLinkedCritics(int $promptId): array
{
return $this->promptsRepo->findLinkedCritics($promptId);
}
public function getStatistics(): array
{
return $this->promptsRepo->getStatistics();
}
}
Vollständig herunterladen
Aktionen
Andere Versionen dieser Datei
| ID |
Version |
Typ |
Größe |
Datum |
| 841 |
2 |
modified |
3.2 KB |
2025-12-23 08:17 |
| 720 |
1 |
modified |
3.2 KB |
2025-12-23 07:55 |
← Zurück zur Übersicht