38 lines
1.3 KiB
Go
38 lines
1.3 KiB
Go
// Package config loads runtime configuration for the analytics worker.
|
|
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/caarlos0/env/v11"
|
|
)
|
|
|
|
type Config struct {
|
|
HTTPAddr string `env:"WORKER_HTTP_ADDR" envDefault:":4001"`
|
|
LogLevel string `env:"WORKER_LOG_LEVEL" envDefault:"info"`
|
|
ShutdownTimeout time.Duration `env:"WORKER_SHUTDOWN_TIMEOUT_SECONDS" envDefault:"60s"`
|
|
|
|
// river queue tuning
|
|
MaxWorkers int `env:"WORKER_MAX_WORKERS" envDefault:"50"`
|
|
ComputeTraitsEvery time.Duration `env:"WORKER_COMPUTE_TRAITS_EVERY" envDefault:"1h"`
|
|
RefreshSegmentEvery time.Duration `env:"WORKER_REFRESH_SEGMENT_EVERY" envDefault:"1h"`
|
|
|
|
// Shared infra ----------------------------------------------------------
|
|
PostgresDSN string `env:"POSTGRES_DSN,required"`
|
|
RedisAddr string `env:"REDIS_ADDR" envDefault:"localhost:6379"`
|
|
|
|
ClickHouseAddr string `env:"CLICKHOUSE_ADDR" envDefault:"localhost:9000"`
|
|
ClickHouseDB string `env:"CLICKHOUSE_DB" envDefault:"cdp"`
|
|
ClickHouseUser string `env:"CLICKHOUSE_USER" envDefault:"default"`
|
|
ClickHousePassword string `env:"CLICKHOUSE_PASSWORD"`
|
|
}
|
|
|
|
func Load() (*Config, error) {
|
|
cfg := &Config{}
|
|
if err := env.Parse(cfg); err != nil {
|
|
return nil, fmt.Errorf("config load: %w", err)
|
|
}
|
|
return cfg, nil
|
|
}
|