[di] use of fx.In params struct

This commit is contained in:
Aleksandr Soloshenko 2024-02-23 00:03:11 +07:00
parent 98f3f719e0
commit 776cf08866
2 changed files with 29 additions and 11 deletions

View File

@ -14,6 +14,7 @@ import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/limiter"
"github.com/jaevor/go-nanoid"
"go.uber.org/fx"
"go.uber.org/zap"
)
@ -182,16 +183,23 @@ func (h *mobileHandler) Register(router fiber.Router) {
router.Patch("/message", h.authorize(h.patchMessage))
}
func newMobileHandler(logger *zap.Logger, validator *validator.Validate, authSvc *services.AuthService, messagesSvc *services.MessagesService) *mobileHandler {
type MobileHandlerParams struct {
fx.In
Logger *zap.Logger
Validator *validator.Validate
AuthSvc *services.AuthService
MessagesSvc *services.MessagesService
}
func newMobileHandler(params MobileHandlerParams) *mobileHandler {
idGen, _ := nanoid.Standard(21)
return &mobileHandler{
Handler: Handler{
Logger: logger,
Validator: validator,
},
authSvc: authSvc,
messagesSvc: messagesSvc,
Handler: Handler{Logger: params.Logger, Validator: params.Validator},
authSvc: params.AuthSvc,
messagesSvc: params.MessagesSvc,
idGen: idGen,
}
}

View File

@ -7,6 +7,7 @@ import (
"github.com/capcom6/sms-gateway/internal/sms-gateway/repositories"
"github.com/capcom6/sms-gateway/pkg/crypto"
"github.com/jaevor/go-nanoid"
"go.uber.org/fx"
"go.uber.org/zap"
)
@ -74,13 +75,22 @@ func (s *AuthService) AuthorizeUser(username, password string) (models.User, err
return user, crypto.CompareBCryptHash(user.PasswordHash, password)
}
func NewAuthService(users *repositories.UsersRepository, devices *repositories.DevicesRepository, logger *zap.Logger) *AuthService {
type AuthServiceParams struct {
fx.In
Users *repositories.UsersRepository
Devices *repositories.DevicesRepository
Logger *zap.Logger
}
func NewAuthService(params AuthServiceParams) *AuthService {
idgen, _ := nanoid.Standard(21)
return &AuthService{
users: users,
devices: devices,
logger: logger.Named("AuthService"),
users: params.Users,
devices: params.Devices,
logger: params.Logger.Named("AuthService"),
idgen: idgen,
}
}