Aller au contenu principal

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

ColonneTypeDescription
business_typeTEXTType de métier de l'artisan (voir valeurs autorisées ci-dessous)
business_nameTEXTNom du business / enseigne (optionnel)
has_completed_onboardingBOOLEANIndique 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

  1. Migration des utilisateurs existants:
    • Par défaut, has_completed_onboarding est à 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:
UPDATE user_profiles
SET has_completed_onboarding = true
WHERE created_at < NOW() - INTERVAL '1 day';
  1. Valeurs NULL:

    • business_type peut être NULL (avant onboarding)
    • business_name peut être NULL (optionnel)
    • has_completed_onboarding ne devrait jamais être NULL (défaut: false)
  2. 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:

  1. Aller dans Database → SQL Editor
  2. Coller le SQL de migration ci-dessus
  3. Exécuter la requête
  4. Vérifier dans Database → Tables → user_profiles que les colonnes sont bien ajoutées