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