first commit
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
// 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
|
||||
}
|
||||
Reference in New Issue
Block a user