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
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
}
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
Portée de l'Adapter
• Types transformés• Contexte d’utilisation• Opérations supportées
Contraintes
• Champs obligatoires• Champs optionnels• Validations effectuées
Comportements
• Gestion des relations• Valeurs par défaut• Gestion des erreurs
Bonnes Pratiques
Documentation de la Classe
• Description générale• Contexte d’utilisation• Exemple d’utilisation basique
Documentation des Méthodes
• Description de la transformation• Paramètres et types• Type de retour• Exceptions possibles• Exemples concrets
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
}
}