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
modelsse utiliza para mapear explícitamente tipos específicos de GraphQL a estructuras Go existentes o para influir en cómogqlgengenera 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
gqlgengenere el código de la manera deseada. - Ejemplo de uso: Cuando tienes una estructura Go existente que quieres que
gqlgenutilice para un tipo de GraphQL, puedes indicarlo directamente en la secciónmodels, 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
gqlgenpara que use la estructuraBusinessDbdefinida en../../../../auth/delivery/graphql/model.BusinessDbcomo implementación del tipoBusinessDben tu esquema GraphQL.
Configuración de autobind:
- Propósito:
autobindautomatiza el proceso de mapeo entre tipos de GraphQL y estructuras Go.gqlgenbuscará 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,gqlgenexplorará 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í,
gqlgenbuscará en el paquetegitlab.com/tidyrocks/software/backend/auth/delivery/graphql/modelestructuras 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
modelsofrece un control detallado y específico sobre el mapeo de tipos,autobindproporciona 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; conautobind, permites quegqlgendescubra 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.