golang: google wire: no provider found for error, output of injector. Почему?
Помогите пожалуйста разобраться с di google wire
wire.go
//go:build wireinject
// +build wireinject
package di
//go:generate wire ./...
import (
"github.com/3110Y/profile/internal/application/service"
"github.com/3110Y/profile/internal/infrastructure/repository"
"github.com/3110Y/profile/internal/presentation/rpc"
"github.com/google/wire"
)
func InitializeEvent() error {
wire.Build(
wire.Bind(new(service.ProfileRepositoryInterface), new(*repository.ProfileRepository)),
wire.Bind(new(service.PasswordServiceInterface), new(*service.PasswordService)),
wire.Bind(new(rpc.ServiceProfileInterface), new(*service.ProfileService)),
NewPasswordService,
NewProfileService,
NewProfileValidator,
NewProfileRepository,
NewProfileRPC,
NewConnect,
)
return nil
}
bootstrap.go
package di
import (
"github.com/3110Y/profile/internal/application/service"
"github.com/3110Y/profile/internal/application/validator"
"github.com/3110Y/profile/internal/infrastructure/database"
"github.com/3110Y/profile/internal/infrastructure/repository"
"github.com/3110Y/profile/internal/presentation/rpc"
"github.com/jmoiron/sqlx"
)
func NewPasswordService() *service.PasswordService {
return service.NewPasswordService()
}
func NewProfileService(
repositoryProfile service.ProfileRepositoryInterface,
servicePassword service.PasswordServiceInterface,
) *service.ProfileService {
return service.NewProfileService(repositoryProfile, servicePassword)
}
func NewProfileValidator() *validator.ProfileValidator {
return validator.NewProfileValidator()
}
func NewProfileRepository(db *sqlx.DB) *repository.ProfileRepository {
return repository.NewProfileRepository(db)
}
func NewProfileRPC(serviceProfile rpc.ServiceProfileInterface) *rpc.ProfileRPC {
return rpc.NewProfileRPC(serviceProfile)
}
func NewConnect() (*sqlx.DB, error) {
connect, err := database.NewConnect()
return connect, err
}
запускаю
wire ./...
выдает
wire: C:\Users\G\GolandProjects\cc\cc-profile\internal\infrastructure\di\wire.go:15:1: inject InitializeEvent: no provider found for error, output of injector
wire: github.com/3110Y/profile/internal/infrastructure/di: generate failed
wire: at least one generate failure
не могу понять что я делаю не так.
Ответы (1 шт):
Автор решения: Роман
→ Ссылка
package di
import (
"github.com/3110Y/profile/internal/application/service"
"github.com/3110Y/profile/internal/application/validator"
"github.com/3110Y/profile/internal/infrastructure/database"
"github.com/3110Y/profile/internal/infrastructure/repository"
"github.com/3110Y/profile/internal/presentation/rpc"
"github.com/jmoiron/sqlx"
)
func NewPasswordService() *service.PasswordService {
return service.NewPasswordService()
}
type DI struct {
ProfileService *service.ProfileService
ProfileValidator *validator.ProfileValidator
ProfileRepository *repository.ProfileRepository
ProfileRPC *rpc.ProfileRPC
DB *sqlx.DB
}
func NewDI(profileService *service.ProfileService, profileValidator *validator.ProfileValidator, profileRepository *repository.ProfileRepository, profileRPC *rpc.ProfileRPC, DB *sqlx.DB) *DI {
return &DI{ProfileService: profileService, ProfileValidator: profileValidator, ProfileRepository: profileRepository, ProfileRPC: profileRPC, DB: DB}
}
func NewProfileService(
repositoryProfile service.ProfileRepositoryInterface,
servicePassword service.PasswordServiceInterface,
) *service.ProfileService {
return service.NewProfileService(repositoryProfile, servicePassword)
}
func NewProfileValidator() *validator.ProfileValidator {
return validator.NewProfileValidator()
}
func NewProfileRepository(db *sqlx.DB) *repository.ProfileRepository {
return repository.NewProfileRepository(db)
}
func NewProfileRPC(serviceProfile rpc.ServiceProfileInterface) *rpc.ProfileRPC {
return rpc.NewProfileRPC(serviceProfile)
}
func NewConnect() *sqlx.DB {
connect, _ := database.NewConnect()
return connect
}
//go:build wireinject
// +build wireinject
package di
//go:generate wire ./...
import (
"github.com/3110Y/profile/internal/application/service"
"github.com/3110Y/profile/internal/infrastructure/repository"
"github.com/3110Y/profile/internal/presentation/rpc"
"github.com/google/wire"
)
func Init() *DI {
wire.Build(
NewDI,
wire.Bind(new(service.ProfileRepositoryInterface), new(*repository.ProfileRepository)),
wire.Bind(new(service.PasswordServiceInterface), new(*service.PasswordService)),
wire.Bind(new(rpc.ServiceProfileInterface), new(*service.ProfileService)),
NewPasswordService,
NewProfileService,
NewProfileValidator,
NewProfileRepository,
NewProfileRPC,
NewConnect,
)
return &DI{}
}