Maison >développement back-end >Golang >Créer votre premier projet avec Torpedo : un guide étape par étape

Créer votre premier projet avec Torpedo : un guide étape par étape

Patricia Arquette
Patricia Arquetteoriginal
2024-11-18 09:06:02711parcourir

Creating Your First Project with Torpedo: A Step-by-Step Guide

Lors de la création d'applications dans Golang, le respect des principes de l'architecture hexagonale peut garantir un code propre, modulaire et maintenable. Avec Torpedo, vous pouvez facilement implémenter cette architecture tout en accélérant votre processus de développement. Dans ce guide, nous vous expliquerons comment créer votre premier projet avec Torpedo, de l'installation à la génération d'entités et de cas d'utilisation.

Cet article est un résumé du guide de démarrage rapide documenté

1. Démarrez avec Torpedo

Avant de nous lancer dans la création d'un projet, assurez-vous que Go est installé sur votre système. Ensuite, installez Torpedo en suivant les instructions du guide d'installation

Cet outil CLI gérera pour vous la génération de projets, la création d'entités et l'échafaudage de cas d'utilisation. Une fois installé, vous êtes prêt à créer votre premier projet.

2. Configurer votre premier projet

Commençons par notre première application construite avec Torpedo !. Nous allons créer une application de réservation de vols appelée Booking Fly.

Une fois Torpedo installé, créer un nouveau projet est aussi simple que de l'exécuter :

mkdir booking-fly && cd booking-fly
torpedo init

Cette commande générera le dossier .torpedo où vous devrez définir vos entités et vos cas d'utilisation. Plus d'informations sur ce dossier peuvent être trouvées sur .torpedo dir struct

3. Définir votre première entité

Ensuite, vous souhaiterez définir vos entités de domaine. Les entités sont les objets centraux de la logique métier de votre application, représentant des éléments tels que l'utilisateur, le produit ou la commande.

Pour définir votre première entité, créez un fichier YAML dans le répertoire .torpedo/entities. Par exemple, créons une simple entité Utilisateur :

.torpedo/entities/user.yaml

version: torpedo.darksub.io/v1.0
kind: entity
spec:
    name: "user"
    plural: "users" 
    description: "The frequent flyer user"
    doc: |
        The user entity represents a system user but also a frequent flyer. 
        This entity is only for the example purpose.
    schema:
        reserved:
            id:
                type: ulid 

        fields:
          - name: name
            type: string
            description: "The user full name"

          - name: email
            type: string
            description: "The user contact email"

          - name: password # it is not recommended to save passwords, this is an example only
            type: string
            encrypted: true
            description: "The user system password"

          - name: plan
            type: string
            description: "The user membership plan"
            validate:
              list:
                values:
                  - GOLD
                  - SILVER
                  - BRONZE

          - name: miles
            type: integer
            description: "The accumulated flyer miles"

    relationships:
        - name: trips
          type: $rel
          ref: ".torpedo/entities/trip.yaml"
          cardinality: hasMany
          load:
            type: nested
            metadata:
                maxItems: 100

    adapters:
        input:
            - type: http

        output:
          - type: memory 

De plus, l'entité Trip est requise, créons donc une entité Trip :

.torpedo/entities/trip.yaml

version: torpedo.darksub.io/v1.0
kind: entity
spec:
    name: trip
    plural: trips
    description: "The user fly trip reservations"
    doc: |
        The trip entity handles all data related with the frequent flyer trip
    schema:
        reserved:
            id:
                type: ulid

        fields:
          - name: departure
            type: string
            description: "The trip departure airport"

          - name: arrival
            type: string
            description: "The trip arrival airport"

          - name: miles
            type: integer
            description: "The trip miles"

          - name: from
            type: date
            description: "The trip from date"

          - name: to
            type: date
            description: "The trip to date"

    adapters:
        input:
            - type: http

        output:
            - type: memory

Torpedo générera le code Go pour les entités User et Trip ainsi que ses opérations CRUD correspondantes, y compris les interfaces du référentiel et tout code de gestion de base de données nécessaire.

4. Créer des cas d'utilisation

Une fois vos entités en place, il est temps de définir comment elles vont interagir avec les workflows de l'application à l'aide de cas d'usage. Les cas d'utilisation encapsulent les règles et processus métier qui agissent sur vos entités.

Créez un fichier YAML sous le répertoire .torpedo/use_cases pour définir votre cas d'utilisation. Voici un exemple de cas d'utilisation simple pour réserver un vol :

.torpedo/use_cases/booking_fly.yaml

mkdir booking-fly && cd booking-fly

Cette définition indique à Torpedo de créer le code squelette pour mettre en place votre logique personnalisée pour le traitement d'une réservation de vol en fonction d'un voyage et d'un utilisateur.

Torpedo élaborera le cas d'utilisation complet, y compris les interactions avec vos entités.

