43 lines
991 B
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)
|
|
}
|