39 lines
1.4 KiB
SQL
39 lines
1.4 KiB
SQL
-- ============================================
|
|
-- MIGRATION: Ajout des champs démographiques
|
|
-- ============================================
|
|
|
|
-- Créer le type ENUM pour le genre
|
|
DO $$ BEGIN
|
|
CREATE TYPE gender_type AS ENUM ('MALE', 'FEMALE', 'OTHER', 'NOT_SPECIFIED');
|
|
EXCEPTION
|
|
WHEN duplicate_object THEN null;
|
|
END $$;
|
|
|
|
-- Ajouter les colonnes gender et date_of_birth à la table users si elles n'existent pas
|
|
DO $$
|
|
BEGIN
|
|
-- Ajouter la colonne gender si elle n'existe pas
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'users' AND column_name = 'gender'
|
|
) THEN
|
|
ALTER TABLE users ADD COLUMN gender gender_type DEFAULT 'NOT_SPECIFIED';
|
|
END IF;
|
|
|
|
-- Ajouter la colonne date_of_birth si elle n'existe pas
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'users' AND column_name = 'date_of_birth'
|
|
) THEN
|
|
ALTER TABLE users ADD COLUMN date_of_birth DATE;
|
|
END IF;
|
|
END $$;
|
|
|
|
-- Créer un index sur gender pour améliorer les performances des requêtes de statistiques
|
|
CREATE INDEX IF NOT EXISTS idx_users_gender ON users(gender);
|
|
CREATE INDEX IF NOT EXISTS idx_users_date_of_birth ON users(date_of_birth);
|
|
|
|
-- Commentaires
|
|
COMMENT ON COLUMN users.gender IS 'Genre de l''utilisateur: MALE, FEMALE, OTHER, NOT_SPECIFIED';
|
|
COMMENT ON COLUMN users.date_of_birth IS 'Date de naissance de l''utilisateur pour les statistiques démographiques';
|