gqlgen – Models vs. Autobind

La configuración en gqlgen.yml para models y autobind sirve para mapear tipos de GraphQL a estructuras de Go durante la generación de código con gqlgen. A continuación, se explican las diferencias clave entre estas dos configuraciones:

Configuración de models:

  • Propósito: La sección models se utiliza para mapear explícitamente tipos específicos de GraphQL a estructuras Go existentes o para influir en cómo gqlgen genera nuevas estructuras.
  • Control detallado: Permite especificar de forma detallada qué estructura Go debe usarse para cada tipo de GraphQL definido en tu esquema. Esto es útil para reutilizar estructuras existentes o para asegurarse de que gqlgen genere el código de la manera deseada.
  • Ejemplo de uso: Cuando tienes una estructura Go existente que quieres que gqlgen utilice para un tipo de GraphQL, puedes indicarlo directamente en la sección models, proporcionando la ruta al archivo Go donde se define la estructura.
models:
  BusinessDb:
    model: 
      - ../../../../auth/delivery/graphql/model.BusinessDb
  • En este caso, estás instruyendo a gqlgen para que use la estructura BusinessDb definida en ../../../../auth/delivery/graphql/model.BusinessDb como implementación del tipo BusinessDb en tu esquema GraphQL.

Configuración de autobind:

  • Propósito: autobind automatiza el proceso de mapeo entre tipos de GraphQL y estructuras Go. gqlgen buscará en los paquetes especificados estructuras Go cuyos nombres coincidan con los nombres de los tipos en el esquema GraphQL.
  • Conveniencia y automatización: Ofrece una forma conveniente de asociar automáticamente tipos de GraphQL con estructuras Go sin tener que especificar manualmente cada mapeo en la sección models. Es útil cuando tienes muchas estructuras que deseas que coincidan directamente con los tipos de tu esquema.
  • Ejemplo de uso: Al especificar uno o más paquetes en autobind, gqlgen explorará estos paquetes en busca de estructuras que coincidan con los nombres de los tipos de GraphQL.
autobind:
  - "gitlab.com/tidyrocks/software/backend/auth/delivery/graphql/model"
  • Aquí, gqlgen buscará en el paquete gitlab.com/tidyrocks/software/backend/auth/delivery/graphql/model estructuras que coincidan por nombre con los tipos definidos en tu esquema GraphQL y los usará automáticamente.

Diferencias clave:

  • Control específico vs. automatización: Mientras que models ofrece un control detallado y específico sobre el mapeo de tipos, autobind proporciona una manera de automatizar este mapeo basándose en la coincidencia de nombres, lo cual puede ahorrar tiempo pero ofrece menos precisión.
  • Especificar vs. Descubrir: Con models, especificas explícitamente el mapeo; con autobind, permites que gqlgen descubra y aplique el mapeo automáticamente.

Estas herramientas ofrecen flexibilidad para gestionar la generación de código de acuerdo con las necesidades específicas de tu proyecto, permitiéndote elegir entre el control detallado o la conveniencia de la automatización.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *