You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Cependant, il n'y a pas de contrainte FK SQL réelle — seule la relation ORM existe. Cela signifie qu'on peut avoir des déclarations avec un siren qui ne correspond à aucune company en base.
Ce refactor suit le même pattern que gip_mds_data.siren → company.siren réalisé dans #3110.
Code impacté
Schéma DB : packages/app/src/server/db/schema.ts — table declarations (lignes 65-149), colonne siren ligne ~69
Relations : même fichier, declarationsRelations (lignes 151-167)
Queries : les requêtes utilisent déjà innerJoin(companies, eq(declarations.siren, companies.siren)) (ex: packages/app/src/modules/export/queries.ts:113)
Travail à faire
Migration Drizzle : ajouter .references(() => companies.siren) sur la colonne declarations.siren
Mettre à jour le schéma : la relation Drizzle existe déjà, mais la contrainte SQL doit être explicite
Tests : vérifier que les tests d'insertion de déclaration créent bien la company associée
Points d'attention
Contrainte unique existante : declaration_siren_year_idx sur (siren, year) — une seule déclaration par entreprise par an
Le flow de création de déclaration (auth/config.ts JWT callback) crée déjà la company via l'API Weez au login — la FK ne devrait pas poser de problème pour les nouveaux records
Contexte
La table
declarationa une colonnesiren(varchar 9) et une relation Drizzle verscompanydéfinie dansdeclarationsRelations:Cependant, il n'y a pas de contrainte FK SQL réelle — seule la relation ORM existe. Cela signifie qu'on peut avoir des déclarations avec un
sirenqui ne correspond à aucune company en base.Ce refactor suit le même pattern que
gip_mds_data.siren → company.sirenréalisé dans #3110.Code impacté
packages/app/src/server/db/schema.ts— tabledeclarations(lignes 65-149), colonnesirenligne ~69declarationsRelations(lignes 151-167)innerJoin(companies, eq(declarations.siren, companies.siren))(ex:packages/app/src/modules/export/queries.ts:113)Travail à faire
.references(() => companies.siren)sur la colonnedeclarations.sirencompany(sinon créer les companies manquantes avant d'ajouter la FK, comme fait dans refactor(gip): lier gip_mds_data à company par FK siren + cron import quotidien #3110)Points d'attention
declaration_siren_year_idxsur(siren, year)— une seule déclaration par entreprise par anauth/config.tsJWT callback) crée déjà la company via l'API Weez au login — la FK ne devrait pas poser de problème pour les nouveaux records