// 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 }