[TECH] :recycle: Met à jour le candidat dans une transaction (pix-20719)
❄️ Problème
Nous avons découvert que certains candidats ont deux souscriptions du même type (CORE, etc.) en même temps, pour la même certification.
SELECT
"certificationCandidateId",
COUNT(*) as nombre_complementary
FROM "certification-subscriptions"
WHERE type = 'COMPLEMENTARY'
GROUP BY "certificationCandidateId"
HAVING COUNT(*) > 1;
🛷 Proposition
Placer la mise à jour du candidat dans une transaction.
☃️ Remarques
Cette PR est une extraction de la PR #14350 . Ici, nous ne traitons que de la transaction. Nous gardons l'autre PR pour explorer un remaniement du code autour de la mise à jour d'un candidat.
🧑🎄 Pour tester
- Créer une session de certification (dans pix Certif) ;
- Créer un candidat ;
- Modifier le candidat depuis deux navigateurs dans un délai très court (difficile tester la concurrence d'accès « à la main »);
- S'assurer que tout ce passe bien
L'opération peu être répété avec un import de candidats via un fichier ODS.
Choisir les applications à déployer :
- [x] API | 👩💻 Dashboard Scalingo
- [ ] App (.fr) – App (.org) | 👩💻 Dashboard Scalingo
- [ ] Orga (.fr) – Orga (.org) | 👩💻 Dashboard Scalingo
- [x] Certif (.fr) – Certif (.org) | 👩💻 Dashboard Scalingo
- [ ] Junior | 👩💻 Dashboard Scalingo
- [ ] Admin | 👩💻 Dashboard Scalingo
- [ ] API MaDDo | 👩💻 Dashboard Scalingo
- [ ] Audit Logger | 👩💻 Dashboard Scalingo
[!IMPORTANT] N'oubliez pas de déployer l'API pour pouvoir accéder aux fronts et/ou à l’API MaDDo.
:tada: This PR is included in version 5.278.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket: