Onboarding - Mise à jour base de données
Mise à jour de la table user_profiles
Pour activer la fonctionnalité d'onboarding, vous devez ajouter les colonnes suivantes à la table user_profiles:
Migration SQL
-- Ajouter les nouvelles colonnes à la table user_profiles
ALTER TABLE user_profiles
ADD COLUMN IF NOT EXISTS business_type TEXT,
ADD COLUMN IF NOT EXISTS business_name TEXT,
ADD COLUMN IF NOT EXISTS has_completed_onboarding BOOLEAN DEFAULT false;
-- Créer un index pour améliorer les performances
CREATE INDEX IF NOT EXISTS idx_user_profiles_business_type
ON user_profiles(business_type);
-- Créer un index pour les utilisateurs qui ont complété l'onboarding
CREATE INDEX IF NOT EXISTS idx_user_profiles_onboarding
ON user_profiles(has_completed_onboarding);
-- Ajouter une contrainte CHECK pour valider le business_type
ALTER TABLE user_profiles
ADD CONSTRAINT check_business_type CHECK (
business_type IS NULL OR
business_type IN (
'patisserie',
'boulangerie',
'traiteur',
'chocolaterie',
'ongles',
'coiffure',
'esthetique',
'massage',
'barbier',
'couture',
'fleuriste',
'photographe',
'maquilleuse',
'tatoueur',
'bijouterie',
'autre'
)
);
Description des colonnes
| Colonne | Type | Description |
|---|---|---|
business_type | TEXT | Type de métier de l'artisan (voir valeurs autorisées ci-dessous) |
business_name | TEXT | Nom du business / enseigne (optionnel) |
has_completed_onboarding | BOOLEAN | Indique si l'utilisateur a complété l'onboarding (défaut: false) |
Valeurs autorisées pour business_type
patisserie: Pâtisserie (🎂)boulangerie: Boulangerie (🥖)traiteur: Traiteur (🍽️)chocolaterie: Chocolaterie (🍫)ongles: Onglerie (💅)coiffure: Coiffure (💇)esthetique: Esthétique (✨)massage: Massage & Bien-être (💆)barbier: Barbier (💈)couture: Couture & Retouches (🧵)fleuriste: Fleuriste (🌸)photographe: Photographe (📸)maquilleuse: Maquillage (💄)tatoueur: Tatouage (🎨)bijouterie: Bijouterie (💎)autre: Autre type d'activité artisanale (🔧)
Exemples de requêtes
Récupérer un profil avec son type de métier
SELECT
id,
first_name,
last_name,
business_type,
business_name,
has_completed_onboarding
FROM user_profiles
WHERE user_id = 'user-id';
Mettre à jour le profil après l'onboarding
UPDATE user_profiles
SET
business_type = 'patisserie',
business_name = 'Pâtisserie Sophie',
has_completed_onboarding = true,
updated_at = NOW()
WHERE user_id = 'user-id';
Statistiques par type de métier
SELECT
business_type,
COUNT(*) as count
FROM user_profiles
WHERE business_type IS NOT NULL
GROUP BY business_type
ORDER BY count DESC;
Utilisateurs ayant complété l'onboarding
SELECT COUNT(*) as total_completed
FROM user_profiles
WHERE has_completed_onboarding = true;
Rollback (si nécessaire)
Si vous devez annuler les modifications:
-- Supprimer les contraintes
ALTER TABLE user_profiles
DROP CONSTRAINT IF EXISTS check_business_type;
-- Supprimer les index
DROP INDEX IF EXISTS idx_user_profiles_business_type;
DROP INDEX IF EXISTS idx_user_profiles_onboarding;
-- Supprimer les colonnes
ALTER TABLE user_profiles
DROP COLUMN IF EXISTS business_type,
DROP COLUMN IF EXISTS business_name,
DROP COLUMN IF EXISTS has_completed_onboarding;
Notes importantes
- Migration des utilisateurs existants:
- Par défaut,
has_completed_onboardingest àfalse - Les utilisateurs existants devront passer par l'onboarding au prochain lancement
- Si vous voulez éviter cela, vous pouvez mettre tous les utilisateurs existants à
true:
- Par défaut,
UPDATE user_profiles
SET has_completed_onboarding = true
WHERE created_at < NOW() - INTERVAL '1 day';
-
Valeurs NULL:
business_typepeut être NULL (avant onboarding)business_namepeut être NULL (optionnel)has_completed_onboardingne devrait jamais être NULL (défaut: false)
-
Performance:
- Les index créés améliorent les performances des requêtes
- Si vous avez beaucoup d'utilisateurs, exécutez la migration pendant une période de faible activité
Vérification
Après avoir exécuté la migration, vérifiez que tout fonctionne:
-- Vérifier que les colonnes existent
SELECT
column_name,
data_type,
is_nullable
FROM information_schema.columns
WHERE table_name = 'user_profiles'
AND column_name IN ('business_type', 'business_name', 'has_completed_onboarding');
-- Vérifier la contrainte CHECK
SELECT constraint_name
FROM information_schema.table_constraints
WHERE table_name = 'user_profiles'
AND constraint_type = 'CHECK';
Supabase Studio
Si vous préférez utiliser l'interface Supabase Studio:
- Aller dans Database → SQL Editor
- Coller le SQL de migration ci-dessus
- Exécuter la requête
- Vérifier dans Database → Tables → user_profiles que les colonnes sont bien ajoutées