| package config | |
| import ( | |
| "errors" | |
| "time" | |
| "github.com/spf13/viper" | |
| "github.com/openmeterio/openmeter/pkg/errorsx" | |
| "github.com/openmeterio/openmeter/pkg/redis" | |
| ) | |
| // ProgressManagerConfiguration stores the configuration parameters for the progress manager | |
| type ProgressManagerConfiguration struct { | |
| Enabled bool | |
| KeyPrefix string | |
| Expiration time.Duration | |
| Redis redis.Config | |
| } | |
| // Validate checks if the configuration is valid | |
| func (c ProgressManagerConfiguration) Validate() error { | |
| var errs []error | |
| if !c.Enabled { | |
| return nil | |
| } | |
| if c.Expiration <= 0 { | |
| errs = append(errs, errors.New("expiration must be greater than 0")) | |
| } | |
| if err := c.Redis.Validate(); err != nil { | |
| errs = append(errs, errorsx.WithPrefix(err, "redis")) | |
| } | |
| return errors.Join(errs...) | |
| } | |
| // ConfigureProgressManager sets the default values for the progress manager configuration | |
| func ConfigureProgressManager(v *viper.Viper) { | |
| v.SetDefault("progressManager.expiration", "5m") | |
| v.SetDefault("progressManager.keyPrefix", "") | |
| redis.Configure(v, "progressManager.redis") | |
| } | |