LoadChatSessionUseCase.php
- Pfad:
src/UseCases/Chat/LoadChatSessionUseCase.php - Namespace: UseCases\Chat
- Zeilen: 60 | Größe: 1,706 Bytes
- Geändert: 2025-12-25 17:02:22 | 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 4
- constructor Domain\Repository\ChatSessionRepositoryInterface
- constructor Domain\Repository\ChatMessageRepositoryInterface
- use Domain\Repository\ChatMessageRepositoryInterface
- use Domain\Repository\ChatSessionRepositoryInterface
Klassen 1
-
LoadChatSessionUseCaseclass Zeile 12
Funktionen 3
-
__construct()public Zeile 14 -
execute()public Zeile 23 -
createNew()public Zeile 41
Versionen 7
-
v7
2025-12-25 17:02 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation -
v6
2025-12-25 17:01 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation -
v5
2025-12-25 17:01 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation -
v4
2025-12-25 17:00 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation -
v3
2025-12-25 09:40 | claude-code-hook | modified
Claude Code Pre-Hook Backup vor Edit-Operation -
v2
2025-12-23 08:16 | 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\Chat;
// @responsibility: Lädt Chat-Session mit allen Nachrichten
use Domain\Repository\ChatMessageRepositoryInterface;
use Domain\Repository\ChatSessionRepositoryInterface;
class LoadChatSessionUseCase
{
public function __construct(
private ChatSessionRepositoryInterface $sessionRepo,
private ChatMessageRepositoryInterface $messageRepo
) {
}
/**
* Load session by UUID with all messages
*/
public function execute(string $uuid): ?ChatSessionDTO
{
$session = $this->sessionRepo->findByUuid($uuid);
if ($session === null) {
return null;
}
$messages = $this->messageRepo->findBySessionId($session->getId() ?? 0);
return new ChatSessionDTO($session, $messages);
}
/**
* Create a new session and return it
*
* @param array<string> $collections
*/
public function createNew(
string $model = 'claude-opus-4-5-20251101',
array $collections = ['documents'],
int $contextLimit = 5
): ChatSessionDTO {
$uuid = $this->sessionRepo->generateUuid();
$metadata = \Domain\ValueObject\SessionMetadata::create($model, $collections, $contextLimit);
$session = \Domain\Factory\ChatSessionFactory::createNew(
\Domain\ValueObject\SessionUuid::fromString($uuid),
$metadata
);
$sessionId = $this->sessionRepo->save($session);
// Reload to get full data including timestamps
$savedSession = $this->sessionRepo->findByUuid($uuid);
return new ChatSessionDTO($savedSession ?? $session->withId($sessionId), []);
}
}