ManagePromptsUseCase.php
- Pfad:
src/UseCases/Prompts/ManagePromptsUseCase.php - Namespace: UseCases\Prompts
- Zeilen: 120 | Größe: 3,215 Bytes
- Geändert: 2025-12-23 08:49:25 | Gescannt: 2025-12-31 10:22:15
Code Hygiene Score: 100
- Dependencies: 100 (25%)
- LOC: 100 (20%)
- Methods: 100 (20%)
- Secrets: 100 (15%)
- Classes: 100 (10%)
- Magic Numbers: 100 (10%)
Keine Issues gefunden.
Dependencies 2
- constructor Infrastructure\Persistence\PromptsRepository
- use Infrastructure\Persistence\PromptsRepository
Klassen 1
-
ManagePromptsUseCaseclass Zeile 11
Funktionen 10
-
__construct()public Zeile 13 -
getAll()public Zeile 18 -
getById()public Zeile 26 -
getActivePrompts()public Zeile 33 -
create()public Zeile 38 -
update()public Zeile 56 -
delete()public Zeile 80 -
duplicate()Zeile 97 -
getLinkedCritics()Zeile 110 -
getStatistics()Zeile 115
Verwendet von 2
- PromptsController.php constructor
- PromptsController.php use
Versionen 2
-
v2
2025-12-23 08:17 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation -
v1
2025-12-23 07:55 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation
Code
<?php
declare(strict_types=1);
namespace UseCases\Prompts;
// @responsibility: Verwaltet Prompts (CRUD, Duplizieren)
use Infrastructure\Persistence\PromptsRepository;
final class ManagePromptsUseCase
{
public function __construct(
private PromptsRepository $promptsRepo
) {
}
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();
}
}