Après avoir terminé l'étape suivante (#5), veuillez lire le guide de démarrage rapide pour savoir comment coder votre logique dans le cas d'utilisation du squelette généré dans Cas d'utilisation

5. Câblage du tout ensemble

Une fois que vous avez défini vos entités et vos cas d'utilisation, Torpedo garantit que le câblage entre ces composants suit les principes de l'architecture hexagonale. Les cas d'utilisation interagiront avec les entités via les interfaces de service, tandis que vos adaptateurs (tels que des bases de données ou des API) géreront la persistance et la communication externe.

Il est maintenant temps d'écrire les spécifications de votre application pour tout rassembler !. La définition de l'application est le fichier le plus important car ici est décrite votre application. L'exemple suivant montre comment définir l'application Booking Fly :

.torpedo/app.yaml

torpedo init

Pour générer le code de l'application (entités, cas d'utilisation et plus), exécutez la commande :

version: torpedo.darksub.io/v1.0
kind: entity
spec:
    name: "user"
    plural: "users" 
    description: "The frequent flyer user"
    doc: |
        The user entity represents a system user but also a frequent flyer. 
        This entity is only for the example purpose.
    schema:
        reserved:
            id:
                type: ulid 

        fields:
          - name: name
            type: string
            description: "The user full name"

          - name: email
            type: string
            description: "The user contact email"

          - name: password # it is not recommended to save passwords, this is an example only
            type: string
            encrypted: true
            description: "The user system password"

          - name: plan
            type: string
            description: "The user membership plan"
            validate:
              list:
                values:
                  - GOLD
                  - SILVER
                  - BRONZE

          - name: miles
            type: integer
            description: "The accumulated flyer miles"

    relationships:
        - name: trips
          type: $rel
          ref: ".torpedo/entities/trip.yaml"
          cardinality: hasMany
          load:
            type: nested
            metadata:
                maxItems: 100

    adapters:
        input:
            - type: http

        output:
          - type: memory 

Cette commande générera un échafaudage de projet, configurant la structure de répertoires basée sur l'architecture hexagonale. Le projet comprendra des dossiers principaux pour les entités, les cas d'utilisation et les adaptateurs. Cela garantit que votre logique métier et votre infrastructure restent découplées dès le départ.

Vous pouvez désormais étendre votre projet en ajoutant plus d'entités, de cas d'utilisation et même des adaptateurs personnalisés. La structure de Torpedo vous permet de garder votre code propre et modulaire, ce qui facilite la mise à l'échelle de votre application à mesure qu'elle se développe.

Découvrez également comment coder votre propre logique avec le code de cas d'utilisation généré.

6. Exécuter votre application

Après avoir configuré les entités et les cas d'utilisation, vous êtes prêt à exécuter votre application. Torpedo comprend un serveur léger, basé sur le projet Gin Gonic, que vous pouvez exécuter à des fins de test et de développement. Utilisez simplement :

N'oubliez pas d'exécuter go mod spice avant de mettre à jour les dépendances !

version: torpedo.darksub.io/v1.0
kind: entity
spec:
    name: trip
    plural: trips
    description: "The user fly trip reservations"
    doc: |
        The trip entity handles all data related with the frequent flyer trip
    schema:
        reserved:
            id:
                type: ulid

        fields:
          - name: departure
            type: string
            description: "The trip departure airport"

          - name: arrival
            type: string
            description: "The trip arrival airport"

          - name: miles
            type: integer
            description: "The trip miles"

          - name: from
            type: date
            description: "The trip from date"

          - name: to
            type: date
            description: "The trip to date"

    adapters:
        input:
            - type: http

        output:
            - type: memory

Vous pouvez désormais interagir avec l'API de votre application, en exécutant les opérations CRUD et les cas d'utilisation que vous avez définis.

7. Quelle est la prochaine étape ?

Torpedo facilite la génération de code Go propre et structuré avec l'architecture hexagonale. Mais ce n'est que le début ! Vous pouvez continuer à explorer les fonctionnalités de Torpedo en ajoutant des flux de travail plus complexes, en intégrant des services externes et en personnalisant le framework en fonction de vos besoins.

Restez à l'écoute pour découvrir des fonctionnalités plus avancées bientôt disponibles sur Torpedo et n'hésitez pas à partager vos commentaires pendant que vous explorez ce qui est possible !


Conclusion

Créer votre premier projet avec Torpedo est simple et rapide. En tirant parti de la puissance des schémas d'entité et des définitions de cas d'utilisation dans YAML, vous pouvez rapidement créer une application Golang robuste tout en conservant des principes architecturaux propres. Il est maintenant temps de plonger et de commencer à construire ! Faites-nous savoir ce que vous pensez et comment Torpedo peut vous aider dans vos futurs projets.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn