| package common | |
| import ( | |
| "fmt" | |
| "log/slog" | |
| "github.com/google/wire" | |
| "github.com/openmeterio/openmeter/app/config" | |
| "github.com/openmeterio/openmeter/openmeter/progressmanager" | |
| "github.com/openmeterio/openmeter/openmeter/progressmanager/adapter" | |
| ) | |
| var ProgressManager = wire.NewSet( | |
| NewProgressManager, | |
| ) | |
| // NewProgressManager creates a new progress manager service. | |
| func NewProgressManager(logger *slog.Logger, conf config.ProgressManagerConfiguration) (progressmanager.Service, error) { | |
| if !conf.Enabled { | |
| return adapter.NewNoop(), nil | |
| } | |
| redisClient, err := conf.Redis.NewClient() | |
| if err != nil { | |
| return nil, fmt.Errorf("progress manager redis: %w", err) | |
| } | |
| pm, err := adapter.New(adapter.Config{ | |
| Expiration: conf.Expiration, | |
| KeyPrefix: conf.KeyPrefix, | |
| Logger: logger, | |
| Redis: redisClient, | |
| }) | |
| if err != nil { | |
| return nil, fmt.Errorf("progress manager adapter: %w", err) | |
| } | |
| return pm, nil | |
| } | |