From 2324dee57e8a69f1fd9c41daefa61c600953beee Mon Sep 17 00:00:00 2001 From: Matthieu Date: Mon, 15 Jun 2026 16:35:44 +0200 Subject: [PATCH] fix(transport) : exclure les tables qualimat du schema_filter Les tables `qualimat_carrier` et `qualimat_sync_log` sont des tables DBAL brutes (referentiel synchronise par `app:qualimat:sync`, hors ORM). Sans exclusion du `schema_filter`, `doctrine:schema:update --force` (lance par le bootstrap CI / make test-db-setup juste apres les migrations) les considere comme orphelines et genere un DROP TABLE -> la base de test perd les tables et SyncQualimatCommandTest casse (relation qualimat_carrier does not exist). Meme traitement que `audit_log` : creation/suppression pilotees par migration, schema_filter les ignore. --- config/packages/doctrine.yaml | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml index a6a4377..9b53c1d 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -8,16 +8,22 @@ doctrine: default: url: '%env(resolve:DATABASE_URL)%' profiling_collect_backtrace: '%kernel.debug%' - # Exclut `audit_log` de toute operation de comparaison de schema - # (doctrine:schema:update, schema:validate, diff de migrations...). - # Cette table n'a volontairement aucune entite mappee : elle est - # append-only via DBAL brut (AuditLogWriter) pour eviter la - # recursion du listener Doctrine. Sans ce filtre, schema:update - # la considere comme "orpheline" et genere un `DROP TABLE - # audit_log` qui casse la base de test apres chaque - # `make test-db-setup`. La creation / suppression de la table - # reste pilotee par les migrations (cf. Version20260420202749). - schema_filter: '~^(?!audit_log$).+~' + # Exclut certaines tables de toute operation de comparaison de + # schema (doctrine:schema:update, schema:validate, diff de + # migrations...). Ces tables n'ont volontairement aucune entite + # mappee : + # - `audit_log` : append-only via DBAL brut (AuditLogWriter) pour + # eviter la recursion du listener Doctrine. + # - `qualimat_carrier` / `qualimat_sync_log` : referentiel + # transporteurs synchronise en DBAL brut (upsert `ON CONFLICT`) + # par `app:qualimat:sync`, hors ORM. + # Sans ce filtre, schema:update les considere comme "orphelines" et + # genere un `DROP TABLE` qui casse la base de test apres chaque + # `make test-db-setup` (la migration les a creees, schema:update les + # supprime juste apres). Creation / suppression restent pilotees par + # les migrations (audit_log : Version20260420202749 ; qualimat : + # Version20260612150000). + schema_filter: '~^(?!(?:audit_log|qualimat_carrier|qualimat_sync_log)$).+~' audit: url: '%env(resolve:DATABASE_URL)%' orm: