Module 04 ⭐⭐⭐ Difficile ~3h

🛒 E-commerce — Entités, Relations & Migrations

Modéliser un système e-commerce complet avec TypeORM. Entités, relations OneToMany/ManyToMany, soft delete, QueryBuilder, transactions et migrations.

📊 Modèle de données

User (1) ──────── (N) Order
User (1) ──────── (N) Review
Product (N) ─── (N) Tag       [ManyToMany via product_tags]
Product (N) ─── (1) Category
Order (1) ────── (N) OrderItem
OrderItem (N) ── (1) Product

🔧 Entités à créer

// entities/order.entity.ts
@Entity('orders')
export class Order {
  @PrimaryGeneratedColumn('uuid') id: string;

  @Column({ type: 'enum', enum: OrderStatus, default: OrderStatus.PENDING })
  status: OrderStatus;

  @Column({ type: 'decimal', precision: 10, scale: 2 })
  total: number;

  @ManyToOne(() => User, u => u.orders)
  user: User;

  @OneToMany(() => OrderItem, item => item.order, { cascade: true })
  items: OrderItem[];

  @CreateDateColumn() createdAt: Date;
}

export enum OrderStatus {
  PENDING = 'pending',
  PAID = 'paid',
  SHIPPED = 'shipped',
  DELIVERED = 'delivered',
  CANCELLED = 'cancelled',
}

// entities/order-item.entity.ts
@Entity('order_items')
export class OrderItem {
  @PrimaryGeneratedColumn() id: number;
  @Column({ type: 'int' }) quantity: number;
  @Column({ type: 'decimal', precision: 10, scale: 2 }) unitPrice: number;
  @ManyToOne(() => Order, o => o.items) order: Order;
  @ManyToOne(() => Product) product: Product;
}

✅ Fonctionnalités à implémenter

← Cours ✏️ Exercices 🧠 QCM NS04 Module 05 →