Files
test/config.go

43 lines
991 B
Go

package swirl2
import (
"azugo.io/azugo/config"
"azugo.io/core/validation"
"azugo.io/opentelemetry"
"github.com/spf13/viper"
)
// Configuration represents the configuration for the application.
type Configuration struct {
*config.Configuration `mapstructure:",squash"`
Telemetry *opentelemetry.Configuration `mapstructure:"telemetry"`
}
// NewConfiguration returns a new configuration.
func NewConfiguration() *Configuration {
return &Configuration{
Configuration: config.New(),
}
}
// ServerCore returns the core configuration.
func (c *Configuration) ServerCore() *config.Configuration {
return c.Configuration
}
func (c *Configuration) Bind(_ string, v *viper.Viper) {
c.Configuration.Bind("", v)
c.Telemetry = config.Bind(c.Telemetry, "telemetry", v)
}
// Validate application configuration.
func (c *Configuration) Validate(validate *validation.Validate) error {
if err := c.Telemetry.Validate(validate); err != nil {
return err
}
return validate.Struct(c)
}