doctrine: dbal: # Deux connexions pointant sur le meme DSN : l'ORM utilise `default`, # l'AuditLogWriter utilise `audit` pour ecrire hors de la transaction # Doctrine et eviter tout entanglement transactionnel en batch. default_connection: default connections: default: url: '%env(resolve:DATABASE_URL)%' profiling_collect_backtrace: '%kernel.debug%' audit: url: '%env(resolve:DATABASE_URL)%' orm: validate_xml_mapping: true naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware identity_generation_preferences: Doctrine\DBAL\Platforms\PostgreSQLPlatform: identity auto_mapping: true mappings: Core: type: attribute is_bundle: false dir: '%kernel.project_dir%/src/Module/Core/Domain/Entity' prefix: 'App\Module\Core\Domain\Entity' alias: Core # Mapping inconditionnelle du module Sites : la structure DB # existe meme si SitesModule::class est retire de config/modules.php. # L'activation fonctionnelle (ex: exposition des permissions, futurs # endpoints API) passe exclusivement par config/modules.php. Sites: type: attribute is_bundle: false dir: '%kernel.project_dir%/src/Module/Sites/Domain/Entity' prefix: 'App\Module\Sites\Domain\Entity' alias: Sites controller_resolver: auto_mapping: false when@test: doctrine: dbal: # Le suffixe "_test" doit etre propage aux deux connexions : l'ORM # l'herite via `default`, l'AuditLogWriter via `audit`. Sans cela, # la connexion `audit` ecrirait dans la base dev pendant que l'ORM # ecrit dans la base test — divergence invisible en apparence mais # fatale pour les tests du journal d'audit. # # `idle_connection_ttl: 1` (au lieu du defaut 600s) : en test on # reboote le kernel a chaque test. Sans TTL court, les connexions # orphelines s'accumulent dans PG et on finit par saturer le pool # (max_connections=100) sur une suite de 200+ tests qui utilisent # 2 connexions chacun (default + audit). connections: default: dbname_suffix: '_test%env(default::TEST_TOKEN)%' idle_connection_ttl: 1 audit: dbname_suffix: '_test%env(default::TEST_TOKEN)%' idle_connection_ttl: 1 orm: mappings: # Entite fictive SiteAware utilisee uniquement en tests du # module Sites (ticket 4). Le mapping n'est charge qu'en # environnement test, donc aucun impact sur les schemas # dev/prod. La table est creee a la volee par les tests # d'integration (via `SchemaTool::createSchema`) dans le # setUp de SiteScopedQueryExtensionTest. TestFixtures: type: attribute is_bundle: false dir: '%kernel.project_dir%/tests/Fixtures/SiteAware' prefix: 'App\Tests\Fixtures\SiteAware' alias: TestFixtures 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