feat(deployment): persist and validate deployment value sources - #2372
Conversation
|
🤖 Hey ! The security scan report for the current pull request is available here. |
c8fbc42 to
ad4ebf3
Compare
|
🤖 Hey ! The security scan report for the current pull request is available here. |
StephaneTrebel
left a comment
There was a problem hiding this comment.
On n'est pas loin, mais n'hésite pas à être beaucoup plus intransigeant sur le typage. On ne s'autorise aucun "trou dans la raquette" qui pourrait revenir nous mordre par la suite.
J'ai eu la même conversation avec @shikanime hier à ce sujet. undefined, null, etc. c'est terminé. On serre tous les boulons qu'on peut serrer, le plus tôt possible !
87d2da6 to
79c3918
Compare
13f0fc0 to
b712f61
Compare
|
🤖 Hey ! The security scan report for the current pull request is available here. |
b712f61 to
29f69d8
Compare
|
🤖 Hey ! The security scan report for the current pull request is available here. |
The merge-base changed after approval.
29f69d8 to
99af2a8
Compare
|

0 New Issues
5 Fixed Issues
0 Accepted Issues
Issues liées
Issues numéro: #2247
Note
PR empilée (stacked) sur #2369. À rebaser sur
mainune fois #2369 mergée.Quel est le comportement actuel ?
Les sources de valeurs (internes / externes) ne sont pas encore exploitées par l'API : impossible de les créer, mettre à jour ou valider sur une source de déploiement.
Quel est le nouveau comportement ?
Modélisation stricte (parse, don't validate)
DeploymentInternalValueSource/DeploymentExternalValueSource, et côté schémas partagés une union discriminée partype(internal | external).CreateDeploymentValueSource,UpdateDeploymentValueSource,CreateDeploymentSource,UpdateDeploymentSource,DeploymentValueSource,DeploymentSource) dontCreateDeployment/UpdateDeployment/Deploymentse servent, plutôt que des accès indexés (X['deploymentSources'][number]...).API — écriture (create / update)
valueSources(discriminée partype) sur les sources de déploiement. La position dans la liste est conservée (order), préservant l'entrelacement internal / external.superRefine+ contrainte d'unicité en base) ; une source externe doit référencer un dépôt (repositoryId) et unref.API — lecture (read)
valueSources(discriminée partype, avecidetorder), symétrique de la forme d'écriture. La fusion des deux relations persistées est faite une fois, côté serveur (serializeDeployment, triée parorder) : les consommateurs (client, CLI…) n'ont plus à reconstruire la liste. Les deux tables restent un détail de stockage non exposé par l'API.Parsing au niveau du boundary serveur
parseCreateDeployment/parseUpdateDeploymentconvertissent le payload validé en un modèle précis avant toute écriture : l'externe devient un champ optionnel unique (et non une liste), et les entrées sont séparées en création / mise à jour (buckets…ToCreate/…ToUpdate).Persistance
create/update/deleteManypour les sources internes, etupsert/deletepour l'unique source externe (relation to-one).getDeploymentByIdutilisefindUniqueOrThrow(un id inconnu est une erreur, pas unnullqui se balade). Le datastore chargeinternalValueSources(triées parorder) +externalValueSource; le service les fusionne envalueSourcesviaserializeDeploymentavant de répondre.Tests
deployment.utils.ts: partitionnement, préservation de l'ordre, séparation create/update, branches d'upsert/deletede la source externe, et fusion ordonnée de la lecture (serializeDeployment).Cette PR introduit-elle un breaking change ?
Non. Les
valueSourcessont optionnelles (default([])) ; les déploiements existants restent valides.Autres informations
Partie API de l'adaptation au nouveau helm-chart (https://github.com/cloud-pi-native/helm-charts) permettant d'ajouter des valeurs externes au chart
dso-env. Les composants client suivront dans une PR distincte (#2374) et consommeront la listevalueSourcesainsi que les types nommés exposés ici.Remonté en cours de revue et traité séparément : #2383 (filtre d'exception global Prisma
P2025→404).