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{}
}

→ Ссылка