Skip to main content
La documentation des adapters est cruciale pour comprendre leur portée et leurs contraintes. Nous utilisons TSDoc pour documenter directement dans le code.

Structure de la Documentation

1

Classe Adapter

/**
 * Adapter pour transformer les commandes entre notre domaine et Hubrise.
 *
 * Cet adapter gère la transformation des commandes dans le contexte de l'intégration
 * avec Hubrise. Il ne crée pas de relations (customer, items) mais les référence
 * uniquement par leur ID.
 *
 * @example
 * ```typescript
 * // Transformation vers Hubrise
 * const hubriseOrder = HubriseOrderAdapter.toHubriseOrder(domainOrder);
 *
 * // Transformation depuis Hubrise
 * const domainOrder = HubriseOrderAdapter.toDomainOrder(hubriseOrder);
 * ```
 */
export class HubriseOrderAdapter {
  // ... implementation
}
2

Méthodes de Transformation

/**
 * Transforme une commande de notre domaine vers le format Hubrise.
 *
 * @param order - La commande de notre domaine
 * @returns La commande au format Hubrise
 * @throws {ValidationError} Si la commande n'a pas d'items ou de customer
 *
 * @remarks
 * - Ne crée pas de relations (customer, items)
 * - Référence les relations par leur ID
 * - Valide la présence d'au moins un item
 *
 * @example
 * ```typescript
 * const hubriseOrder = HubriseOrderAdapter.toHubriseOrder({
 *   id: "123",
 *   customerId: "456",
 *   items: [{ id: "789", quantity: 1 }]
 * });
 * ```
 */
static toHubriseOrder(order: Order): HubriseOrder {
  // ... implementation
}

/**
 * Transforme une commande du format Hubrise vers notre domaine.
 *
 * @param order - La commande au format Hubrise
 * @returns La commande de notre domaine
 * @throws {ValidationError} Si les données Hubrise sont invalides
 *
 * @remarks
 * - Ne crée pas de relations
 * - Conserve les IDs des relations
 * - Valide le format des données Hubrise
 */
static toDomainOrder(order: HubriseOrder): Order {
  // ... implementation
}

Points à Documenter

1

Portée de l'Adapter

• Types transformés• Contexte d’utilisation• Opérations supportées
2

Contraintes

• Champs obligatoires• Champs optionnels• Validations effectuées
3

Comportements

• Gestion des relations• Valeurs par défaut• Gestion des erreurs

Bonnes Pratiques

1

Documentation de la Classe

• Description générale• Contexte d’utilisation• Exemple d’utilisation basique
2

Documentation des Méthodes

• Description de la transformation• Paramètres et types• Type de retour• Exceptions possibles• Exemples concrets
3

Remarques Importantes

• Contraintes spécifiques• Comportements particuliers• Limitations connues

Exemple Complet

/**
 * Adapter pour transformer les commandes entre notre domaine et Hubrise.
 *
 * Cet adapter gère la transformation des commandes dans le contexte de l'intégration
 * avec Hubrise. Il ne crée pas de relations (customer, items) mais les référence
 * uniquement par leur ID.
 *
 * @example
 * ```typescript
 * // Transformation vers Hubrise
 * const hubriseOrder = HubriseOrderAdapter.toHubriseOrder(domainOrder);
 *
 * // Transformation depuis Hubrise
 * const domainOrder = HubriseOrderAdapter.toDomainOrder(hubriseOrder);
 * ```
 */
export class HubriseOrderAdapter {
  /**
   * Transforme une commande de notre domaine vers le format Hubrise.
   *
   * @param order - La commande de notre domaine
   * @returns La commande au format Hubrise
   * @throws {ValidationError} Si la commande n'a pas d'items ou de customer
   *
   * @remarks
   * - Ne crée pas de relations (customer, items)
   * - Référence les relations par leur ID
   * - Valide la présence d'au moins un item
   *
   * @example
   * ```typescript
   * const hubriseOrder = HubriseOrderAdapter.toHubriseOrder({
   *   id: "123",
   *   customerId: "456",
   *   items: [{ id: "789", quantity: 1 }]
   * });
   * ```
   */
  static toHubriseOrder(order: Order): HubriseOrder {
    // ... implementation
  }

  /**
   * Transforme une commande du format Hubrise vers notre domaine.
   *
   * @param order - La commande au format Hubrise
   * @returns La commande de notre domaine
   * @throws {ValidationError} Si les données Hubrise sont invalides
   *
   * @remarks
   * - Ne crée pas de relations
   * - Conserve les IDs des relations
   * - Valide le format des données Hubrise
   */
  static toDomainOrder(order: HubriseOrder): Order {
    // ... implementation
  }
}