50 lines
1.6 KiB
Go
50 lines
1.6 KiB
Go
// Package wire chứa các định nghĩa cho dependency injection sử dụng Google Wire
|
|
package wire
|
|
|
|
import (
|
|
"github.com/dungnt11/todoms_golang/global"
|
|
"github.com/dungnt11/todoms_golang/internal/controllers"
|
|
"github.com/dungnt11/todoms_golang/internal/repositories"
|
|
"github.com/dungnt11/todoms_golang/internal/services"
|
|
"github.com/google/wire"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// RepositorySet là tập hợp các provider cho repositories
|
|
var RepositorySet = wire.NewSet(
|
|
repositories.NewUserRepository,
|
|
wire.Bind(new(repositories.IUserRepository), new(*repositories.UserRepository)),
|
|
repositories.NewProductRepository,
|
|
wire.Bind(new(repositories.IProductRepository), new(*repositories.ProductRepository)),
|
|
)
|
|
|
|
// ServiceSet là tập hợp các provider cho services
|
|
var ServiceSet = wire.NewSet(
|
|
services.NewUserService,
|
|
wire.Bind(new(services.IUserService), new(*services.UserService)),
|
|
services.NewProductService,
|
|
wire.Bind(new(services.IProductService), new(*services.ProductService)),
|
|
)
|
|
|
|
// ControllerSet là tập hợp các provider cho controllers
|
|
var ControllerSet = wire.NewSet(
|
|
controllers.NewUserController,
|
|
wire.Bind(new(controllers.IUserController), new(*controllers.UserController)),
|
|
controllers.NewProductController,
|
|
wire.Bind(new(controllers.IProductController), new(*controllers.ProductController)),
|
|
controllers.NewControllers,
|
|
)
|
|
|
|
// ProvideDB cung cấp instance của *gorm.DB
|
|
func ProvideDB() *gorm.DB {
|
|
return global.Mdb
|
|
}
|
|
|
|
// AppSet là tập hợp tất cả các provider
|
|
var AppSet = wire.NewSet(
|
|
RepositorySet,
|
|
ServiceSet,
|
|
ControllerSet,
|
|
ProvideDB,
|
|
)
|