CasosDeUso e Inyección de dependencias
EinarCLI te permite generar casos de uso empresariales personalizados generando automáticamente los archivos e importaciones necesarios para gestionar tu lógica de negocio. Utiliza OpenTelemetry para asegurar una observabilidad completa, propagando context.Context como el primer argumento para unificar trazas, métricas y logs. Además, einar incluye un mecanismo de inyección de dependencias incorporado para facilitar la integración de varios componentes.
👨💻 Generar un Nuevo Caso de Uso
Dentro de tu directorio de proyecto, ejecuta el siguiente comando para crear un nuevo caso de uso personalizado:
einar generate usecase create-customerAquí tienes un ejemplo de cómo se verá el código generado:
type CreateCustomer func(ctx context.Context, domain interface{}) (interface{}, error)
func init() { ioc.Registry(NewCreateCustomer)}func NewCreateCustomer() CreateCustomer { return func(ctx context.Context, input interface{}) (interface{}, error) { return input, nil }}El archivo create_customer.go se creará en la siguiente estructura de directorios:
/app /usecase - create_customer.go🪡 Inyección de Dependencias con Einar IOC
Aquí tienes cómo integrar el tipo usecase.CreateCustomer como un argumento del constructor y registrar su dependencia asociada con ioc.Registry:
func init() { ioc.Registry(postCustomer, serverwrapper.NewEchoWrapper, usecase.NewCreateCustomer)}func postCustomer( e serverwrapper.EchoWrapper, createCustomer usecase.CreateCustomer) { e.POST("/customer", func(c echo.Context) error { result, _ := createCustomer(c.Request().Context(), "createCustomer dependency injection works") return c.JSON(http.StatusOK, result) })}🌐 Verifica la Respuesta del Controlador
Ejecuta la siguiente solicitud POST para obtener el resultado de createCustomer desde tu controlador:
curl -X POST http://localhost:8080/customerInvoke-WebRequest -Uri http://localhost:8080/customer -Method POSTResponseBody:
createCustomer dependency injection works