// 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, )