Backup #1409

ID1409
Dateipfad/var/www/dev.campus.systemische-tools.de/src/Infrastructure/Persistence/ContentRepository.php
Version21
Typ modified
Größe5.1 KB
Hashd8c8e6b99a8ff73179950e7963b4d2b451d7de6f85ef66166cf73902a8a32d78
Datum2025-12-25 16:58:38
Geändert vonclaude-code-hook
GrundClaude Code Pre-Hook Backup vor Edit-Operation
Datei existiert Ja

Dateiinhalt

<?php

declare(strict_types=1);

namespace Infrastructure\Persistence;

// @responsibility: Persistenz für Content-Konfigurationen

use Domain\Repository\ContentOrderRepositoryInterface;
use Domain\Repository\ContentRepositoryInterface;
use Domain\Repository\ContentSourceRepositoryInterface;
use Domain\Repository\ContentVersionRepositoryInterface;

class ContentRepository implements ContentRepositoryInterface
{
    private \PDO $pdo;
    private ContentOrderRepositoryInterface $orderRepository;
    private ContentVersionRepositoryInterface $versionRepository;
    private ContentSourceRepositoryInterface $sourceRepository;

    public function __construct(
        \PDO $pdo,
        ContentOrderRepositoryInterface $orderRepository,
        ContentVersionRepositoryInterface $versionRepository,
        ContentSourceRepositoryInterface $sourceRepository
    ) {
        $this->pdo = $pdo;
        $this->orderRepository = $orderRepository;
        $this->versionRepository = $versionRepository;
        $this->sourceRepository = $sourceRepository;
    }

    // ==================== Delegation to specialized repositories ====================

    public function findAllOrders(array $filters = [], int $limit = 50, int $offset = 0): array
    {
        return $this->orderRepository->findAllOrders($filters, $limit, $offset);
    }

    public function findOrder(int $id): ?array
    {
        return $this->orderRepository->findOrder($id);
    }

    public function getLastOrderSettings(): array
    {
        return $this->orderRepository->getLastOrderSettings();
    }

    public function createOrder(array $data): int
    {
        return $this->orderRepository->createOrder($data);
    }

    public function updateOrderStatus(int $id, string $status): void
    {
        $this->orderRepository->updateOrderStatus($id, $status);
    }

    public function updateGenerationStatus(int $id, string $status, ?string $error = null): void
    {
        $this->orderRepository->updateGenerationStatus($id, $status, $error);
    }

    public function updateCritiqueStatus(int $id, string $status, ?string $error = null): void
    {
        $this->orderRepository->updateCritiqueStatus($id, $status, $error);
    }

    public function updateOrder(int $id, array $data): bool
    {
        return $this->orderRepository->updateOrder($id, $data);
    }

    public function findVersionsByOrder(int $orderId): array
    {
        return $this->versionRepository->findVersionsByOrder($orderId);
    }

    public function findLatestVersion(int $orderId): ?array
    {
        return $this->versionRepository->findLatestVersion($orderId);
    }

    public function findVersion(int $id): ?array
    {
        return $this->versionRepository->findVersion($id);
    }

    public function findCritiquesByVersion(int $versionId): array
    {
        return $this->versionRepository->findCritiquesByVersion($versionId);
    }

    public function findSourcesByOrder(int $orderId): array
    {
        return $this->sourceRepository->findSourcesByOrder($orderId);
    }

    // ==================== Profiles ====================

    public function findAllProfiles(): array
    {
        $stmt = $this->pdo->query("
            SELECT id, name, slug, content as config
            FROM content_config
            WHERE type = 'author_profile' AND status = 'active'
            ORDER BY name
        ");

        return $stmt->fetchAll();
    }

    // ==================== Contracts ====================

    public function findAllContracts(): array
    {
        $stmt = $this->pdo->query("
            SELECT id, name, slug, content as config
            FROM content_config
            WHERE type = 'contract' AND status = 'active'
            ORDER BY name
        ");

        return $stmt->fetchAll();
    }

    // ==================== Structures ====================

    public function findAllStructures(): array
    {
        $stmt = $this->pdo->query("
            SELECT id, name, slug, content as config
            FROM content_config
            WHERE type = 'structure' AND status = 'active'
            ORDER BY name
        ");

        return $stmt->fetchAll();
    }

    // ==================== Critics ====================

    public function findAllCritics(): array
    {
        $stmt = $this->pdo->query('
            SELECT * FROM critics WHERE is_active = 1 ORDER BY sort_order
        ');

        return $stmt->fetchAll();
    }

    // ==================== Statistics ====================

    public function getStatistics(): array
    {
        $stats = [];

        $stmt = $this->pdo->query('SELECT COUNT(*) FROM content_orders');
        $stats['total_orders'] = (int) $stmt->fetchColumn();

        $stmt = $this->pdo->query('SELECT status, COUNT(*) as count FROM content_orders GROUP BY status');
        $stats['by_status'] = $stmt->fetchAll(\PDO::FETCH_KEY_PAIR);

        $stmt = $this->pdo->query('SELECT COUNT(*) FROM content_versions');
        $stats['total_versions'] = (int) $stmt->fetchColumn();

        $stmt = $this->pdo->query('SELECT COUNT(*) FROM content_critiques');
        $stats['total_critiques'] = (int) $stmt->fetchColumn();

        return $stats;
    }
}

Vollständig herunterladen

Aktionen

Herunterladen

Andere Versionen dieser Datei

ID Version Typ Größe Datum
2156 22 modified 4.9 KB 2025-12-30 22:22
1409 21 modified 5.1 KB 2025-12-25 16:58
1403 20 modified 4.9 KB 2025-12-25 16:58
1397 19 modified 12.7 KB 2025-12-25 16:58
1204 18 modified 12.7 KB 2025-12-25 10:34
1187 17 modified 12.7 KB 2025-12-25 10:32
1014 16 modified 12.0 KB 2025-12-24 01:29
975 15 modified 11.3 KB 2025-12-24 00:13
768 14 modified 11.2 KB 2025-12-23 08:04
578 13 modified 11.2 KB 2025-12-23 04:22
336 12 modified 11.2 KB 2025-12-22 08:09
335 11 modified 11.2 KB 2025-12-22 08:09
334 10 modified 11.2 KB 2025-12-22 08:09
333 9 modified 11.1 KB 2025-12-22 08:09
247 8 modified 11.0 KB 2025-12-22 01:48
206 7 modified 9.6 KB 2025-12-21 17:01
158 6 modified 9.3 KB 2025-12-21 02:59
154 5 modified 9.0 KB 2025-12-21 02:35
153 4 modified 9.0 KB 2025-12-21 02:34
152 3 modified 8.9 KB 2025-12-21 02:34
126 2 modified 8.9 KB 2025-12-20 19:40
33 1 modified 9.6 KB 2025-12-20 17:23

← Zurück zur Übersicht