Aller au contenu principal

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

  1. Patches -> Nouveau patch. Choisir mode : SQL libre, ou builder (table -> filtre -> colonnes a modifier).
  2. Cliquer Dry-run. Auralith affiche le nombre de lignes affectees, un sample et un graph d'impact (tables liees via FK).
  3. Si approval policy active sur l'environnement : l'execution est bloquee, un ApprovalRequest est cree et renvoye en 202 Accepted.
  4. Approuver depuis Approbations (ou refuser).
  5. Lancer Executer. Auralith prend un snapshot des lignes affectees, puis execute par batchs (defaut 1000 lignes / batch).
  6. 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_service bloque les patches sans WHERE ou avec 1=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

Voir aussi