koh 86a60a7861
Cập nhật cấu hình môi trường production và development
- Thêm file .env.prod với cấu hình chi tiết cho môi trường production
- Cập nhật docker-compose.dev.yml và docker-compose.prod.yml
- Tạo Dockerfile.prod với cấu hình chi tiết cho production
- Bổ sung cấu hình nginx, prometheus, grafana
- Thêm cấu hình backup và monitoring
- Cập nhật README với hướng dẫn chi tiết
2025-03-03 16:31:52 +07:00

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/senflow_app/global"
"github.com/dungnt11/senflow_app/internal/controllers"
"github.com/dungnt11/senflow_app/internal/repositories"
"github.com/dungnt11/senflow_app/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,
)
// AppSet là tập hợp tất cả các provider
var AppSet = wire.NewSet(
RepositorySet,
ServiceSet,
ControllerSet,
ProvideDB,
)
// ProvideDB cung cấp instance của *gorm.DB
func ProvideDB() *gorm.DB {
return global.Mdb
}