- Add is_active column to schema.sql for new deployments - Add migration in auto-init-db.js for existing databases 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| migrations | ||
| README.md | ||
| schema.sql | ||
| seed.js | ||
| update-prize-names.sql | ||
| update-prizes.js | ||
Database Setup
Ce dossier contient le schéma SQL et le script de seed pour la base de données PostgreSQL.
Structure
schema.sql- Schéma complet de la base de données (tables, index, triggers, vues)seed.js- Script pour insérer des données de test
Installation
1. Créer le schéma
Exécutez le fichier SQL pour créer toutes les tables et insérer les données initiales (prix, configuration du jeu) :
psql -U postgres -d thetiptop -f database/schema.sql
Ou utilisez le script npm :
npm run db:schema
2. Insérer les données de test
Exécutez le script de seed pour créer des utilisateurs et tickets de test :
npm run db:seed
Données de test créées
Le script de seed crée :
Utilisateurs
| Mot de passe | Rôle | |
|---|---|---|
| admin@thetiptop.com | Admin123! | ADMIN |
| employee1@thetiptop.com | Employee123! | EMPLOYEE |
| employee2@thetiptop.com | Employee123! | EMPLOYEE |
| client1@example.com | Client123! | CLIENT |
| client2@example.com | Client123! | CLIENT |
| client3@example.com | Client123! | CLIENT |
| client4@example.com | Client123! | CLIENT |
| client5@example.com | Client123! | CLIENT |
Tickets
- Environ 15-25 tickets répartis entre les clients
- 80% en statut PENDING
- 10% en statut CLAIMED
- 10% en statut REJECTED
- Prix distribués aléatoirement
Schéma de la base de données
Tables principales
users
Stocke tous les utilisateurs (clients, employés, admins)
- Authentification par email/password
- Vérification par email
- Récupération de mot de passe
prizes
Les différents prix disponibles dans le jeu-concours
- 5 types de prix (INFUSEUR, THE_SIGNATURE, COFFRET_DECOUVERTE, COFFRET_PRESTIGE, THE_GRATUIT)
- Stock et probabilités configurables
- Gestion du statut actif/inactif
tickets
Les tickets de jeu générés pour chaque participation
- Code unique
- Statuts: PENDING, CLAIMED, REJECTED
- Lié à un utilisateur et un prix
- Traçabilité de la validation
game_settings
Configuration générale du jeu-concours
- Dates de début et fin
- Nombre total de tickets
- Statut actif/inactif
Vues utiles
prize_statistics
Statistiques agrégées par prix (stock initial, utilisé, restant, etc.)
pending_tickets
Liste des tickets en attente de validation avec toutes les informations nécessaires
Réinitialisation
Pour réinitialiser complètement la base de données :
# 1. Supprimer et recréer le schéma
npm run db:schema
# 2. Insérer les données de test
npm run db:seed
Notes
- Le schéma utilise des UUID pour tous les IDs
- Les triggers mettent automatiquement à jour les champs
updated_at - Les index sont créés sur les colonnes fréquemment utilisées pour optimiser les performances
- Les contraintes CASCADE assurent l'intégrité référentielle