> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gestugroup.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Migrations Supabase

> Liste et description de toutes les migrations de base de données Gëstu.

## Principe

Les migrations sont des fichiers SQL numérotés qui définissent l'évolution du schéma de base de données. Elles doivent être appliquées **dans l'ordre** dans le SQL Editor de Supabase.

<Warning>
  N'appliquez jamais une migration sans avoir appliqué toutes les précédentes. Chaque migration peut dépendre des tables créées par les migrations antérieures.
</Warning>

***

## Liste des migrations

### 001 — Schéma initial

**Fichier** : `001_initial_schema.sql`
**Statut** : ✅ Appliqué

Tables créées : `partners`, `profiles`, `partner_subscriptions`
Fonctions : `get_my_partner_id()`, `get_my_role()`

***

### 002 — Audit SI Planning

**Fichier** : `002_si_audit_planning.sql`
**Statut** : ✅ Appliqué

Tables créées : `missions`, `controls`, `evaluations`, `attachments`
Ajoute le référentiel Maturité SI.

***

### 003 — Modèles personnalisés

**Fichier** : `003_custom_models.sql`
**Statut** : ✅ Appliqué

Permet aux partenaires de créer des référentiels personnalisés.
Tables : `custom_frameworks`, `custom_controls`

***

### 004 — Profils Admin

**Fichier** : `004_admin_profiles.sql`
**Statut** : ✅ Appliqué

Ajoute les colonnes `role`, `partner_id` et `full_name` à la table `profiles`.
Crée les politiques RLS pour les administrateurs.

***

### 005 — Correction RLS récursion

**Fichier** : `005_fix_rls_recursion.sql`
**Statut** : ✅ Appliqué

Corrige une récursion infinie dans les politiques RLS de la table `profiles`.
Remplace les politiques récursives par des fonctions `SECURITY DEFINER`.

***

### 006 — Hub Produits

**Fichier** : `006_product_hub.sql`
**Statut** : ✅ Appliqué

Tables créées : `products`, `user_product_access`, `partner_subscriptions`
Fonction : `get_my_product_access()`
Données initiales : insertion du produit `gestu-control`

***

### 007 — Gëstu Risk

**Fichier** : `007_gestu_risk.sql`
**Statut** : ✅ Appliqué

Insère le produit `gestu-risk` dans la table `products`.
Table créée : `risks` avec RLS complète.

***

### 008 — Demandes d'accès

**Fichier** : `008_access_requests.sql`
**Statut** : ✅ Appliqué

Table créée : `access_requests`
Permet aux utilisateurs de demander l'accès à un produit depuis le Hub.

***

### 009 — Correction get\_my\_product\_access

**Fichier** : `009_fix_product_access_fn.sql`
**Statut** : ✅ Appliqué

Modifie `get_my_product_access()` pour retourner tous les produits actifs (pas seulement ceux souscrits), afin que le Hub puisse afficher les produits non souscrits avec le bouton "Demander l'accès".

***

### 010 — Gëstu Diligence

**Fichier** : `010_gestu_diligence.sql`
**Statut** : ✅ Appliqué

Insère le produit `gestu-diligence` dans la table `products` (coming soon, `sort_order: 3`).

***

### 011 — Gëstu Policy

**Fichier** : `011_gestu_policy.sql`
**Statut** : ✅ Appliqué

Insère le produit `gestu-policy` dans la table `products` (coming soon, `sort_order: 4`).

***

## Appliquer une migration

1. Ouvrez le **SQL Editor** de votre projet Supabase
2. Copiez le contenu du fichier de migration
3. Collez dans l'éditeur
4. Cliquez sur **Run**
5. Vérifiez qu'il n'y a pas d'erreur dans la console

<Tip>
  Chaque migration utilise `IF NOT EXISTS` et `ON CONFLICT DO NOTHING` pour être idempotente — vous pouvez la ré-exécuter sans risque si vous n'êtes pas sûr qu'elle a déjà été appliquée.
</Tip>
