the-tip-top-backend/database
soufiane 4759ce99e7 feat: add newsletter subscription feature
- Add newsletter database table migration
- Create newsletter controller with subscribe/unsubscribe endpoints
- Add newsletter routes and validation
- Implement newsletter service with email validation
- Add setup documentation and migration scripts
- Include test page for newsletter functionality

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 00:07:44 +01:00
..
migrations feat: add newsletter subscription feature 2025-11-24 00:07:44 +01:00
README.md dev 2025-11-17 23:47:54 +01:00
schema.sql dev 2025-11-17 23:47:54 +01:00
seed.js dev 2025-11-17 23:47:54 +01:00
update-prize-names.sql dev 2025-11-17 23:47:54 +01:00
update-prizes.js dev 2025-11-17 23:47:54 +01:00

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

Email 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