Skip to main content

Vue d’ensemble

Kit’Asso utilise des fichiers de migration SQL qui tracent l’évolution complète du schéma de base de données. Les migrations sont organisées en 5 phases couvrant le catalogue, les workflows, les packs, le quiz et le moteur de scoring V2. Chaque migration est versionnée avec un timestamp et documentée pour faciliter le déploiement et le rollback. Convention de nommage :
Exemple :
Avantages :
  • Historique complet des changements de schéma
  • Déploiement reproductible sur tous les environnements
  • Rollback possible en cas d’erreur
  • Documentation intégrée dans les fichiers SQL

Structure d’une migration

Migration complète typique

Fichier : 20240115103000_create_tools_table.sql

Chronologie des migrations

Phase 1 : Tables Core (Migrations 1-15)

Migrations principales :
Contenu :
  • Création des tables fondamentales (tools, categories, filters)
  • Relations many-to-many avec tool_features
  • Indexes pour performance
  • RLS policies pour sécurité
  • Table site_assets pour gestion centralisée

Phase 2 : Workflows (Migrations 16-25)

Migrations principales :
Contenu :
  • Table workflows avec champs JSONB (steps, next_steps, resources)
  • Table workflow_steps avec contenu enrichi (story, visuals, videos)
  • Contraintes CHECK pour difficulty et status
  • Policies RLS distinctes pour workflows actifs vs drafts
  • Indexes sur status et display_order
Evolution :

Phase 3 : Tool Packs (Migrations 26-32)

Migrations principales :
Contenu :
  • Table tool_packs avec icon, color, difficulty
  • Table pack_tools (join table avec display_order)
  • Contraintes UNIQUE sur (pack_id, tool_id)
  • Status active/draft pour packs
  • Policies pour filtrer packs actifs côté public

Phase 4 : Quiz System (Migrations 33-43)

Migrations principales :
Contenu :
  • Tables pour quiz complet (quizzes, questions, answers, recommendations, responses)
  • Champ JSONB condition_logic pour recommandations
  • Policies complexes (public insert sur responses, read via parent quiz)
  • Slug unique pour routing
  • Arrays UUID pour recommended_pack_ids et recommended_tool_ids
Evolution :

Phase 5 : Quiz V2 — Scoring & Branchement

Migrations principales :
Contenu :
  • Ajout de next_question_rules (JSONB) sur quiz_questions pour le branchement conditionnel
  • Ajout de scoring_weights (JSONB) sur quiz_answers pour la pondération V2
  • Le scoring V2 remplace le moteur de condition_logic V1
Evolution :
Format de next_question_rules :
Format de scoring_weights :

Processus de déploiement

Environnement local

Prérequis :
  • Projet Nhost créé avec accès à la console Hasura
  • Accès au SQL runner dans Hasura Console
Méthode 1 : Hasura Console (recommandé pour démarrer)
  1. Ouvrir Dashboard Nhost → HasuraOpen Hasura Console
  2. Aller dans l’onglet SQL
  3. Copier le contenu de la migration
  4. Exécuter le SQL
  5. Vérifier le résultat dans l’onglet Data
Méthode 2 : Nhost CLI

Environnement de production

Processus complet :
Checklist de déploiement :
  • ✅ Backup effectué
  • ✅ Migrations testées en local
  • ✅ RLS policies vérifiées
  • ✅ Indexes créés
  • ✅ Contraintes validées
  • ✅ Données de test insérées
  • ✅ Frontend fonctionne avec nouveau schéma

Ordre d’exécution des migrations

CRITIQUE : Respecter l’ordre chronologique
Dépendances entre migrations :
Script d’exécution complète :

Rollback de migrations

Rollback simple (dernière migration)

Créer un fichier de rollback : Fichier : 20240118110000_add_quiz_condition_logic_rollback.sql
Exécution :

Rollback complet (retour à version antérieure)

Option 1 : Restauration depuis backup
Option 2 : Via Hasura Console

Migrations réversibles

Pattern de migration avec UP et DOWN :
Usage : Garder le code de rollback en commentaire pour référence.

Bonnes pratiques

✅ À faire

Toujours tester en local avant production
Utiliser des transactions pour migrations complexes
Documenter chaque migration
Créer des indexes pour colonnes fréquemment requêtées

❌ À éviter

Ne jamais modifier une migration déjà déployée
Ne pas supprimer des colonnes sans migration de données
Ne pas oublier les contraintes CASCADE

Vérification post-migration

Checklist de validation


Ressources

Database Schema

Structure complète des tables

RLS Policies

Sécurité appliquée dans les migrations

Nhost Setup

Configuration du projet Nhost

Nhost Storage

Configuration du Storage Nhost