Files
cybertron/internal/dependencies/dependencies.go

64 lines
1.2 KiB
Go
Raw Normal View History

2024-07-23 14:16:26 +05:30
package dependencies
import (
2024-07-23 17:55:23 +05:30
"cybertron/internal/database"
"cybertron/internal/transport/handler"
"cybertron/pkg/db"
2024-07-23 14:16:26 +05:30
"cybertron/pkg/log"
"go.uber.org/zap"
"gorm.io/gorm"
)
type Dependencies struct {
2024-07-23 17:55:23 +05:30
Service *Service
DBClient *gorm.DB
Logger *zap.Logger
Handler *Handler
Repositories *Repositories
2024-07-23 14:16:26 +05:30
}
type Service struct {
// Add your service here
}
2024-07-23 17:55:23 +05:30
type Handler struct {
ProductHandler *handler.ProductHandler
}
type Repositories struct {
ProductRepository *gorm.DB
}
2024-07-23 14:16:26 +05:30
func InitDependencies() *Dependencies {
services := initServices()
2024-07-23 17:55:23 +05:30
dbClient := db.NewDBClient()
handlers := initHandlers(dbClient)
repositories := initRepositories(dbClient)
2024-07-23 14:16:26 +05:30
return &Dependencies{
2024-07-23 17:55:23 +05:30
Service: services,
DBClient: dbClient,
Logger: log.Log.GetLog(),
Handler: handlers,
Repositories: repositories,
2024-07-23 14:16:26 +05:30
}
}
func initServices() *Service {
return &Service{
// Add your service here
}
}
2024-07-23 17:55:23 +05:30
func initRepositories(dbClient *gorm.DB) *Repositories {
return &Repositories{
ProductRepository: database.InitProductRepository(dbClient),
}
}
func initHandlers(dbClient *gorm.DB) *Handler {
productHandler := handler.NewProductHandler(dbClient)
return &Handler{
ProductHandler: productHandler,
}
}