You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.0 KiB
Go
70 lines
2.0 KiB
Go
package config
|
|
|
|
import (
|
|
"time"
|
|
|
|
sharedpostgres "knowfoolery/backend/shared/infra/database/postgres"
|
|
"knowfoolery/backend/shared/infra/observability/logging"
|
|
"knowfoolery/backend/shared/infra/observability/metrics"
|
|
"knowfoolery/backend/shared/infra/observability/tracing"
|
|
"knowfoolery/backend/shared/infra/utils/envutil"
|
|
)
|
|
|
|
// Config holds runtime configuration for admin-service.
|
|
type Config struct {
|
|
AppName string
|
|
Port int
|
|
|
|
Postgres sharedpostgres.Config
|
|
Tracing tracing.Config
|
|
Metrics metrics.Config
|
|
Logging logging.Config
|
|
|
|
ZitadelBaseURL string
|
|
ZitadelIssuer string
|
|
ZitadelAudience string
|
|
ZitadelClientID string
|
|
ZitadelSecret string
|
|
|
|
AuditRetentionDays int
|
|
HTTPTimeout time.Duration
|
|
}
|
|
|
|
// FromEnv builds config from env vars.
|
|
func FromEnv() Config {
|
|
env := envutil.String("ENVIRONMENT", "development")
|
|
serviceName := "admin-service"
|
|
|
|
logCfg := logging.DefaultConfig()
|
|
logCfg.ServiceName = serviceName
|
|
logCfg.Environment = env
|
|
logCfg.Level = envutil.String("LOG_LEVEL", logCfg.Level)
|
|
|
|
traceCfg := tracing.ConfigFromEnv()
|
|
if traceCfg.ServiceName == "knowfoolery" {
|
|
traceCfg.ServiceName = serviceName
|
|
}
|
|
traceCfg.Environment = env
|
|
|
|
metricsCfg := metrics.ConfigFromEnv()
|
|
if metricsCfg.ServiceName == "knowfoolery" {
|
|
metricsCfg.ServiceName = serviceName
|
|
}
|
|
|
|
return Config{
|
|
AppName: "Know Foolery - Admin Service",
|
|
Port: envutil.Int("ADMIN_SERVICE_PORT", 8085),
|
|
Postgres: sharedpostgres.ConfigFromEnv(),
|
|
Tracing: traceCfg,
|
|
Metrics: metricsCfg,
|
|
Logging: logCfg,
|
|
ZitadelBaseURL: envutil.String("ZITADEL_URL", ""),
|
|
ZitadelIssuer: envutil.String("ZITADEL_ISSUER", ""),
|
|
ZitadelAudience: envutil.String("ZITADEL_AUDIENCE", ""),
|
|
ZitadelClientID: envutil.String("ZITADEL_CLIENT_ID", ""),
|
|
ZitadelSecret: envutil.String("ZITADEL_CLIENT_SECRET", ""),
|
|
AuditRetentionDays: envutil.Int("ADMIN_AUDIT_RETENTION_DAYS", 90),
|
|
HTTPTimeout: envutil.Duration("UPSTREAM_HTTP_TIMEOUT", 3*time.Second),
|
|
}
|
|
}
|