ChatSessionDTO.php

Code Hygiene Score: 86

Keine Issues gefunden.

Dependencies 3

Klassen 1

Funktionen 17

Versionen 3

Code

<?php

declare(strict_types=1);

namespace UseCases\Chat;

// @responsibility: Datenübertragungsobjekt für Chat-Sessions

use Domain\Entity\ChatMessage;
use Domain\Entity\ChatSession;

final class ChatSessionDTO
{
    private ChatSession $session;
    /** @var array<int, ChatMessage> */
    private array $messages;

    /**
     * @param ChatSession $session Session entity
     * @param array<int, ChatMessage> $messages Messages for this session
     */
    public function __construct(
        ChatSession $session,
        array $messages = [],
    ) {
        $this->session = $session;
        $this->messages = $messages;
    }

    public function getSession(): ChatSession
    {
        return $this->session;
    }

    public function getId(): int
    {
        return $this->session->getId() ?? 0;
    }

    public function getUuid(): string
    {
        return $this->session->getUuid();
    }

    public function getTitle(): ?string
    {
        return $this->session->getTitle();
    }

    public function getModel(): string
    {
        return $this->session->getModel();
    }

    /**
     * @return array<string>
     */
    public function getCollections(): array
    {
        return $this->session->getCollections();
    }

    public function getContextLimit(): int
    {
        return $this->session->getContextLimit();
    }

    public function getAuthorProfileId(): int
    {
        return $this->session->getAuthorProfileId() ?? 0;
    }

    public function getSystemPromptId(): int
    {
        return $this->session->getSystemPromptId() ?? 1;
    }

    public function getTemperature(): float
    {
        return $this->session->getTemperature();
    }

    public function getMaxTokens(): int
    {
        return $this->session->getMaxTokens();
    }

    /**
     * @return array<int, ChatMessage>
     */
    public function getMessages(): array
    {
        return $this->messages;
    }

    /**
     * Get messages as arrays for views.
     *
     * @return array<int, array<string, mixed>>
     */
    public function getMessagesAsArrays(): array
    {
        return array_map(fn (ChatMessage $m) => $m->toArray(), $this->messages);
    }

    public function getMessageCount(): int
    {
        return count($this->messages);
    }

    /**
     * Get session as array for views.
     *
     * @return array<string, mixed>
     */
    public function toArray(): array
    {
        return \Domain\Factory\ChatSessionFactory::toArray($this->session);
    }

    /**
     * Check if session exists
     */
    public function exists(): bool
    {
        return $this->getId() > 0;
    }
}
← Übersicht Graph