<?php

declare(strict_types=1);

namespace App\Module\Core\Infrastructure\ApiPlatform\Resource;

use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\Get;
use App\Module\Core\Infrastructure\ApiPlatform\State\Provider\AuditLogEntityTypesProvider;

/**
 * Retourne la liste des valeurs distinctes de `entity_type` presentes dans
 * `audit_log`, pour alimenter le filtre multi-selection cote front (journal
 * d'audit). La liste evolue automatiquement avec les nouvelles entites
 * `#[Auditable]` au fil des ecritures.
 */
#[ApiResource(
    shortName: 'AuditLogEntityTypes',
    operations: [
        new Get(
            uriTemplate: '/audit-log-entity-types',
            security: "is_granted('core.audit_log.view')",
            provider: AuditLogEntityTypesProvider::class,
        ),
    ],
)]
final class AuditLogEntityTypesResource
{
    /** @param list<string> $entityTypes */
    public function __construct(
        public readonly string $id = 'entity-types',
        public readonly array $entityTypes = [],
    ) {}
}
