Mass Patch
Modifier des donnees en masse avec garde-fous : dry-run, snapshot pre-execution, approbation conditionnelle, execution par batch, export Liquibase.
Quand l'utiliser
- Mettre a jour un statut sur 50 000 utilisateurs.
- Backfiller une colonne nouvellement ajoutee.
- Corriger un bug data en prod (apres revue par un pair).
Pas pour : du DDL (utilisez Migrations) ni des transformations complexes ETL (utilisez un outil dedie).
Workflow rapide
Patches->Nouveau patch. Choisir mode : SQL libre, ou builder (table -> filtre -> colonnes a modifier).- Cliquer
Dry-run. Auralith affiche le nombre de lignes affectees, un sample et un graph d'impact (tables liees via FK). - Si approval policy active sur l'environnement : l'execution est bloquee,
un
ApprovalRequestest cree et renvoye en202 Accepted. - Approuver depuis
Approbations(ou refuser). - Lancer
Executer. Auralith prend un snapshot des lignes affectees, puis execute par batchs (defaut 1000 lignes / batch). - Suivre la progression dans la barre de jobs. En cas d'erreur, rollback possible depuis le snapshot.
Concepts cles
- PatchFiche : la fiche du patch (cible, filtre, modifs, statut).
- PatchSnapshot : copie des lignes avant modification. Stockee en JSONB. Permet le rollback.
- GuardRailPolicy : limites par projet (max rows, exclusions de tables, WHERE obligatoire). Refuse l'execution si violee.
- Liquibase export : telecharger le patch en YAML Liquibase pour rejouer dans un autre env via votre CI.
Pieges courants
- WHERE manquant ou tautologique :
guard_rails_servicebloque les patches sans WHERE ou avec1=1. Override possible si admin. - Identifiants non quotes : Auralith quote tous les identifiants (sprint fix securite). Ne tentez pas de bypasser via SQL libre, le linter detecte.
- FK cascades : un UPDATE sur une PK avec ON UPDATE CASCADE peut toucher des tables referencees. Le graph d'impact les liste.
- Batch trop large : >10 000 lignes / batch peut tenir un lock long.
Reglable dans
ProjectConfig.mass_patch_batch_size.
API
# Creer un patch
curl -X POST https://app.auralith.io/api/v1/projects/{pid}/patches \
-H "Authorization: Bearer $API_KEY" \
-d '{"label":"backfill_status","sql":"UPDATE users SET status='\''active'\'' WHERE created_at > '\''2026-01-01'\''"}'
# Dry-run
curl -X POST https://app.auralith.io/api/v1/patches/{id}/dry-run
# Execute
curl -X POST https://app.auralith.io/api/v1/patches/{id}/execute