Skip to content

tecodia/excercie-formation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Formation Apollo Server + Prisma - E-commerce API

Projet d'exercice pour apprendre à créer des DataSources et Resolvers avec Apollo Server.

Stack

  • Node.js 22 + TypeScript
  • Apollo Server avec Express (support subscriptions via WebSocket)
  • Prisma ORM
  • PostgreSQL (via Docker)
  • Redis (via Docker)

Modèle de données

User

  • id, email, name, createdAt
  • Relations: reviews

Product

  • id, name, description, price, createdAt
  • Relations: stock (1-1), reviews (1-n)

Stock

  • id, productId, quantity, updatedAt
  • Relations: product (1-1)

Review

  • id, productId, userId, rating, comment, createdAt
  • Relations: product, user

Installation

# Installer les dépendances
npm install

# Lancer PostgreSQL + Redis
docker-compose up -d

# Générer le client Prisma
npm run prisma:generate

# Créer la base de données et appliquer les migrations
npm run prisma:migrate

# Seed les données
npm run prisma:seed

Développement

# Mode développement avec hot-reload
npm run dev

# Ouvrir Prisma Studio (interface graphique pour la DB)
npm run prisma:studio

Le serveur démarre sur http://localhost:4000/graphql

Les subscriptions sont disponibles sur ws://localhost:4000/graphql

Exercice

Votre mission : créer les typeDefs GraphQL et les resolvers pour l'API e-commerce.

À implémenter

  1. Types GraphQL (dans src/schema/typeDefs.ts)

    • User, Product, Stock, Review
    • Queries, Mutations, Subscriptions
  2. Resolvers (dans src/schema/resolvers.ts)

    • Queries : liste produits, détail produit, utilisateurs, etc.
    • Mutations : créer/modifier produits, stock, avis
    • Subscriptions : notifications temps réel (ex: stock faible, nouveau produit)
  3. Context

    • Prisma client disponible via context.prisma
    • Redis client disponible via context.redis

Structure suggérée

src/
├── index.ts                 # Déjà configuré
├── schema/
│   ├── typeDefs.ts         # À créer
│   └── resolvers.ts        # À créer
├── datasources/            # Optionnel : logique métier
│   ├── ProductDataSource.ts
│   ├── UserDataSource.ts
│   └── ...

Commandes utiles

# Rebuild de la DB
npm run prisma:migrate

# Re-seed
npm run prisma:seed

# Build production
npm run build
npm start

Accès aux services

  • GraphQL Playground: http://localhost:4000/graphql
  • Prisma Studio: npm run prisma:studio
  • PostgreSQL: localhost:5432 (user: formation, password: formation123)
  • Redis: localhost:6379

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published