File size: 933 Bytes
1f10f31
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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
}