51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
// internal/infrastructure/container/container.go
|
|
|
|
package container
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"service/internal/infrastructure/cache"
|
|
"service/internal/infrastructure/config"
|
|
"service/pkg/logger" // Pastikan import ini benar
|
|
)
|
|
|
|
// Container holds all application dependencies
|
|
type Container struct {
|
|
Config *config.Config
|
|
CacheManager *cache.Manager
|
|
}
|
|
|
|
// NewContainer creates a new container with all dependencies
|
|
func NewContainer(cfg *config.Config) (*Container, error) {
|
|
// Create cache factory
|
|
cacheFactory := cache.NewFactory(cfg.Cache)
|
|
|
|
// Create cache manager
|
|
cacheManager, err := cacheFactory.CreateManager()
|
|
if err != nil {
|
|
// PERBAIKAN: Gunakan logger baru yang terstruktur
|
|
logger.Default().Fatal("Failed to create cache manager", logger.ErrorField(err))
|
|
}
|
|
|
|
// PERBAIKAN: Gunakan logger baru yang terstruktur
|
|
logger.Default().Info("Cache manager initialized successfully")
|
|
|
|
return &Container{
|
|
Config: cfg,
|
|
CacheManager: cacheManager,
|
|
}, nil
|
|
}
|
|
|
|
// Close closes all container resources
|
|
func (c *Container) Close() error {
|
|
if c.CacheManager != nil {
|
|
if err := c.CacheManager.Close(); err != nil {
|
|
// PERBAIKAN: Gunakan logger baru, log error sebelum mengembalikan
|
|
logger.Default().Error("Failed to close cache manager", logger.ErrorField(err))
|
|
return fmt.Errorf("failed to close cache manager: %w", err)
|
|
}
|
|
}
|
|
return nil
|
|
}
|