# ══════════════════════════════════════════════════════════════════
# Doctrine ORM — doctrine.yaml
# ══════════════════════════════════════════════════════════════════
# Base de données : MariaDB 10.4.32
# Connexion       : mysql://root:@127.0.0.1:3306/ccpointage
# ORM             : mapping via attributs PHP #[ORM\Entity] dans src/Entity/
# Nommage         : underscore_naming_strategy
#                   (ex: nomComplet → colonne nom_complet)
#
# En production, les caches de requêtes et de résultats Doctrine
# utilisent les pools Symfony Cache (PSR-6) définis plus bas.
# ══════════════════════════════════════════════════════════════════
doctrine:
    dbal:
        # URL de connexion lue depuis la variable d'environnement DATABASE_URL
        # Définir dans .env.local en développement
        url: '%env(resolve:DATABASE_URL)%'
        # Collecte les backtraces SQL dans le profiler (dev uniquement)
        profiling_collect_backtrace: '%kernel.debug%'
    orm:
        # Convention de nommage snake_case pour les colonnes
        naming_strategy: doctrine.orm.naming_strategy.underscore
        # Détection automatique des entités (via attributs PHP)
        auto_mapping: true
        mappings:
            App:
                type: attribute         # Utilise les attributs #[ORM\...]
                is_bundle: false
                dir: '%kernel.project_dir%/src/Entity'
                prefix: 'App\Entity'
                alias: App

# ── Environnement de test ──────────────────────────────────────────
# Isole la base de données de test via un suffixe de nom (_test).
# ParaTest peut ajouter un token supplémentaire pour l'exécution parallèle.
when@test:
    doctrine:
        dbal:
            # "TEST_TOKEN" is typically set by ParaTest
            dbname_suffix: '_test%env(default::TEST_TOKEN)%'

# ── Environnement de production ────────────────────────────────────
# Active les caches Doctrine pour réduire les appels SQL répétés.
# Les pools utilisés (cache.app, cache.system) sont configurés dans cache.yaml.
when@prod:
    doctrine:
        orm:
            query_cache_driver:
                type: pool
                pool: doctrine.system_cache_pool
            result_cache_driver:
                type: pool
                pool: doctrine.result_cache_pool

    framework:
        cache:
            pools:
                doctrine.result_cache_pool:
                    adapter: cache.app
                doctrine.system_cache_pool:
                    adapter: cache.system
